diff options
Diffstat (limited to 'src/plugins/Input/opus')
| -rw-r--r-- | src/plugins/Input/opus/opusmetadatamodel.cpp | 22 | ||||
| -rw-r--r-- | src/plugins/Input/opus/opusmetadatamodel.h | 6 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/plugins/Input/opus/opusmetadatamodel.cpp b/src/plugins/Input/opus/opusmetadatamodel.cpp index cc6bd4dfd..56edfb9da 100644 --- a/src/plugins/Input/opus/opusmetadatamodel.cpp +++ b/src/plugins/Input/opus/opusmetadatamodel.cpp @@ -29,7 +29,11 @@ #include "opusmetadatamodel.h" OpusMetaDataModel::OpusMetaDataModel(const QString &path, bool readOnly) +#ifdef IS_COVER_EDITABLE : MetaDataModel(readOnly, MetaDataModel::IS_COVER_EDITABLE) +#else + : MetaDataModel(readOnly) +#endif { m_path = path; m_stream = new TagLib::FileStream(QStringToFileName(path), readOnly); @@ -71,6 +75,7 @@ QPixmap OpusMetaDataModel::cover() const if(!tag || tag->isEmpty()) return QPixmap(); +#ifdef IS_COVER_EDITABLE TagLib::List<TagLib::FLAC::Picture *> list = tag->pictureList(); for(uint i = 0; i < list.size(); ++i) { @@ -81,9 +86,25 @@ QPixmap OpusMetaDataModel::cover() const return cover; } } +#else + TagLib::StringList list = tag->fieldListMap()["METADATA_BLOCK_PICTURE"]; + if(list.isEmpty()) + return QPixmap(); + for(uint i = 0; i < list.size(); ++i) + { + TagLib::FLAC::Picture pict; + TagLib::String value = list[i]; + QByteArray block = QByteArray::fromBase64(TStringToQString(value).toLatin1()); + pict.parse(TagLib::ByteVector(block.constData(), block.size())); + QPixmap cover; + cover.loadFromData(QByteArray(pict.data().data(), pict.data().size())); //read binary picture data + return cover; + } +#endif return QPixmap(); } +#ifdef IS_COVER_EDITABLE void OpusMetaDataModel::setCover(const QPixmap &pix) { removeCover(); @@ -125,6 +146,7 @@ void OpusMetaDataModel::removeCover() } } } +#endif VorbisCommentModel::VorbisCommentModel(TagLib::Ogg::Opus::File *file) : TagModel(TagModel::Save) { diff --git a/src/plugins/Input/opus/opusmetadatamodel.h b/src/plugins/Input/opus/opusmetadatamodel.h index ea96abad0..fc0cfa705 100644 --- a/src/plugins/Input/opus/opusmetadatamodel.h +++ b/src/plugins/Input/opus/opusmetadatamodel.h @@ -26,6 +26,10 @@ #include <taglib/tfilestream.h> #include <qmmp/metadatamodel.h> +#if (TAGLIB_MAJOR_VERSION > 1) || ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION >= 11)) +#define IS_COVER_EDITABLE +#endif + class OpusMetaDataModel : public MetaDataModel { Q_DECLARE_TR_FUNCTIONS(OpusMetaDataModel) @@ -35,8 +39,10 @@ public: QList<MetaDataItem> extraProperties() const; QList<TagModel* > tags() const; QPixmap cover() const; +#ifdef IS_COVER_EDITABLE void setCover(const QPixmap &pix); void removeCover(); +#endif private: QString m_path; |
