diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-09-23 09:13:07 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-09-23 09:13:07 +0000 |
| commit | bcc55bd0586afc794e1c51b38b7fd0aac6090696 (patch) | |
| tree | 7cbdccf4612301507cecbd98d3da9f8e019b6d11 | |
| parent | 8418eb44760dd28ea6c667f0eb96a5643aeae58f (diff) | |
| download | qmmp-bcc55bd0586afc794e1c51b38b7fd0aac6090696.tar.gz qmmp-bcc55bd0586afc794e1c51b38b7fd0aac6090696.tar.bz2 qmmp-bcc55bd0586afc794e1c51b38b7fd0aac6090696.zip | |
mpeg: feature to change cover image
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8356 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/plugins/Input/mpeg/mpegmetadatamodel.cpp | 29 | ||||
| -rw-r--r-- | src/plugins/Input/mpeg/mpegmetadatamodel.h | 2 |
2 files changed, 30 insertions, 1 deletions
diff --git a/src/plugins/Input/mpeg/mpegmetadatamodel.cpp b/src/plugins/Input/mpeg/mpegmetadatamodel.cpp index 3399c901d..d4760ea88 100644 --- a/src/plugins/Input/mpeg/mpegmetadatamodel.cpp +++ b/src/plugins/Input/mpeg/mpegmetadatamodel.cpp @@ -20,6 +20,8 @@ #include <QTextCodec> #include <QSettings> +#include <QByteArray> +#include <QBuffer> #include <taglib/tag.h> #include <taglib/fileref.h> #include <taglib/id3v1tag.h> @@ -35,7 +37,7 @@ #include "mpegmetadatamodel.h" MPEGMetaDataModel::MPEGMetaDataModel(bool using_rusxmms, const QString &path, bool readOnly) : - MetaDataModel(readOnly) + MetaDataModel(readOnly, MetaDataModel::IS_COVER_EDITABLE) { m_stream = new TagLib::FileStream(QStringToFileName(path), readOnly); m_file = new TagLib::MPEG::File(m_stream, TagLib::ID3v2::FrameFactory::instance()); @@ -118,6 +120,31 @@ QPixmap MPEGMetaDataModel::cover() const return QPixmap(); } +void MPEGMetaDataModel::setCover(const QPixmap &pix) +{ + TagLib::ID3v2::Tag *tag = m_file->ID3v2Tag(true); + tag->removeFrames("APIC"); + TagLib::ID3v2::AttachedPictureFrame *frame = new TagLib::ID3v2::AttachedPictureFrame; + frame->setType(TagLib::ID3v2::AttachedPictureFrame::FrontCover); + QByteArray data; + QBuffer buffer(&data); + buffer.open(QIODevice::WriteOnly); + pix.save(&buffer, "JPEG"); + frame->setMimeType("image/jpeg"); + frame->setPicture(TagLib::ByteVector(data.constData(), data.size())); + tag->addFrame(frame); + m_file->save(TagLib::MPEG::File::ID3v2); +} + +void MPEGMetaDataModel::removeCover() +{ + if(m_file->ID3v2Tag()) + { + m_file->ID3v2Tag()->removeFrames("APIC"); + m_file->save(TagLib::MPEG::File::ID3v2); + } +} + MpegFileTagModel::MpegFileTagModel(bool using_rusxmms, TagLib::MPEG::File *file, TagLib::MPEG::File::TagTypes tagType) : TagModel() { diff --git a/src/plugins/Input/mpeg/mpegmetadatamodel.h b/src/plugins/Input/mpeg/mpegmetadatamodel.h index dc0b2c77a..b50710986 100644 --- a/src/plugins/Input/mpeg/mpegmetadatamodel.h +++ b/src/plugins/Input/mpeg/mpegmetadatamodel.h @@ -36,6 +36,8 @@ public: QList<MetaDataItem> extraProperties() const; QList<TagModel* > tags() const; QPixmap cover() const; + void setCover(const QPixmap &pix); + void removeCover(); private: QList<TagModel* > m_tags; |
