From c40c1ba38df9efce07a9f8372e6d357ff3c5d9b6 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Sat, 4 Aug 2018 21:28:03 +0000 Subject: 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 --- src/plugins/Input/mpeg/decodermpegfactory.cpp | 6 +-- src/plugins/Input/mpeg/decodermpegfactory.h | 5 +- src/plugins/Input/mpeg/mpegmetadatamodel.cpp | 69 +++++++++------------------ src/plugins/Input/mpeg/mpegmetadatamodel.h | 10 ++-- 4 files changed, 33 insertions(+), 57 deletions(-) (limited to 'src/plugins/Input/mpeg') 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 DecoderMPEGFactory::createPlayList(const QString &path, Track return QList() << 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 -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 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 #include - #include #include #include @@ -32,12 +31,14 @@ #include #include #include - +#include #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 MPEGMetaDataModel::audioProperties() +QList MPEGMetaDataModel::extraProperties() const { - QHash 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 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 MPEGMetaDataModel::tags() +QList 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 #include +#include 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 audioProperties(); - QList tags(); - QPixmap cover(); + QList extraProperties() const override; + QList tags() const override; + QPixmap cover() const override; private: QList m_tags; TagLib::MPEG::File *m_file; + TagLib::FileStream *m_stream; }; class MpegFileTagModel : public TagModel -- cgit v1.2.3-13-gbd6f