aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-08-04 21:28:03 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-08-04 21:28:03 +0000
commitc40c1ba38df9efce07a9f8372e6d357ff3c5d9b6 (patch)
treef26a179cd319f4ac19c3c65de069d17c9e1c2646 /src/plugins
parent0ab8a1f1aa6b2064d5d97becbb7b2ad40cfe4501 (diff)
downloadqmmp-c40c1ba38df9efce07a9f8372e6d357ff3c5d9b6.tar.gz
qmmp-c40c1ba38df9efce07a9f8372e6d357ff3c5d9b6.tar.bz2
qmmp-c40c1ba38df9efce07a9f8372e6d357ff3c5d9b6.zip
changed MetaDataModel API, disabled broken plugins
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8223 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/Engines/Engines.pro2
-rw-r--r--src/plugins/Input/Input.pro22
-rw-r--r--src/plugins/Input/modplug/decodermodplugfactory.cpp3
-rw-r--r--src/plugins/Input/modplug/decodermodplugfactory.h2
-rw-r--r--src/plugins/Input/modplug/modplugmetadatamodel.cpp39
-rw-r--r--src/plugins/Input/modplug/modplugmetadatamodel.h4
-rw-r--r--src/plugins/Input/mpeg/decodermpegfactory.cpp6
-rw-r--r--src/plugins/Input/mpeg/decodermpegfactory.h5
-rw-r--r--src/plugins/Input/mpeg/mpegmetadatamodel.cpp69
-rw-r--r--src/plugins/Input/mpeg/mpegmetadatamodel.h10
-rw-r--r--src/plugins/Input/vorbis/decodervorbisfactory.cpp4
-rw-r--r--src/plugins/Input/vorbis/decodervorbisfactory.h2
-rw-r--r--src/plugins/Input/vorbis/vorbismetadatamodel.cpp35
-rw-r--r--src/plugins/Input/vorbis/vorbismetadatamodel.h13
14 files changed, 86 insertions, 130 deletions
diff --git a/src/plugins/Engines/Engines.pro b/src/plugins/Engines/Engines.pro
index 1dddcfd5d..abd780457 100644
--- a/src/plugins/Engines/Engines.pro
+++ b/src/plugins/Engines/Engines.pro
@@ -1,4 +1,4 @@
include(../../../qmmp.pri)
-SUBDIRS += mplayer
+#SUBDIRS += mplayer
TEMPLATE = subdirs
diff --git a/src/plugins/Input/Input.pro b/src/plugins/Input/Input.pro
index 498c5ff60..0c16b04a1 100644
--- a/src/plugins/Input/Input.pro
+++ b/src/plugins/Input/Input.pro
@@ -1,18 +1,18 @@
include(../../../qmmp.pri)
TEMPLATE = subdirs
-SUBDIRS += vorbis cue sndfile wavpack
+SUBDIRS += vorbis #cue sndfile wavpack
contains(CONFIG, WITH_MAD)|contains(CONFIG, WITH_MPG123){
SUBDIRS += mpeg
}
contains(CONFIG, FLAC_PLUGIN){
- SUBDIRS += flac
+# SUBDIRS += flac
}
contains(CONFIG, MUSEPACK_PLUGIN){
- SUBDIRS += mpc
+# SUBDIRS += mpc
}
contains(CONFIG, MODPLUG_PLUGIN){
@@ -20,34 +20,34 @@ contains(CONFIG, MODPLUG_PLUGIN){
}
contains(CONFIG, FFMPEG_PLUGIN){
- SUBDIRS += ffmpeg
+# SUBDIRS += ffmpeg
}
contains(CONFIG, GME_PLUGIN){
- SUBDIRS += gme
+# SUBDIRS += gme
}
contains(CONFIG, OPUS_PLUGIN){
- SUBDIRS += opus
+# SUBDIRS += opus
}
contains(CONFIG, CDAUDIO_PLUGIN){
- SUBDIRS += cdaudio
+# SUBDIRS += cdaudio
}
contains(CONFIG, SID_PLUGIN){
- SUBDIRS += sid
+# SUBDIRS += sid
}
unix{
contains(CONFIG, AAC_PLUGIN){
- SUBDIRS += aac
+# SUBDIRS += aac
}
contains(CONFIG, WILDMIDI_PLUGIN){
- SUBDIRS += wildmidi
+# SUBDIRS += wildmidi
}
contains(CONFIG, ARCHIVE_PLUGIN){
@@ -57,7 +57,7 @@ contains(CONFIG, ARCHIVE_PLUGIN){
TAGLIB_VER_MIN = $$member(TAGLIB_VERSION, 1)
greaterThan(TAGLIB_VER_MAJ, 1) | equals(TAGLIB_VER_MAJ, 1) {
- greaterThan(TAGLIB_VER_MIN, 10):SUBDIRS += archive
+# greaterThan(TAGLIB_VER_MIN, 10):SUBDIRS += archive
} else {
message("Archive plugin requires at least TagLib 1.11")
}
diff --git a/src/plugins/Input/modplug/decodermodplugfactory.cpp b/src/plugins/Input/modplug/decodermodplugfactory.cpp
index 2142f8179..89ba9ba4e 100644
--- a/src/plugins/Input/modplug/decodermodplugfactory.cpp
+++ b/src/plugins/Input/modplug/decodermodplugfactory.cpp
@@ -119,8 +119,9 @@ QList<TrackInfo *> DecoderModPlugFactory::createPlayList(const QString &path, Tr
return list;
}
-MetaDataModel* DecoderModPlugFactory::createMetaDataModel(const QString &path, QObject *parent)
+MetaDataModel* DecoderModPlugFactory::createMetaDataModel(const QString &path, bool readOnly, QObject *parent)
{
+ Q_UNUSED(readOnly);
return new ModPlugMetaDataModel(path, parent);
}
diff --git a/src/plugins/Input/modplug/decodermodplugfactory.h b/src/plugins/Input/modplug/decodermodplugfactory.h
index bd7acab5f..0108c2c31 100644
--- a/src/plugins/Input/modplug/decodermodplugfactory.h
+++ b/src/plugins/Input/modplug/decodermodplugfactory.h
@@ -33,7 +33,7 @@ public:
DecoderProperties properties() const;
Decoder *create(const QString &, QIODevice *);
QList<TrackInfo *> createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *);
- MetaDataModel* createMetaDataModel(const QString &path, QObject *parent = 0);
+ MetaDataModel* createMetaDataModel(const QString &path, bool readOnly, QObject *parent = 0);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
QString translation() const;
diff --git a/src/plugins/Input/modplug/modplugmetadatamodel.cpp b/src/plugins/Input/modplug/modplugmetadatamodel.cpp
index fded36966..cd1636ea3 100644
--- a/src/plugins/Input/modplug/modplugmetadatamodel.cpp
+++ b/src/plugins/Input/modplug/modplugmetadatamodel.cpp
@@ -29,7 +29,7 @@
#define MAX_MESSAGE_LENGTH 4000
-ModPlugMetaDataModel::ModPlugMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent)
+ModPlugMetaDataModel::ModPlugMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(true, parent)
{
m_soundFile = 0;
m_path = path;
@@ -62,31 +62,24 @@ ModPlugMetaDataModel::~ModPlugMetaDataModel()
}
}
-QHash<QString, QString> ModPlugMetaDataModel::audioProperties()
+QList<MetaDataItem> ModPlugMetaDataModel::extraProperties() const
{
- QHash<QString, QString> ap;
+ QList<MetaDataItem> ep;
if(!m_soundFile)
- return ap;
+ return ep;
- ap.insert(tr("File name"), m_path.section('/',-1));
- QString text = getTypeName(m_soundFile->GetType());
- ap.insert(tr("Type"), text);
- int lSongTime = m_soundFile->GetSongTime();
- text = QString("%1").arg(lSongTime/60);
- text +=":"+QString("%1").arg(lSongTime%60,2,10,QChar('0'));
- ap.insert(tr("Length"), text);
- ap.insert(tr("Speed"), QString::number(m_soundFile->GetMusicSpeed()));
- ap.insert(tr("Tempo"), QString::number(m_soundFile->GetMusicTempo()));
- ap.insert(tr("Samples"), QString::number(m_soundFile->GetNumSamples()));
- ap.insert(tr("Instruments"), QString::number(m_soundFile->GetNumInstruments()));
- ap.insert(tr("Patterns"), QString::number(m_soundFile->GetNumPatterns()));
- ap.insert(tr("Channels"), QString::number(m_soundFile->GetNumChannels()));
- return ap;
+ ep << MetaDataItem(tr("Speed"), m_soundFile->GetMusicSpeed());
+ ep << MetaDataItem(tr("Tempo"), m_soundFile->GetMusicTempo());
+ ep << MetaDataItem(tr("Samples"), m_soundFile->GetNumSamples());
+ ep << MetaDataItem(tr("Instruments"), m_soundFile->GetNumInstruments());
+ ep << MetaDataItem(tr("Patterns"), m_soundFile->GetNumPatterns());
+ ep << MetaDataItem(tr("Channels"), m_soundFile->GetNumChannels());
+ return ep;
}
-QHash<QString, QString> ModPlugMetaDataModel::descriptions()
+QList<MetaDataItem> ModPlugMetaDataModel::descriptions() const
{
- QHash<QString, QString> desc;
+ QList<MetaDataItem> desc;
if(!m_soundFile)
return desc;
char lBuffer[33];
@@ -98,7 +91,7 @@ QHash<QString, QString> ModPlugMetaDataModel::descriptions()
}
text = text.trimmed();
if(!text.isEmpty())
- desc.insert(tr("Samples"), text);
+ desc << MetaDataItem(tr("Samples"), text);
text.clear();
for(uint i = 0; i < m_soundFile->GetNumInstruments(); i++)
{
@@ -107,12 +100,12 @@ QHash<QString, QString> ModPlugMetaDataModel::descriptions()
}
text = text.trimmed();
if(!text.isEmpty())
- desc.insert(tr("Instruments"), text);
+ desc << MetaDataItem(tr("Instruments"), text);
text.clear();
char message[MAX_MESSAGE_LENGTH];
int length = m_soundFile->GetSongComments(message, MAX_MESSAGE_LENGTH, 80);
if (length != 0)
- desc.insert(tr("Comment"), QString::fromUtf8(message).trimmed ());
+ desc << MetaDataItem(tr("Comment"), QString::fromUtf8(message).trimmed ());
return desc;
}
diff --git a/src/plugins/Input/modplug/modplugmetadatamodel.h b/src/plugins/Input/modplug/modplugmetadatamodel.h
index d20306480..544155a12 100644
--- a/src/plugins/Input/modplug/modplugmetadatamodel.h
+++ b/src/plugins/Input/modplug/modplugmetadatamodel.h
@@ -32,8 +32,8 @@ Q_OBJECT
public:
ModPlugMetaDataModel(const QString &path, QObject *parent);
~ModPlugMetaDataModel();
- QHash<QString, QString> audioProperties();
- QHash<QString, QString> descriptions();
+ QList<MetaDataItem> extraProperties() const override;
+ QList<MetaDataItem> descriptions() const override;
static QString getTypeName(quint32 type);
private:
diff --git a/src/plugins/Input/mpeg/decodermpegfactory.cpp b/src/plugins/Input/mpeg/decodermpegfactory.cpp
index b617329df..5d9e6202a 100644
--- a/src/plugins/Input/mpeg/decodermpegfactory.cpp
+++ b/src/plugins/Input/mpeg/decodermpegfactory.cpp
@@ -76,7 +76,7 @@ bool DecoderMPEGFactory::canDecode(QIODevice *input) const
return false;
if (!memcmp(buf + 8, "WAVE", 4))
- return !memcmp(buf + 20, "U" ,1);
+ return !memcmp(buf + 20, "U" ,1);
if(!memcmp(buf, "ID3", 3))
{
@@ -361,9 +361,9 @@ QList<TrackInfo *> DecoderMPEGFactory::createPlayList(const QString &path, Track
return QList<TrackInfo*>() << info;
}
-MetaDataModel* DecoderMPEGFactory::createMetaDataModel(const QString &path, QObject *parent)
+MetaDataModel* DecoderMPEGFactory::createMetaDataModel(const QString &path, bool readOnly, QObject *parent)
{
- return new MPEGMetaDataModel(m_using_rusxmms, path, parent);
+ return new MPEGMetaDataModel(m_using_rusxmms, path, readOnly, parent);
}
void DecoderMPEGFactory::showSettings(QWidget *parent)
diff --git a/src/plugins/Input/mpeg/decodermpegfactory.h b/src/plugins/Input/mpeg/decodermpegfactory.h
index 469a2ed6c..2d8b3f383 100644
--- a/src/plugins/Input/mpeg/decodermpegfactory.h
+++ b/src/plugins/Input/mpeg/decodermpegfactory.h
@@ -22,8 +22,7 @@
#include <qmmp/decoderfactory.h>
-class DecoderMPEGFactory : public QObject,
- DecoderFactory
+class DecoderMPEGFactory : public QObject, DecoderFactory
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qmmp.qmmp.DecoderFactoryInterface.1.0")
@@ -35,7 +34,7 @@ public:
DecoderProperties properties() const;
Decoder *create(const QString &, QIODevice *input);
QList<TrackInfo *> createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *);
- MetaDataModel* createMetaDataModel(const QString &path, QObject *parent = 0);
+ MetaDataModel* createMetaDataModel(const QString &path, bool readOnly = true, QObject *parent = 0);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
QString translation() const;
diff --git a/src/plugins/Input/mpeg/mpegmetadatamodel.cpp b/src/plugins/Input/mpeg/mpegmetadatamodel.cpp
index 65f2c94d6..187331df4 100644
--- a/src/plugins/Input/mpeg/mpegmetadatamodel.cpp
+++ b/src/plugins/Input/mpeg/mpegmetadatamodel.cpp
@@ -20,7 +20,6 @@
#include <QTextCodec>
#include <QSettings>
-
#include <taglib/tag.h>
#include <taglib/fileref.h>
#include <taglib/id3v1tag.h>
@@ -32,12 +31,14 @@
#include <taglib/mpegproperties.h>
#include <taglib/textidentificationframe.h>
#include <taglib/attachedpictureframe.h>
-
+#include <taglib/id3v2framefactory.h>
#include "mpegmetadatamodel.h"
-MPEGMetaDataModel::MPEGMetaDataModel(bool using_rusxmms, const QString &path, QObject *parent) : MetaDataModel(parent)
+MPEGMetaDataModel::MPEGMetaDataModel(bool using_rusxmms, const QString &path, bool readOnly, QObject *parent) :
+ MetaDataModel(readOnly, parent)
{
- m_file = new TagLib::MPEG::File(QStringToFileName(path));
+ m_stream = new TagLib::FileStream(QStringToFileName(path), readOnly);
+ m_file = new TagLib::MPEG::File(m_stream, TagLib::ID3v2::FrameFactory::instance());
m_tags << new MpegFileTagModel(using_rusxmms, m_file, TagLib::MPEG::File::ID3v1);
m_tags << new MpegFileTagModel(using_rusxmms, m_file, TagLib::MPEG::File::ID3v2);
m_tags << new MpegFileTagModel(using_rusxmms, m_file, TagLib::MPEG::File::APE);
@@ -48,68 +49,42 @@ MPEGMetaDataModel::~MPEGMetaDataModel()
while(!m_tags.isEmpty())
delete m_tags.takeFirst();
delete m_file;
+ delete m_stream;
}
-QHash<QString, QString> MPEGMetaDataModel::audioProperties()
+QList<MetaDataItem> MPEGMetaDataModel::extraProperties() const
{
- QHash<QString, QString> ap;
- QString text;
- QString v;
- switch((int)m_file->audioProperties()->version())
- {
- case TagLib::MPEG::Header::Version1:
- v = "1";
- break;
- case TagLib::MPEG::Header::Version2:
- v = "2";
- break;
- case TagLib::MPEG::Header::Version2_5:
- v = "2.5";
- }
- text = QString("MPEG-%1 layer %2").arg(v).arg(m_file->audioProperties()->layer());
- ap.insert(tr("Format"), text);
- text = QString("%1").arg(m_file->audioProperties()->bitrate());
- ap.insert(tr("Bitrate"), text+" "+tr("kbps"));
- text = QString("%1").arg(m_file->audioProperties()->sampleRate());
- ap.insert(tr("Sample rate"), text+" "+tr("Hz"));
- switch (m_file->audioProperties()->channelMode())
+ QList<MetaDataItem> ep;
+ TagLib::MPEG::Properties *ap = m_file->audioProperties();
+
+ switch (ap->channelMode())
{
case TagLib::MPEG::Header::Stereo:
- ap.insert(tr("Mode"), "Stereo");
+ ep << MetaDataItem(tr("Mode"), "Stereo");
break;
case TagLib::MPEG::Header::JointStereo:
- ap.insert(tr("Mode"), "Joint stereo");
+ ep << MetaDataItem(tr("Mode"), "Joint stereo");
break;
case TagLib::MPEG::Header::DualChannel:
- ap.insert(tr("Mode"), "Dual channel");
+ ep << MetaDataItem(tr("Mode"), "Dual channel");
break;
case TagLib::MPEG::Header::SingleChannel:
- ap.insert(tr("Mode"), "Single channel");
+ ep << MetaDataItem(tr("Mode"), "Single channel");
break;
}
- text = QString("%1 "+tr("KB")).arg(m_file->length()/1024);
- ap.insert(tr("File size"), text);
- if (m_file->audioProperties()->protectionEnabled())
- ap.insert(tr("Protection"), tr("Yes"));
- else
- ap.insert(tr("Protection"), tr("No"));
- if (m_file->audioProperties()->isCopyrighted())
- ap.insert(tr("Copyright"), tr("Yes"));
- else
- ap.insert(tr("Copyright"), tr("No"));
- if (m_file->audioProperties()->isOriginal())
- ap.insert(tr("Original"), tr("Yes"));
- else
- ap.insert(tr("Original"), tr("No"));
- return ap;
+ ep << MetaDataItem(tr("Protection"), ap->protectionEnabled());
+ ep << MetaDataItem(tr("Copyright"), ap->isCopyrighted());
+ ep << MetaDataItem(tr("Original"), ap->isOriginal());
+
+ return ep;
}
-QList<TagModel* > MPEGMetaDataModel::tags()
+QList<TagModel* > MPEGMetaDataModel::tags() const
{
return m_tags;
}
-QPixmap MPEGMetaDataModel::cover()
+QPixmap MPEGMetaDataModel::cover() const
{
if(!m_file->ID3v2Tag())
return QPixmap();
diff --git a/src/plugins/Input/mpeg/mpegmetadatamodel.h b/src/plugins/Input/mpeg/mpegmetadatamodel.h
index 30191cdb7..02d0a1cfb 100644
--- a/src/plugins/Input/mpeg/mpegmetadatamodel.h
+++ b/src/plugins/Input/mpeg/mpegmetadatamodel.h
@@ -23,6 +23,7 @@
#include <qmmp/metadatamodel.h>
#include <taglib/mpegfile.h>
+#include <taglib/tfilestream.h>
class QTextCodec;
@@ -30,15 +31,16 @@ class MPEGMetaDataModel : public MetaDataModel
{
Q_OBJECT
public:
- MPEGMetaDataModel(bool using_rusxmms, const QString &path, QObject *parent);
+ MPEGMetaDataModel(bool using_rusxmms, const QString &path, bool readOnly, QObject *parent);
~MPEGMetaDataModel();
- QHash<QString, QString> audioProperties();
- QList<TagModel* > tags();
- QPixmap cover();
+ QList<MetaDataItem> extraProperties() const override;
+ QList<TagModel* > tags() const override;
+ QPixmap cover() const override;
private:
QList<TagModel* > m_tags;
TagLib::MPEG::File *m_file;
+ TagLib::FileStream *m_stream;
};
class MpegFileTagModel : public TagModel
diff --git a/src/plugins/Input/vorbis/decodervorbisfactory.cpp b/src/plugins/Input/vorbis/decodervorbisfactory.cpp
index fc7e2f9e2..8c2dcdd50 100644
--- a/src/plugins/Input/vorbis/decodervorbisfactory.cpp
+++ b/src/plugins/Input/vorbis/decodervorbisfactory.cpp
@@ -57,9 +57,9 @@ Decoder *DecoderVorbisFactory::create(const QString &, QIODevice *input)
return new DecoderVorbis(input);
}
-MetaDataModel* DecoderVorbisFactory::createMetaDataModel(const QString &path, QObject *parent)
+MetaDataModel* DecoderVorbisFactory::createMetaDataModel(const QString &path, bool readOnly, QObject *parent)
{
- return new VorbisMetaDataModel(path, parent);
+ return new VorbisMetaDataModel(path, readOnly, parent);
}
QList<TrackInfo *> DecoderVorbisFactory::createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *)
diff --git a/src/plugins/Input/vorbis/decodervorbisfactory.h b/src/plugins/Input/vorbis/decodervorbisfactory.h
index dc0a39264..e75198a08 100644
--- a/src/plugins/Input/vorbis/decodervorbisfactory.h
+++ b/src/plugins/Input/vorbis/decodervorbisfactory.h
@@ -36,7 +36,7 @@ public:
bool canDecode(QIODevice *input) const;
DecoderProperties properties() const;
Decoder *create(const QString &, QIODevice *input);
- MetaDataModel* createMetaDataModel(const QString &path, QObject *parent = 0);
+ MetaDataModel* createMetaDataModel(const QString &path, bool readOnly = true, QObject *parent = 0);
QList<TrackInfo *> createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *);
QObject* showDetails(QWidget *parent, const QString &path);
void showSettings(QWidget *parent);
diff --git a/src/plugins/Input/vorbis/vorbismetadatamodel.cpp b/src/plugins/Input/vorbis/vorbismetadatamodel.cpp
index b00ad9bd7..67b7d0fb5 100644
--- a/src/plugins/Input/vorbis/vorbismetadatamodel.cpp
+++ b/src/plugins/Input/vorbis/vorbismetadatamodel.cpp
@@ -26,10 +26,12 @@
#include <taglib/tmap.h>
#include "vorbismetadatamodel.h"
-VorbisMetaDataModel::VorbisMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent)
+VorbisMetaDataModel::VorbisMetaDataModel(const QString &path, bool readOnly, QObject *parent)
+ : MetaDataModel(readOnly, parent)
{
m_path = path;
- m_file = new TagLib::Ogg::Vorbis::File(QStringToFileName(path));
+ m_stream = new TagLib::FileStream(QStringToFileName(path), readOnly);
+ m_file = new TagLib::Ogg::Vorbis::File(m_stream);
m_tag = m_file->tag();
m_tags << new VorbisCommentModel(this);
}
@@ -39,35 +41,16 @@ VorbisMetaDataModel::~VorbisMetaDataModel()
while(!m_tags.isEmpty())
delete m_tags.takeFirst();
- if(m_file)
- {
- delete m_file;
- m_file = 0;
- }
-}
-
-QHash<QString, QString> VorbisMetaDataModel::audioProperties()
-{
- QHash<QString, QString> ap;
- if(m_file->audioProperties())
- {
- QString text = QString("%1").arg(m_file->audioProperties()->length()/60);
- text +=":"+QString("%1").arg(m_file->audioProperties()->length()%60,2,10,QChar('0'));
- ap.insert(tr("Length"), text);
- ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(m_file->audioProperties()->sampleRate()));
- ap.insert(tr("Channels"), QString("%1").arg(m_file->audioProperties()->channels()));
- ap.insert(tr("Bitrate"), QString("%1 " + tr("kbps")).arg(m_file->audioProperties()->bitrate()));
- ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(m_file->length()/1024));
- }
- return ap;
+ delete m_file;
+ delete m_stream;
}
-QList<TagModel* > VorbisMetaDataModel::tags()
+QList<TagModel* > VorbisMetaDataModel::tags() const
{
return m_tags;
}
-QPixmap VorbisMetaDataModel::cover()
+QPixmap VorbisMetaDataModel::cover() const
{
if(!m_tag || m_tag->isEmpty())
return QPixmap();
@@ -103,7 +86,7 @@ QPixmap VorbisMetaDataModel::cover()
return QPixmap();
}
-ulong VorbisMetaDataModel::readPictureBlockField(QByteArray data, int offset)
+ulong VorbisMetaDataModel::readPictureBlockField(QByteArray data, int offset) const
{
return (((uchar)data.data()[offset] & 0xff) << 24) |
(((uchar)data.data()[offset+1] & 0xff) << 16) |
diff --git a/src/plugins/Input/vorbis/vorbismetadatamodel.h b/src/plugins/Input/vorbis/vorbismetadatamodel.h
index a21d3d503..fc63a2cb3 100644
--- a/src/plugins/Input/vorbis/vorbismetadatamodel.h
+++ b/src/plugins/Input/vorbis/vorbismetadatamodel.h
@@ -24,6 +24,8 @@
#include <qmmp/metadatamodel.h>
#include <taglib/vorbisfile.h>
#include <taglib/xiphcomment.h>
+#include <taglib/tfilestream.h>
+#include <taglib/tfilestream.h>
class VorbisCommentModel;
@@ -31,20 +33,21 @@ class VorbisMetaDataModel : public MetaDataModel
{
Q_OBJECT
public:
- VorbisMetaDataModel(const QString &path, QObject *parent);
+ VorbisMetaDataModel(const QString &path, bool readOnly, QObject *parent);
~VorbisMetaDataModel();
friend class VorbisCommentModel;
- QHash<QString, QString> audioProperties();
- QList<TagModel* > tags();
- QPixmap cover();
+ QList<TagModel* > tags() const override;
+ QPixmap cover() const override;
private:
+ ulong readPictureBlockField(QByteArray data, int offset) const;
+
QString m_path;
TagLib::Ogg::Vorbis::File *m_file;
TagLib::Ogg::XiphComment *m_tag;
QList<TagModel* > m_tags;
- ulong readPictureBlockField(QByteArray data, int offset);
+ TagLib::FileStream *m_stream;
};
class VorbisCommentModel : public TagModel