aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-02-09 18:31:26 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-02-09 18:31:26 +0000
commit1cec7355e741f6374ffdd71c6a6c70b1102d5cb5 (patch)
treee59f7537b308b03431abd5ad6f0605751e6085ce /src/plugins
parent884ccfa580ca13ace41bc5bd64d89caa322a099b (diff)
downloadqmmp-1cec7355e741f6374ffdd71c6a6c70b1102d5cb5.tar.gz
qmmp-1cec7355e741f6374ffdd71c6a6c70b1102d5cb5.tar.bz2
qmmp-1cec7355e741f6374ffdd71c6a6c70b1102d5cb5.zip
flac: added cue editor
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9710 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/Input/flac/flacmetadatamodel.cpp31
-rw-r--r--src/plugins/Input/flac/flacmetadatamodel.h3
2 files changed, 32 insertions, 2 deletions
diff --git a/src/plugins/Input/flac/flacmetadatamodel.cpp b/src/plugins/Input/flac/flacmetadatamodel.cpp
index c20e13d0c..dcabb2e19 100644
--- a/src/plugins/Input/flac/flacmetadatamodel.cpp
+++ b/src/plugins/Input/flac/flacmetadatamodel.cpp
@@ -29,7 +29,7 @@
#include "flacmetadatamodel.h"
FLACMetaDataModel::FLACMetaDataModel(const QString &path, bool readOnly) :
- MetaDataModel(true, MetaDataModel::IsCoverEditable),
+ MetaDataModel(readOnly, MetaDataModel::IsCoverEditable),
m_path(path)
{
if(path.startsWith("flac://"))
@@ -44,6 +44,7 @@ FLACMetaDataModel::FLACMetaDataModel(const QString &path, bool readOnly) :
TagLib::FLAC::File *f = new TagLib::FLAC::File(m_stream, TagLib::ID3v2::FrameFactory::instance());
m_tag = f->xiphComment();
m_file = f;
+ setDialogHints(dialogHints() | MetaDataModel::IsCueEditable);
}
else if(m_path.endsWith(".oga", Qt::CaseInsensitive))
{
@@ -53,9 +54,11 @@ FLACMetaDataModel::FLACMetaDataModel(const QString &path, bool readOnly) :
m_file = f;
}
+ if(m_file)
+ setReadOnly(m_file->readOnly());
+
if(m_file && m_file->isValid() && !path.startsWith("flac://"))
{
- setReadOnly(readOnly);
m_tags << new VorbisCommentModel(m_tag, m_file);
}
}
@@ -141,6 +144,30 @@ void FLACMetaDataModel::removeCover()
}
}
+QString FLACMetaDataModel::cue() const
+{
+ if (m_tag->fieldListMap().contains("CUESHEET"))
+ {
+ QByteArray data(m_tag->fieldListMap()["CUESHEET"].toString().toCString(true));
+ return QString::fromUtf8(data);
+ }
+
+ return QString();
+}
+
+void FLACMetaDataModel::setCue(const QString &content)
+{
+ m_tag->removeFields("CUESHEET");
+ m_tag->addField("CUESHEET", QStringToTString(content), true);
+ m_file->save();
+}
+
+void FLACMetaDataModel::removeCue()
+{
+ m_tag->removeFields("CUESHEET");
+ m_file->save();
+}
+
VorbisCommentModel::VorbisCommentModel(TagLib::Ogg::XiphComment *tag, TagLib::File *file) : TagModel(TagModel::Save)
{
m_file = file;
diff --git a/src/plugins/Input/flac/flacmetadatamodel.h b/src/plugins/Input/flac/flacmetadatamodel.h
index 6ed1a588d..22514fbec 100644
--- a/src/plugins/Input/flac/flacmetadatamodel.h
+++ b/src/plugins/Input/flac/flacmetadatamodel.h
@@ -37,6 +37,9 @@ public:
QString coverPath() const override;
void setCover(const QPixmap &pix) override;
void removeCover() override;
+ QString cue() const override;
+ void setCue(const QString &content) override;
+ void removeCue() override;
private:
QString m_path;