diff options
| -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; |
