aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/flac/flacmetadatamodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Input/flac/flacmetadatamodel.cpp')
-rw-r--r--src/plugins/Input/flac/flacmetadatamodel.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/plugins/Input/flac/flacmetadatamodel.cpp b/src/plugins/Input/flac/flacmetadatamodel.cpp
index 622e8a661..54c15b006 100644
--- a/src/plugins/Input/flac/flacmetadatamodel.cpp
+++ b/src/plugins/Input/flac/flacmetadatamodel.cpp
@@ -25,11 +25,18 @@
#include <taglib/tmap.h>
#include <taglib/id3v2framefactory.h>
#include <taglib/flacpicture.h>
+#ifndef IS_COVER_EDITABLE
+#include <FLAC/all.h>
+#endif
#include <qmmp/metadatamanager.h>
#include "flacmetadatamodel.h"
FLACMetaDataModel::FLACMetaDataModel(const QString &path, bool readOnly)
+#ifdef IS_COVER_EDITABLE
: MetaDataModel(true, MetaDataModel::IS_COVER_EDITABLE)
+#else
+ : MetaDataModel(true)
+#endif
{
m_file = 0;
m_stream = 0;
@@ -87,6 +94,7 @@ QList<TagModel* > FLACMetaDataModel::tags() const
QPixmap FLACMetaDataModel::cover() const
{
+#ifdef IS_COVER_EDITABLE
if(!m_tag || m_tag->isEmpty())
return QPixmap();
@@ -101,6 +109,22 @@ QPixmap FLACMetaDataModel::cover() const
}
}
return QPixmap();
+#else
+ //embedded cover
+ QPixmap cover;
+ FLAC__StreamMetadata *metadata;
+ FLAC__metadata_get_picture (qPrintable(m_path),
+ &metadata,
+ FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER,
+ 0,0, -1,-1,-1,-1);
+ if(metadata)
+ {
+ FLAC__StreamMetadata_Picture *pict = &metadata->data.picture;
+ cover.loadFromData(QByteArray((char *)pict->data, (int) pict->data_length));
+ FLAC__metadata_object_delete(metadata);
+ }
+ return cover;
+#endif
}
QString FLACMetaDataModel::coverPath() const
@@ -108,6 +132,7 @@ QString FLACMetaDataModel::coverPath() const
return MetaDataManager::instance()->findCoverFile(m_path);
}
+#ifdef IS_COVER_EDITABLE
void FLACMetaDataModel::setCover(const QPixmap &pix)
{
removeCover();
@@ -147,6 +172,7 @@ void FLACMetaDataModel::removeCover()
}
}
}
+#endif
VorbisCommentModel::VorbisCommentModel(TagLib::Ogg::XiphComment *tag, TagLib::File *file) : TagModel(TagModel::Save)
{