aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-09-23 09:13:07 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-09-23 09:13:07 +0000
commitbcc55bd0586afc794e1c51b38b7fd0aac6090696 (patch)
tree7cbdccf4612301507cecbd98d3da9f8e019b6d11 /src/plugins/Input
parent8418eb44760dd28ea6c667f0eb96a5643aeae58f (diff)
downloadqmmp-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
Diffstat (limited to 'src/plugins/Input')
-rw-r--r--src/plugins/Input/mpeg/mpegmetadatamodel.cpp29
-rw-r--r--src/plugins/Input/mpeg/mpegmetadatamodel.h2
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;