diff options
Diffstat (limited to 'src/plugins/Input/wavpack')
4 files changed, 27 insertions, 30 deletions
diff --git a/src/plugins/Input/wavpack/decoderwavpackfactory.cpp b/src/plugins/Input/wavpack/decoderwavpackfactory.cpp index bed6f1eab..23f219fe8 100644 --- a/src/plugins/Input/wavpack/decoderwavpackfactory.cpp +++ b/src/plugins/Input/wavpack/decoderwavpackfactory.cpp @@ -160,10 +160,10 @@ QList<TrackInfo *> DecoderWavPackFactory::createPlayList(const QString &path, Tr return QList<TrackInfo *>() << info; } -MetaDataModel* DecoderWavPackFactory::createMetaDataModel(const QString &path, QObject *parent) +MetaDataModel* DecoderWavPackFactory::createMetaDataModel(const QString &path, bool readOnly, QObject *parent) { if (!path.contains("://") || path.startsWith("wvpack://")) - return new WavPackMetaDataModel(path, parent); + return new WavPackMetaDataModel(path, readOnly, parent); else return 0; } diff --git a/src/plugins/Input/wavpack/decoderwavpackfactory.h b/src/plugins/Input/wavpack/decoderwavpackfactory.h index 86f21184f..b7b6f226b 100644 --- a/src/plugins/Input/wavpack/decoderwavpackfactory.h +++ b/src/plugins/Input/wavpack/decoderwavpackfactory.h @@ -34,7 +34,7 @@ public: DecoderProperties properties() const; Decoder *create(const QString &p, QIODevice *i); QList<TrackInfo *> createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *ignoredFiles); - 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/wavpack/wavpackmetadatamodel.cpp b/src/plugins/Input/wavpack/wavpackmetadatamodel.cpp index 756d7e859..8d9e9ac22 100644 --- a/src/plugins/Input/wavpack/wavpackmetadatamodel.cpp +++ b/src/plugins/Input/wavpack/wavpackmetadatamodel.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009-2016 by Ilya Kotov * + * Copyright (C) 2009-2018 by Ilya Kotov * * forkotov02@ya.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -22,7 +22,8 @@ #include <qmmp/metadatamanager.h> #include "wavpackmetadatamodel.h" -WavPackMetaDataModel::WavPackMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent) +WavPackMetaDataModel::WavPackMetaDataModel(const QString &path, bool readOnly, QObject *parent) + : MetaDataModel(readOnly, parent) { if(path.contains("://")) { @@ -34,13 +35,16 @@ WavPackMetaDataModel::WavPackMetaDataModel(const QString &path, QObject *parent) else m_path = path; - char err[80]; + char err[80] = {0}; + int flags = OPEN_WVC | OPEN_TAGS; + if(!readOnly) + flags |= OPEN_EDIT_TAGS; #if defined(Q_OS_WIN) && defined(OPEN_FILE_UTF8) m_ctx = WavpackOpenFileInput (m_path.toUtf8().constData(), - err, OPEN_WVC | OPEN_TAGS | OPEN_FILE_UTF8, 0); + err, flags | OPEN_FILE_UTF8, 0); #else m_ctx = WavpackOpenFileInput (m_path.toLocal8Bit().constData(), err, - OPEN_WVC | OPEN_EDIT_TAGS, 0); + flags, 0); #endif if (!m_ctx) { @@ -59,31 +63,24 @@ WavPackMetaDataModel::~WavPackMetaDataModel() WavpackCloseFile (m_ctx); } -QHash<QString, QString> WavPackMetaDataModel::audioProperties() +QList<MetaDataItem> WavPackMetaDataModel::extraProperties() const { - QHash<QString, QString> ap; + QList<MetaDataItem> ep; + if(!m_ctx) - return ap; - int length = (int) WavpackGetNumSamples(m_ctx)/WavpackGetSampleRate(m_ctx); - QString text = QString("%1").arg(length/60); - text +=":"+QString("%1").arg(length % 60, 2, 10, QChar('0')); - ap.insert(tr("Length"), text); - ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg((int) WavpackGetSampleRate(m_ctx))); - ap.insert(tr("Channels"), QString("%1").arg((int) WavpackGetNumChannels(m_ctx))); - ap.insert(tr("Bitrate"), QString("%1 " + tr("kbps")) - .arg((int) WavpackGetAverageBitrate(m_ctx, WavpackGetNumChannels(m_ctx))/1000)); - ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(WavpackGetFileSize(m_ctx)/1024)); - ap.insert(tr("Ratio"), QString("%1").arg(WavpackGetRatio(m_ctx))); - ap.insert(tr("Version"), QString("%1").arg(WavpackGetVersion(m_ctx))); - return ap; + return ep; + + ep << MetaDataItem(tr("Ratio"), WavpackGetRatio(m_ctx)); + ep << MetaDataItem(tr("Version"), WavpackGetVersion(m_ctx)); + return ep; } -QList<TagModel* > WavPackMetaDataModel::tags() +QList<TagModel* > WavPackMetaDataModel::tags() const { return m_tags; } -QString WavPackMetaDataModel::coverPath() +QString WavPackMetaDataModel::coverPath() const { return MetaDataManager::instance()->findCoverFile(m_path); } diff --git a/src/plugins/Input/wavpack/wavpackmetadatamodel.h b/src/plugins/Input/wavpack/wavpackmetadatamodel.h index 8df5fc97a..8c28dfa4b 100644 --- a/src/plugins/Input/wavpack/wavpackmetadatamodel.h +++ b/src/plugins/Input/wavpack/wavpackmetadatamodel.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009-2015 by Ilya Kotov * + * Copyright (C) 2009-2018 by Ilya Kotov * * forkotov02@ya.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -30,11 +30,11 @@ class WavPackMetaDataModel : public MetaDataModel { Q_OBJECT public: - WavPackMetaDataModel(const QString &path, QObject *parent); + WavPackMetaDataModel(const QString &path, bool readOnly, QObject *parent); ~WavPackMetaDataModel(); - QHash<QString, QString> audioProperties(); - QList<TagModel* > tags(); - QString coverPath(); + QList<MetaDataItem> extraProperties() const override; + QList<TagModel* > tags() const override; + QString coverPath() const override; private: WavpackContext *m_ctx; |
