aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-08-05 08:21:43 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-08-05 08:21:43 +0000
commit8d146b246e3da5d26b9501ca509a43ef4112e27d (patch)
treec2f6afa22262a836e2178786fdd43b6b269c21c0 /src
parentb662d3c4f6c525f401d08ec710f4a76b0c30b0b7 (diff)
downloadqmmp-8d146b246e3da5d26b9501ca509a43ef4112e27d.tar.gz
qmmp-8d146b246e3da5d26b9501ca509a43ef4112e27d.tar.bz2
qmmp-8d146b246e3da5d26b9501ca509a43ef4112e27d.zip
fixed remaing plugins
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8229 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
-rw-r--r--src/plugins/Engines/Engines.pro2
-rw-r--r--src/plugins/Engines/mplayer/mplayerenginefactory.cpp3
-rw-r--r--src/plugins/Engines/mplayer/mplayerenginefactory.h2
-rw-r--r--src/plugins/Engines/mplayer/mplayermetadatamodel.cpp37
-rw-r--r--src/plugins/Engines/mplayer/mplayermetadatamodel.h4
-rw-r--r--src/plugins/Input/Input.pro8
-rw-r--r--src/plugins/Input/aac/aac.pro6
-rw-r--r--src/plugins/Input/aac/aacmetadatamodel.cpp51
-rw-r--r--src/plugins/Input/aac/aacmetadatamodel.h38
-rw-r--r--src/plugins/Input/aac/decoderaacfactory.cpp8
-rw-r--r--src/plugins/Input/aac/decoderaacfactory.h2
-rw-r--r--src/plugins/Input/archive/archive.pro6
-rw-r--r--src/plugins/Input/archive/archivemetadatamodel.cpp61
-rw-r--r--src/plugins/Input/archive/archivemetadatamodel.h46
-rw-r--r--src/plugins/Input/archive/decoderarchivefactory.cpp9
-rw-r--r--src/plugins/Input/archive/decoderarchivefactory.h2
-rw-r--r--src/plugins/Input/cue/cuemetadatamodel.cpp14
-rw-r--r--src/plugins/Input/cue/cuemetadatamodel.h6
-rw-r--r--src/plugins/Input/cue/decodercuefactory.cpp3
-rw-r--r--src/plugins/Input/cue/decodercuefactory.h2
-rw-r--r--src/plugins/Input/flac/decoderflacfactory.cpp4
-rw-r--r--src/plugins/Input/flac/decoderflacfactory.h2
-rw-r--r--src/plugins/Input/flac/flacmetadatamodel.cpp48
-rw-r--r--src/plugins/Input/flac/flacmetadatamodel.h13
-rw-r--r--src/plugins/Input/sndfile/decodersndfilefactory.cpp2
-rw-r--r--src/plugins/Input/sndfile/decodersndfilefactory.h2
-rw-r--r--src/plugins/Input/wavpack/decoderwavpackfactory.cpp4
-rw-r--r--src/plugins/Input/wavpack/decoderwavpackfactory.h2
-rw-r--r--src/plugins/Input/wavpack/wavpackmetadatamodel.cpp41
-rw-r--r--src/plugins/Input/wavpack/wavpackmetadatamodel.h10
-rw-r--r--src/qmmp/enginefactory.h2
31 files changed, 115 insertions, 325 deletions
diff --git a/src/plugins/Engines/Engines.pro b/src/plugins/Engines/Engines.pro
index abd780457..1dddcfd5d 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/Engines/mplayer/mplayerenginefactory.cpp b/src/plugins/Engines/mplayer/mplayerenginefactory.cpp
index 965d8863f..141aae2fe 100644
--- a/src/plugins/Engines/mplayer/mplayerenginefactory.cpp
+++ b/src/plugins/Engines/mplayer/mplayerenginefactory.cpp
@@ -66,8 +66,9 @@ QList<TrackInfo *> MplayerEngineFactory::createPlayList(const QString &path, Tra
return info;
}
-MetaDataModel* MplayerEngineFactory::createMetaDataModel(const QString &path, QObject *parent)
+MetaDataModel* MplayerEngineFactory::createMetaDataModel(const QString &path, bool readOnly, QObject *parent)
{
+ Q_UNUSED(readOnly);
return new MplayerMetaDataModel(path, parent);
}
diff --git a/src/plugins/Engines/mplayer/mplayerenginefactory.h b/src/plugins/Engines/mplayer/mplayerenginefactory.h
index 8084c712a..6be4a33c7 100644
--- a/src/plugins/Engines/mplayer/mplayerenginefactory.h
+++ b/src/plugins/Engines/mplayer/mplayerenginefactory.h
@@ -33,7 +33,7 @@ public:
bool supports(const QString &source) const;
AbstractEngine *create(QObject *parent = 0);
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/Engines/mplayer/mplayermetadatamodel.cpp b/src/plugins/Engines/mplayer/mplayermetadatamodel.cpp
index efac4af80..f11cc9b75 100644
--- a/src/plugins/Engines/mplayer/mplayermetadatamodel.cpp
+++ b/src/plugins/Engines/mplayer/mplayermetadatamodel.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009 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 *
@@ -24,18 +24,19 @@
#include <QProcess>
#include "mplayermetadatamodel.h"
-MplayerMetaDataModel::MplayerMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent)
+MplayerMetaDataModel::MplayerMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(true, parent)
{
m_path = path;
+ setDialogHints(MetaDataModel::COMPLETE_PROPERTY_LIST);
}
MplayerMetaDataModel::~MplayerMetaDataModel()
{}
-QHash<QString, QString> MplayerMetaDataModel::audioProperties()
+QList<MetaDataItem> MplayerMetaDataModel::extraProperties() const
{
- QHash<QString, QString> ap;
- ap.insert(tr("Size"), QString("%1 ").arg(QFileInfo(m_path).size ()/1024)+tr("KB"));
+ QList<MetaDataItem> ep;
+ ep << MetaDataItem(tr("Size"), tr("%1 KiB").arg(QFileInfo(m_path).size ()/1024));
//regular expressions
QRegExp rx_id_length("^ID_LENGTH=([0-9,.]+)*");
QRegExp rx_id_demuxer("^ID_DEMUXER=(.*)");
@@ -72,34 +73,34 @@ QHash<QString, QString> MplayerMetaDataModel::audioProperties()
{
//general info
if (rx_id_length.indexIn(line) > -1)
- ap.insert(tr("Length"),rx_id_length.cap(1)); //TODO use hh:mm:ss format
+ ep << MetaDataItem(tr("Length"),rx_id_length.cap(1)); //TODO use hh:mm:ss format
else if (rx_id_demuxer.indexIn(line) > -1)
- ap.insert(tr("Demuxer"), rx_id_demuxer.cap(1));
+ ep << MetaDataItem(tr("Demuxer"), rx_id_demuxer.cap(1));
//video info
else if (rx_id_video_format.indexIn(line) > -1)
- ap.insert(tr("Video format"), rx_id_video_format.cap(1));
+ ep << MetaDataItem(tr("Video format"), rx_id_video_format.cap(1));
else if (rx_id_video_fps.indexIn(line) > -1)
- ap.insert(tr("FPS"), rx_id_video_fps.cap(1));
+ ep << MetaDataItem(tr("FPS"), rx_id_video_fps.cap(1));
else if (rx_id_video_codec.indexIn(line) > -1)
- ap.insert(tr("Video codec"), rx_id_video_codec.cap(1));
+ ep << MetaDataItem(tr("Video codec"), rx_id_video_codec.cap(1));
else if (rx_id_video_aspect.indexIn(line) > -1)
- ap.insert(tr("Aspect ratio"),rx_id_video_aspect.cap(1));
+ ep << MetaDataItem(tr("Aspect ratio"),rx_id_video_aspect.cap(1));
else if (rx_id_video_bitrate.indexIn(line) > -1)
- ap.insert(tr("Video bitrate"), rx_id_video_bitrate.cap(1));
+ ep << MetaDataItem(tr("Video bitrate"), rx_id_video_bitrate.cap(1));
else if (rx_id_width.indexIn(line) > -1)
width = rx_id_width.cap(1).toInt();
else if (rx_id_height.indexIn(line) > -1)
height = rx_id_height.cap(1).toInt();
//audio info
else if (rx_id_audio_codec.indexIn(line) > -1)
- ap.insert(tr("Audio codec"),rx_id_audio_codec.cap(1));
+ ep << MetaDataItem(tr("Audio codec"),rx_id_audio_codec.cap(1));
else if (rx_id_audio_rate.indexIn(line) > -1)
- ap.insert(tr("Sample rate"), rx_id_audio_rate.cap(1));
+ ep << MetaDataItem(tr("Sample rate"), rx_id_audio_rate.cap(1));
else if (rx_id_audio_bitrate.indexIn(line) > -1)
- ap.insert(tr("Audio bitrate"), rx_id_audio_bitrate.cap(1));
+ ep << MetaDataItem(tr("Audio bitrate"), rx_id_audio_bitrate.cap(1));
else if (rx_id_audio_nch.indexIn(line) > -1)
- ap.insert(tr("Channels"), rx_id_audio_nch.cap(1));
+ ep << MetaDataItem(tr("Channels"), rx_id_audio_nch.cap(1));
}
- ap.insert(tr("Resolution"), QString("%1x%2").arg(width).arg(height));
- return ap;
+ ep << MetaDataItem(tr("Resolution"), QString("%1x%2").arg(width).arg(height));
+ return ep;
}
diff --git a/src/plugins/Engines/mplayer/mplayermetadatamodel.h b/src/plugins/Engines/mplayer/mplayermetadatamodel.h
index 2e8cb2100..604d633d1 100644
--- a/src/plugins/Engines/mplayer/mplayermetadatamodel.h
+++ b/src/plugins/Engines/mplayer/mplayermetadatamodel.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009 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 *
@@ -29,7 +29,7 @@ Q_OBJECT
public:
MplayerMetaDataModel(const QString &path, QObject *parent);
~MplayerMetaDataModel();
- QHash<QString, QString> audioProperties();
+ QList<MetaDataItem> extraProperties() const override;
private:
QString m_path;
diff --git a/src/plugins/Input/Input.pro b/src/plugins/Input/Input.pro
index 5bee4dc29..498c5ff60 100644
--- a/src/plugins/Input/Input.pro
+++ b/src/plugins/Input/Input.pro
@@ -1,14 +1,14 @@
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){
@@ -42,7 +42,7 @@ contains(CONFIG, SID_PLUGIN){
unix{
contains(CONFIG, AAC_PLUGIN){
-# SUBDIRS += aac
+ SUBDIRS += aac
}
@@ -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/aac/aac.pro b/src/plugins/Input/aac/aac.pro
index 5be2bf90a..f7d618b51 100644
--- a/src/plugins/Input/aac/aac.pro
+++ b/src/plugins/Input/aac/aac.pro
@@ -4,12 +4,10 @@ TARGET = $$PLUGINS_PREFIX/Input/aac
HEADERS += decoderaacfactory.h \
decoder_aac.h \
- aacfile.h \
- aacmetadatamodel.h
+ aacfile.h
SOURCES += decoder_aac.cpp \
decoderaacfactory.cpp \
- aacfile.cpp \
- aacmetadatamodel.cpp
+ aacfile.cpp
RESOURCES = translations/translations.qrc
diff --git a/src/plugins/Input/aac/aacmetadatamodel.cpp b/src/plugins/Input/aac/aacmetadatamodel.cpp
deleted file mode 100644
index c6adcc2c1..000000000
--- a/src/plugins/Input/aac/aacmetadatamodel.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2009-2018 by Ilya Kotov *
- * forkotov02@ya.ru *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
- ***************************************************************************/
-
-#include <QFile>
-#include "aacfile.h"
-#include "aacmetadatamodel.h"
-
-AACMetaDataModel::AACMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent)
-{
- m_path = path;
-}
-
-AACMetaDataModel::~AACMetaDataModel()
-{}
-
-QHash<QString, QString> AACMetaDataModel::audioProperties()
-{
- QHash<QString, QString> ap;
- QFile input(m_path);
- if (!input.open(QIODevice::ReadOnly))
- return ap;
- AACFile f(&input);
- QString text;
- text = QString("%1").arg(f.duration()/60000);
- text +=":"+QString("%1").arg((f.duration()/1000)%60,2,10,QChar('0'));
- ap.insert(tr("Length"), text);
- text = QString("%1").arg(f.samplerate());
- ap.insert(tr("Sample rate"), text+" "+tr("Hz"));
- text = QString("%1").arg(f.bitrate());
- ap.insert(tr("Bitrate"), text+" "+tr("kbps"));
- text = QString("%1 "+tr("KB")).arg(input.size()/1024);
- ap.insert(tr("File size"), text);
- return ap;
-}
diff --git a/src/plugins/Input/aac/aacmetadatamodel.h b/src/plugins/Input/aac/aacmetadatamodel.h
deleted file mode 100644
index 1a07b2dea..000000000
--- a/src/plugins/Input/aac/aacmetadatamodel.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2009-2018 by Ilya Kotov *
- * forkotov02@ya.ru *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
- ***************************************************************************/
-
-#ifndef AACMETADATAMODEL_H
-#define AACMETADATAMODEL_H
-
-#include <qmmp/metadatamodel.h>
-
-class AACMetaDataModel : public MetaDataModel
-{
-Q_OBJECT
-public:
- AACMetaDataModel(const QString &path, QObject *parent);
- ~AACMetaDataModel();
- QHash<QString, QString> audioProperties();
-
-private:
- QString m_path;
-};
-
-#endif // AACMETADATAMODEL_H
diff --git a/src/plugins/Input/aac/decoderaacfactory.cpp b/src/plugins/Input/aac/decoderaacfactory.cpp
index ef185f012..1589f9551 100644
--- a/src/plugins/Input/aac/decoderaacfactory.cpp
+++ b/src/plugins/Input/aac/decoderaacfactory.cpp
@@ -21,7 +21,6 @@
#include <QFile>
#include <QMessageBox>
#include "aacfile.h"
-#include "aacmetadatamodel.h"
#include "decoder_aac.h"
#include "decoderaacfactory.h"
@@ -89,9 +88,12 @@ QList<TrackInfo *> DecoderAACFactory::createPlayList(const QString &path, TrackI
return QList<TrackInfo*>() << info;
}
-MetaDataModel* DecoderAACFactory::createMetaDataModel(const QString &path, QObject *parent)
+MetaDataModel* DecoderAACFactory::createMetaDataModel(const QString &path, bool readOnly, QObject *parent)
{
- return new AACMetaDataModel(path, parent);
+ Q_UNUSED(path);
+ Q_UNUSED(readOnly);
+ Q_UNUSED(parent);
+ return 0;
}
void DecoderAACFactory::showSettings(QWidget *)
diff --git a/src/plugins/Input/aac/decoderaacfactory.h b/src/plugins/Input/aac/decoderaacfactory.h
index 1ddb25e68..59afe89b2 100644
--- a/src/plugins/Input/aac/decoderaacfactory.h
+++ b/src/plugins/Input/aac/decoderaacfactory.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 = true, QObject *parent = 0);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
QString translation() const;
diff --git a/src/plugins/Input/archive/archive.pro b/src/plugins/Input/archive/archive.pro
index a96f0e6b7..fc07b36ed 100644
--- a/src/plugins/Input/archive/archive.pro
+++ b/src/plugins/Input/archive/archive.pro
@@ -6,15 +6,13 @@ HEADERS += \
archiveinputdevice.h \
decoderarchivefactory.h \
decoder_archive.h \
- archivetagreader.h \
- archivemetadatamodel.h
+ archivetagreader.h
SOURCES += \
archiveinputdevice.cpp \
decoderarchivefactory.cpp \
decoder_archive.cpp \
- archivetagreader.cpp \
- archivemetadatamodel.cpp
+ archivetagreader.cpp
RESOURCES = translations/translations.qrc
diff --git a/src/plugins/Input/archive/archivemetadatamodel.cpp b/src/plugins/Input/archive/archivemetadatamodel.cpp
deleted file mode 100644
index 6509d3ca9..000000000
--- a/src/plugins/Input/archive/archivemetadatamodel.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2016 by Ilya Kotov *
- * forkotov02@ya.ru *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
- ***************************************************************************/
-
-#include "archiveinputdevice.h"
-#include "archivetagreader.h"
-#include "archivemetadatamodel.h"
-
-ArchiveMetaDataModel::ArchiveMetaDataModel(const QString &url, QObject *parent) :
- MetaDataModel(parent)
-{
- m_reader = 0;
- m_input = 0;
- m_url = url;
-}
-
-ArchiveMetaDataModel::~ArchiveMetaDataModel()
-{
- if(m_reader)
- delete m_reader;
- if(m_input)
- delete m_input;
-}
-
-QHash<QString, QString> ArchiveMetaDataModel::audioProperties()
-{
- if(!m_input)
- {
- m_input = new ArchiveInputDevice(m_url);
- if(m_input->isOpen())
- m_reader = new ArchiveTagReader(m_input, m_url);
- }
-
- QHash <QString, QString> ap;
- if(m_reader && m_reader->audioProperties())
- {
- TagLib::AudioProperties *p = m_reader->audioProperties();
- ap.insert(tr("Length"), QString("%1:%2").arg(p->length()/60).arg(p->length()%60, 2, 10, QChar('0')));
- ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(p->sampleRate()));
- ap.insert(tr("Channels"), QString("%1").arg(p->channels()));
- ap.insert(tr("Bitrate"), QString("%1 " + tr("kbps")).arg(p->bitrate()));
- ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(m_input->size()/1024));
- }
- return ap;
-}
diff --git a/src/plugins/Input/archive/archivemetadatamodel.h b/src/plugins/Input/archive/archivemetadatamodel.h
deleted file mode 100644
index b034ae7da..000000000
--- a/src/plugins/Input/archive/archivemetadatamodel.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2016 by Ilya Kotov *
- * forkotov02@ya.ru *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
- ***************************************************************************/
-
-#ifndef ARCHIVEMETADATAMODEL_H
-#define ARCHIVEMETADATAMODEL_H
-
-#include <QObject>
-#include <qmmp/metadatamodel.h>
-
-class ArchiveInputDevice;
-class ArchiveTagReader;
-
-class ArchiveMetaDataModel : public MetaDataModel
-{
- Q_OBJECT
-public:
- explicit ArchiveMetaDataModel(const QString &url, QObject *parent = 0);
- virtual ~ArchiveMetaDataModel();
-
- QHash<QString, QString> audioProperties();
-
-private:
- ArchiveInputDevice *m_input;
- ArchiveTagReader *m_reader;
- QString m_url;
-
-};
-
-#endif // ARCHIVEMETADATAMODEL_H
diff --git a/src/plugins/Input/archive/decoderarchivefactory.cpp b/src/plugins/Input/archive/decoderarchivefactory.cpp
index 8ebaefc00..3f64fff6d 100644
--- a/src/plugins/Input/archive/decoderarchivefactory.cpp
+++ b/src/plugins/Input/archive/decoderarchivefactory.cpp
@@ -25,7 +25,6 @@
#include "decoder_archive.h"
#include "archivetagreader.h"
#include "archiveinputdevice.h"
-#include "archivemetadatamodel.h"
#include "decoderarchivefactory.h"
// DecoderArchiveFactory
@@ -123,6 +122,7 @@ QList<TrackInfo *> DecoderArchiveFactory::createPlayList(const QString &path, Tr
list.last()->setValue(Qmmp::BITRATE, ap->bitrate());
list.last()->setValue(Qmmp::SAMPLERATE, ap->sampleRate());
list.last()->setValue(Qmmp::CHANNELS, ap->channels());
+ list.last()->setValue(Qmmp::FILE_SIZE, dev.size());
}
if(ap)
@@ -136,9 +136,12 @@ QList<TrackInfo *> DecoderArchiveFactory::createPlayList(const QString &path, Tr
return list;
}
-MetaDataModel* DecoderArchiveFactory::createMetaDataModel(const QString &path, QObject *parent)
+MetaDataModel* DecoderArchiveFactory::createMetaDataModel(const QString &path, bool readOnly, QObject *parent)
{
- return new ArchiveMetaDataModel(path, parent);
+ Q_UNUSED(path);
+ Q_UNUSED(readOnly);
+ Q_UNUSED(parent);
+ return 0;
}
void DecoderArchiveFactory::showSettings(QWidget *)
diff --git a/src/plugins/Input/archive/decoderarchivefactory.h b/src/plugins/Input/archive/decoderarchivefactory.h
index e56b8837f..554186fc6 100644
--- a/src/plugins/Input/archive/decoderarchivefactory.h
+++ b/src/plugins/Input/archive/decoderarchivefactory.h
@@ -34,7 +34,7 @@ public:
DecoderProperties properties() const;
Decoder *create(const QString &url, 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 = true, QObject *parent = 0);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
QString translation() const;
diff --git a/src/plugins/Input/cue/cuemetadatamodel.cpp b/src/plugins/Input/cue/cuemetadatamodel.cpp
index d875ad993..366df20af 100644
--- a/src/plugins/Input/cue/cuemetadatamodel.cpp
+++ b/src/plugins/Input/cue/cuemetadatamodel.cpp
@@ -22,7 +22,7 @@
#include "cueparser.h"
#include "cuemetadatamodel.h"
-CUEMetaDataModel::CUEMetaDataModel(const QString &url, QObject *parent) : MetaDataModel(parent)
+CUEMetaDataModel::CUEMetaDataModel(const QString &url, QObject *parent) : MetaDataModel(true, parent)
{
m_parser = new CUEParser(url);
if (m_parser->count() == 0)
@@ -39,19 +39,19 @@ CUEMetaDataModel::~CUEMetaDataModel()
delete m_parser;
}
-QHash<QString, QString> CUEMetaDataModel::audioProperties()
+QList<MetaDataItem> CUEMetaDataModel::extraProperties() const
{
- QHash <QString, QString> ap;
+ QList<MetaDataItem> ep;
MetaDataModel *model = MetaDataManager::instance()->createMetaDataModel(m_path);
if(model)
{
- ap = model->audioProperties();
- model->deleteLater();
+ ep = model->extraProperties();
+ delete model;
}
- return ap;
+ return ep;
}
-QString CUEMetaDataModel::coverPath()
+QString CUEMetaDataModel::coverPath() const
{
return MetaDataManager::instance()->findCoverFile(m_path);
}
diff --git a/src/plugins/Input/cue/cuemetadatamodel.h b/src/plugins/Input/cue/cuemetadatamodel.h
index cb0af08d8..eb448be0d 100644
--- a/src/plugins/Input/cue/cuemetadatamodel.h
+++ b/src/plugins/Input/cue/cuemetadatamodel.h
@@ -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 *
@@ -31,8 +31,8 @@ Q_OBJECT
public:
CUEMetaDataModel(const QString &url, QObject *parent);
~CUEMetaDataModel();
- QHash<QString, QString> audioProperties();
- QString coverPath();
+ QList<MetaDataItem> extraProperties() const override;
+ QString coverPath() const override;
private:
CUEParser *m_parser;
diff --git a/src/plugins/Input/cue/decodercuefactory.cpp b/src/plugins/Input/cue/decodercuefactory.cpp
index 285a4776d..e3a118cdf 100644
--- a/src/plugins/Input/cue/decodercuefactory.cpp
+++ b/src/plugins/Input/cue/decodercuefactory.cpp
@@ -74,8 +74,9 @@ QList<TrackInfo *> DecoderCUEFactory::createPlayList(const QString &path, TrackI
}
}
-MetaDataModel* DecoderCUEFactory::createMetaDataModel(const QString &path, QObject *parent)
+MetaDataModel* DecoderCUEFactory::createMetaDataModel(const QString &path, bool readOnly, QObject *parent)
{
+ Q_UNUSED(readOnly);
return path.startsWith("cue://") ? new CUEMetaDataModel(path, parent) : 0;
}
diff --git a/src/plugins/Input/cue/decodercuefactory.h b/src/plugins/Input/cue/decodercuefactory.h
index 10969afc0..2610bfd99 100644
--- a/src/plugins/Input/cue/decodercuefactory.h
+++ b/src/plugins/Input/cue/decodercuefactory.h
@@ -35,7 +35,7 @@ public:
DecoderProperties properties() const;
Decoder *create(const QString &, QIODevice *);
QList<TrackInfo *> createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *ignoredPaths);
- 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/flac/decoderflacfactory.cpp b/src/plugins/Input/flac/decoderflacfactory.cpp
index 78ea9608a..9de7a7c64 100644
--- a/src/plugins/Input/flac/decoderflacfactory.cpp
+++ b/src/plugins/Input/flac/decoderflacfactory.cpp
@@ -195,10 +195,10 @@ QList<TrackInfo*> DecoderFLACFactory::createPlayList(const QString &path, TrackI
return QList<TrackInfo *>() << info;
}
-MetaDataModel* DecoderFLACFactory::createMetaDataModel(const QString &path, QObject *parent)
+MetaDataModel* DecoderFLACFactory::createMetaDataModel(const QString &path, bool readOnly, QObject *parent)
{
if (!path.contains("://") || path.startsWith("flac://"))
- return new FLACMetaDataModel(path, parent);
+ return new FLACMetaDataModel(path, readOnly, parent);
else
return 0;
}
diff --git a/src/plugins/Input/flac/decoderflacfactory.h b/src/plugins/Input/flac/decoderflacfactory.h
index 3bad513f8..623fa4d33 100644
--- a/src/plugins/Input/flac/decoderflacfactory.h
+++ b/src/plugins/Input/flac/decoderflacfactory.h
@@ -34,7 +34,7 @@ public:
DecoderProperties properties() const;
Decoder *create(const QString &, QIODevice *);
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/flac/flacmetadatamodel.cpp b/src/plugins/Input/flac/flacmetadatamodel.cpp
index 33a37bdfa..80957de30 100644
--- a/src/plugins/Input/flac/flacmetadatamodel.cpp
+++ b/src/plugins/Input/flac/flacmetadatamodel.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,13 +22,15 @@
#include <taglib/tag.h>
#include <taglib/fileref.h>
#include <taglib/tmap.h>
+#include <taglib/id3v2framefactory.h>
#include <FLAC/all.h>
#include <qmmp/metadatamanager.h>
#include "flacmetadatamodel.h"
-FLACMetaDataModel::FLACMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent)
+FLACMetaDataModel::FLACMetaDataModel(const QString &path, bool readOnly, QObject *parent) : MetaDataModel(true, parent)
{
m_file = 0;
+ m_stream = 0;
if(path.startsWith("flac://"))
{
@@ -44,19 +46,24 @@ FLACMetaDataModel::FLACMetaDataModel(const QString &path, QObject *parent) : Met
if(m_path.endsWith(".flac", Qt::CaseInsensitive))
{
- TagLib::FLAC::File *f = new TagLib::FLAC::File(QStringToFileName(m_path));
+ m_stream = new TagLib::FileStream(QStringToFileName(m_path), readOnly);
+ TagLib::FLAC::File *f = new TagLib::FLAC::File(m_stream, TagLib::ID3v2::FrameFactory::instance());
tag = f->xiphComment();
m_file = f;
}
else if(m_path.endsWith(".oga", Qt::CaseInsensitive))
{
- TagLib::Ogg::FLAC::File *f = new TagLib::Ogg::FLAC::File(QStringToFileName(m_path));
+ m_stream = new TagLib::FileStream(QStringToFileName(m_path), readOnly);
+ TagLib::Ogg::FLAC::File *f = new TagLib::Ogg::FLAC::File(m_stream);
tag = f->tag();
m_file = f;
}
if(m_file && m_file->isValid() && !path.startsWith("flac://"))
+ {
+ setReadOnly(readOnly);
m_tags << new VorbisCommentModel(tag, m_file);
+ }
}
FLACMetaDataModel::~FLACMetaDataModel()
@@ -68,39 +75,16 @@ FLACMetaDataModel::~FLACMetaDataModel()
delete m_file;
m_file = 0;
}
+ if(m_stream)
+ delete m_stream;
}
-QHash<QString, QString> FLACMetaDataModel::audioProperties()
-{
- QHash<QString, QString> ap;
- TagLib::AudioProperties *taglib_ap = 0;
- qint64 size = 0;
-
- if(m_file && m_file->isValid())
- {
- taglib_ap = m_file->audioProperties();
- size = m_file->length();
- }
-
- if(taglib_ap)
- {
- QString text = QString("%1").arg(taglib_ap->length()/60);
- text +=":"+QString("%1").arg(taglib_ap->length()%60,2,10,QChar('0'));
- ap.insert(tr("Length"), text);
- ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(taglib_ap->sampleRate()));
- ap.insert(tr("Channels"), QString("%1").arg(taglib_ap->channels()));
- ap.insert(tr("Bitrate"), QString("%1 " + tr("kbps")).arg(taglib_ap->bitrate()));
- ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(size/1000));
- }
- return ap;
-}
-
-QList<TagModel* > FLACMetaDataModel::tags()
+QList<TagModel* > FLACMetaDataModel::tags() const
{
return m_tags;
}
-QPixmap FLACMetaDataModel::cover()
+QPixmap FLACMetaDataModel::cover() const
{
//embedded cover
QPixmap cover;
@@ -118,7 +102,7 @@ QPixmap FLACMetaDataModel::cover()
return cover;
}
-QString FLACMetaDataModel::coverPath()
+QString FLACMetaDataModel::coverPath() const
{
return MetaDataManager::instance()->findCoverFile(m_path);
}
diff --git a/src/plugins/Input/flac/flacmetadatamodel.h b/src/plugins/Input/flac/flacmetadatamodel.h
index 4dac83e2e..4116126a0 100644
--- a/src/plugins/Input/flac/flacmetadatamodel.h
+++ b/src/plugins/Input/flac/flacmetadatamodel.h
@@ -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 *
@@ -24,23 +24,24 @@
#include <taglib/flacfile.h>
#include <taglib/oggflacfile.h>
#include <taglib/xiphcomment.h>
+#include <taglib/tfilestream.h>
#include <qmmp/metadatamodel.h>
class FLACMetaDataModel : public MetaDataModel
{
Q_OBJECT
public:
- FLACMetaDataModel(const QString &path, QObject *parent);
+ FLACMetaDataModel(const QString &path, bool readOnly, QObject *parent);
~FLACMetaDataModel();
- QHash<QString, QString> audioProperties();
- QList<TagModel* > tags();
- QPixmap cover();
- QString coverPath();
+ QList<TagModel* > tags() const override;
+ QPixmap cover() const override;
+ QString coverPath() const override;
private:
QString m_path;
QList<TagModel* > m_tags;
TagLib::File *m_file;
+ TagLib::FileStream *m_stream;
};
class VorbisCommentModel : public TagModel
diff --git a/src/plugins/Input/sndfile/decodersndfilefactory.cpp b/src/plugins/Input/sndfile/decodersndfilefactory.cpp
index 7097fd87e..5d3a62179 100644
--- a/src/plugins/Input/sndfile/decodersndfilefactory.cpp
+++ b/src/plugins/Input/sndfile/decodersndfilefactory.cpp
@@ -208,7 +208,7 @@ QList<TrackInfo *> DecoderSndFileFactory::createPlayList(const QString &path, Tr
return QList<TrackInfo *>() << info;
}
-MetaDataModel* DecoderSndFileFactory::createMetaDataModel(const QString&, QObject *)
+MetaDataModel* DecoderSndFileFactory::createMetaDataModel(const QString&, bool, QObject *)
{
return 0;
}
diff --git a/src/plugins/Input/sndfile/decodersndfilefactory.h b/src/plugins/Input/sndfile/decodersndfilefactory.h
index f15cea73e..3da0b57dc 100644
--- a/src/plugins/Input/sndfile/decodersndfilefactory.h
+++ b/src/plugins/Input/sndfile/decodersndfilefactory.h
@@ -34,7 +34,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 = true, QObject *parent = 0);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
QString translation() const;
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;
diff --git a/src/qmmp/enginefactory.h b/src/qmmp/enginefactory.h
index 26301b466..a3bc441fa 100644
--- a/src/qmmp/enginefactory.h
+++ b/src/qmmp/enginefactory.h
@@ -93,7 +93,7 @@ public:
* @param parent Parent object.
* @return MetaDataModel pointer.
*/
- virtual MetaDataModel* createMetaDataModel(const QString &path, QObject *parent = 0) = 0;
+ virtual MetaDataModel* createMetaDataModel(const QString &path, bool readOnly = true, QObject *parent = 0) = 0;
/*!
* Shows settings dialog.
* @param parent Parent widget.