aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/wavpack/wavpackmetadatamodel.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-02-09 19:41:49 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-02-09 19:41:49 +0000
commit263fd1ab79ca6e2ccb01b5a6e9c49676ac5e1aeb (patch)
tree1f304e64bde50e1a0476aee8e3b9f177a4996681 /src/plugins/Input/wavpack/wavpackmetadatamodel.cpp
parentc49be53818b69df4faf68edbaf4099471b434465 (diff)
downloadqmmp-263fd1ab79ca6e2ccb01b5a6e9c49676ac5e1aeb.tar.gz
qmmp-263fd1ab79ca6e2ccb01b5a6e9c49676ac5e1aeb.tar.bz2
qmmp-263fd1ab79ca6e2ccb01b5a6e9c49676ac5e1aeb.zip
wavpack: added cue editor support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9715 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/wavpack/wavpackmetadatamodel.cpp')
-rw-r--r--src/plugins/Input/wavpack/wavpackmetadatamodel.cpp48
1 files changed, 41 insertions, 7 deletions
diff --git a/src/plugins/Input/wavpack/wavpackmetadatamodel.cpp b/src/plugins/Input/wavpack/wavpackmetadatamodel.cpp
index df3a0e6fb..8d24aa51f 100644
--- a/src/plugins/Input/wavpack/wavpackmetadatamodel.cpp
+++ b/src/plugins/Input/wavpack/wavpackmetadatamodel.cpp
@@ -19,16 +19,19 @@
***************************************************************************/
#include <QMap>
+#include <QFileInfo>
#include <qmmp/metadatamanager.h>
#include "wavpackmetadatamodel.h"
-WavPackMetaDataModel::WavPackMetaDataModel(const QString &path, bool readOnly) : MetaDataModel(readOnly),
+WavPackMetaDataModel::WavPackMetaDataModel(const QString &path, bool readOnly) :
+ MetaDataModel(readOnly, MetaDataModel::IsCueEditable),
m_path(path)
{
if(m_path.contains("://"))
{
m_path.remove("wvpack://");
m_path.remove(QRegularExpression("#\\d+$"));
+ readOnly = readOnly || !QFileInfo(m_path).isWritable();
}
char err[80] = {0};
@@ -36,25 +39,29 @@ WavPackMetaDataModel::WavPackMetaDataModel(const QString &path, bool readOnly) :
if(!readOnly)
flags |= OPEN_EDIT_TAGS;
#if defined(Q_OS_WIN) && defined(OPEN_FILE_UTF8)
- m_ctx = WavpackOpenFileInput (m_path.toUtf8().constData(),
- err, flags | OPEN_FILE_UTF8, 0);
+ m_ctx = WavpackOpenFileInput(m_path.toUtf8().constData(),
+ err, flags | OPEN_FILE_UTF8, 0);
#else
- m_ctx = WavpackOpenFileInput (m_path.toLocal8Bit().constData(), err,
- flags, 0);
+ m_ctx = WavpackOpenFileInput(m_path.toLocal8Bit().constData(), err,
+ flags, 0);
#endif
if (!m_ctx)
{
qWarning("WavPackMetaDataModel: error: %s", err);
+ setReadOnly(true);
return;
}
if(!path.contains("://"))
m_tags << new WavPackFileTagModel(m_ctx);
+
+ setReadOnly(!(flags & OPEN_EDIT_TAGS));
}
WavPackMetaDataModel::~WavPackMetaDataModel()
{
- while(!m_tags.isEmpty())
- delete m_tags.takeFirst();
+ qDeleteAll(m_tags);
+ m_tags.clear();
+
if(m_ctx)
WavpackCloseFile(m_ctx);
}
@@ -81,6 +88,33 @@ QString WavPackMetaDataModel::coverPath() const
return MetaDataManager::instance()->findCoverFile(m_path);
}
+QString WavPackMetaDataModel::cue() const
+{
+ int len = WavpackGetTagItem(m_ctx, "cuesheet", nullptr, 0);
+ if(len > 0)
+ {
+ char value[len + 1];
+ memset(value, 0, len + 1);
+ WavpackGetTagItem(m_ctx, "cuesheet", value, len + 1);
+ return QString::fromUtf8(value);
+ }
+
+ return QString();
+}
+
+void WavPackMetaDataModel::setCue(const QString &content)
+{
+ QByteArray data = content.toUtf8();
+ WavpackAppendTagItem(m_ctx, "cuesheet", data.data(), data.size());
+ WavpackWriteTag(m_ctx);
+}
+
+void WavPackMetaDataModel::removeCue()
+{
+ WavpackDeleteTagItem(m_ctx, "cuesheet");
+ WavpackWriteTag(m_ctx);
+}
+
WavPackFileTagModel::WavPackFileTagModel(WavpackContext *ctx) : TagModel(TagModel::Save),
m_ctx(ctx)
{}