diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-09-24 18:19:12 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-09-24 18:19:12 +0000 |
| commit | 997de852100372a2d1b1f1fb9219f5a70a8d98c0 (patch) | |
| tree | 5e747c6e21c04660529ab1db5166d5851b5a5267 /src/plugins/Input/vorbis/vorbismetadatamodel.cpp | |
| parent | d9b868c9adef69212e0f50c9a0cf1f739ccea506 (diff) | |
| download | qmmp-997de852100372a2d1b1f1fb9219f5a70a8d98c0.tar.gz qmmp-997de852100372a2d1b1f1fb9219f5a70a8d98c0.tar.bz2 qmmp-997de852100372a2d1b1f1fb9219f5a70a8d98c0.zip | |
fixed taglib 1.10 support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8374 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/vorbis/vorbismetadatamodel.cpp')
| -rw-r--r-- | src/plugins/Input/vorbis/vorbismetadatamodel.cpp | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/src/plugins/Input/vorbis/vorbismetadatamodel.cpp b/src/plugins/Input/vorbis/vorbismetadatamodel.cpp index 8c9305beb..79334d157 100644 --- a/src/plugins/Input/vorbis/vorbismetadatamodel.cpp +++ b/src/plugins/Input/vorbis/vorbismetadatamodel.cpp @@ -29,7 +29,11 @@ #include "vorbismetadatamodel.h" VorbisMetaDataModel::VorbisMetaDataModel(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); @@ -57,6 +61,7 @@ QPixmap VorbisMetaDataModel::cover() const if(!m_tag || m_tag->isEmpty()) return QPixmap(); +#ifdef IS_COVER_EDITABLE TagLib::List<TagLib::FLAC::Picture *> list = m_tag->pictureList(); for(uint i = 0; i < list.size(); ++i) { @@ -67,10 +72,26 @@ QPixmap VorbisMetaDataModel::cover() const return cover; } } +#else + TagLib::StringList list = m_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 VorbisMetaDataModel::setCover(const QPixmap &pix) { removeCover(); @@ -87,12 +108,6 @@ void VorbisMetaDataModel::setCover(const QPixmap &pix) picture->setData(TagLib::ByteVector(data.constData(), data.size())); m_tag->addPicture(picture); m_file->save(); -#if ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION <= 10)) - //taglib bug workarround - delete m_file; - m_file = new TagLib::Ogg::Vorbis::File(QStringToFileName(m_path)); - m_tag = m_file->tag(); -#endif } } @@ -113,15 +128,10 @@ void VorbisMetaDataModel::removeCover() if(save) { m_file->save(); -#if ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION <= 10)) - //taglib bug workarround - delete m_file; - m_file = new TagLib::Ogg::Vorbis::File(QStringToFileName(m_path)); - m_tag = m_file->tag(); -#endif } } } +#endif VorbisCommentModel::VorbisCommentModel(VorbisMetaDataModel *model) : TagModel(TagModel::Save) { |
