aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/Input/Input.pro2
-rw-r--r--src/plugins/Input/modplug/decodermodplugfactory.cpp57
-rw-r--r--src/plugins/Input/modplug/decodermodplugfactory.h16
-rw-r--r--src/plugins/Input/modplug/modplugmetadatamodel.cpp125
-rw-r--r--src/plugins/Input/modplug/modplugmetadatamodel.h3
5 files changed, 96 insertions, 107 deletions
diff --git a/src/plugins/Input/Input.pro b/src/plugins/Input/Input.pro
index 955577b18..6298e042a 100644
--- a/src/plugins/Input/Input.pro
+++ b/src/plugins/Input/Input.pro
@@ -16,7 +16,7 @@ contains(CONFIG, MUSEPACK_PLUGIN){
}
contains(CONFIG, MODPLUG_PLUGIN){
- #SUBDIRS += modplug
+ SUBDIRS += modplug
}
contains(CONFIG, FFMPEG_PLUGIN){
diff --git a/src/plugins/Input/modplug/decodermodplugfactory.cpp b/src/plugins/Input/modplug/decodermodplugfactory.cpp
index d52718133..93de4bb90 100644
--- a/src/plugins/Input/modplug/decodermodplugfactory.cpp
+++ b/src/plugins/Input/modplug/decodermodplugfactory.cpp
@@ -66,40 +66,57 @@ Decoder *DecoderModPlugFactory::create(const QString &path, QIODevice *input)
return new DecoderModPlug(path);
}
-QList<FileInfo *> DecoderModPlugFactory::createPlayList(const QString &fileName, bool useMetaData, QStringList *)
+QList<TrackInfo *> DecoderModPlugFactory::createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *)
{
- QList <FileInfo*> list;
+ QList <TrackInfo*> list;
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
- if (!useMetaData || settings.value("UseFileName", false).toBool())
- {
- list << new FileInfo(fileName);
- list.at(0)->setMetaData(Qmmp::TITLE, fileName.section('/',-1));
- return list;
- }
- ArchiveReader reader(0);
+ bool useFileName = settings.value("UseFileName", false).toBool();
+
QByteArray buffer;
- if (reader.isSupported(fileName))
+
+ ArchiveReader reader(0);
+ if (reader.isSupported(path))
{
- buffer = reader.unpack(fileName);
+ buffer = reader.unpack(path);
}
else
{
- QFile file(fileName);
+ QFile file(path);
if (!file.open(QIODevice::ReadOnly))
{
- qWarning("DecoderModPlugFactory: error: %s", qPrintable(file.errorString ()));
+ qWarning("DecoderModPlugFactory: error: %s", qPrintable(file.errorString()));
return list;
}
buffer = file.readAll();
file.close();
}
- CSoundFile* soundFile = new CSoundFile();
- soundFile->Create((uchar*) buffer.data(), buffer.size()+1);
- list << new FileInfo(fileName);
- list.at(0)->setLength((int) soundFile->GetSongTime());
- list.at(0)->setMetaData(Qmmp::TITLE, QString::fromUtf8(soundFile->GetTitle()));
- soundFile->Destroy();
- delete soundFile;
+
+ if(!buffer.isEmpty())
+ {
+ CSoundFile *soundFile = new CSoundFile();
+ soundFile->Create((uchar*) buffer.data(), buffer.size() + 1);
+ TrackInfo *info = new TrackInfo(path);
+ info->setDuration((qint64)soundFile->GetSongTime() * 1000);
+
+ if(parts & TrackInfo::MetaData)
+ {
+ info->setValue(Qmmp::TITLE, useFileName ? path.section('/',-1) :
+ QString::fromUtf8(soundFile->GetTitle()));
+ }
+
+ if(parts & TrackInfo::Properties)
+ {
+ //info->setValue(Qmmp::BITRATE);
+ //info->setValue(Qmmp::SAMPLERATE);
+ //info->setValue(Qmmp::CHANNELS);
+ //info->setValue(Qmmp::BITS_PER_SAMPLE);
+ info->setValue(Qmmp::FORMAT_NAME, ModPlugMetaDataModel::getTypeName(soundFile->GetType()));
+ }
+
+ list << info;
+ soundFile->Destroy();
+ delete soundFile;
+ }
return list;
}
diff --git a/src/plugins/Input/modplug/decodermodplugfactory.h b/src/plugins/Input/modplug/decodermodplugfactory.h
index 6cb255903..41ee51d01 100644
--- a/src/plugins/Input/modplug/decodermodplugfactory.h
+++ b/src/plugins/Input/modplug/decodermodplugfactory.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008-2016 by Ilya Kotov *
+ * Copyright (C) 2008-2018 by Ilya Kotov *
* forkotov02@ya.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -20,19 +20,9 @@
#ifndef DECODERMODPLUGFACTORY_H
#define DECODERMODPLUGFACTORY_H
-#include <QObject>
-#include <QString>
-#include <QIODevice>
-#include <QWidget>
-
-#include <qmmp/decoder.h>
-#include <qmmp/output.h>
#include <qmmp/decoderfactory.h>
-#include <qmmp/fileinfo.h>
-
-class DecoderModPlugFactory : public QObject,
- DecoderFactory
+class DecoderModPlugFactory : public QObject, DecoderFactory
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qmmp.qmmp.DecoderFactoryInterface.1.0")
@@ -42,7 +32,7 @@ public:
bool canDecode(QIODevice *input) const;
const DecoderProperties properties() const;
Decoder *create(const QString &, QIODevice *);
- QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData, QStringList *);
+ QList<TrackInfo *> createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *);
MetaDataModel* createMetaDataModel(const QString &path, QObject *parent = 0);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
diff --git a/src/plugins/Input/modplug/modplugmetadatamodel.cpp b/src/plugins/Input/modplug/modplugmetadatamodel.cpp
index 9bcee580b..fded36966 100644
--- a/src/plugins/Input/modplug/modplugmetadatamodel.cpp
+++ b/src/plugins/Input/modplug/modplugmetadatamodel.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 *
@@ -69,78 +69,8 @@ QHash<QString, QString> ModPlugMetaDataModel::audioProperties()
return ap;
ap.insert(tr("File name"), m_path.section('/',-1));
- QString text;
- switch(m_soundFile->GetType())
- {
- case MOD_TYPE_MOD:
- text += "ProTracker";
- break;
- case MOD_TYPE_S3M:
- text += "Scream Tracker 3";
- break;
- case MOD_TYPE_XM:
- text += "Fast Tracker 2";
- break;
- case MOD_TYPE_IT:
- text += "Impulse Tracker";
- break;
- case MOD_TYPE_MED:
- text += "OctaMed";
- break;
- case MOD_TYPE_MTM:
- text += "MTM";
- break;
- case MOD_TYPE_669:
- text += "669 Composer / UNIS 669";
- break;
- case MOD_TYPE_ULT:
- text += "ULT";
- break;
- case MOD_TYPE_STM:
- text += "Scream Tracker";
- break;
- case MOD_TYPE_FAR:
- text += "Farandole";
- break;
- case MOD_TYPE_AMF:
- text += "ASYLUM Music Format";
- break;
- case MOD_TYPE_AMS:
- text += "AMS module";
- break;
- case MOD_TYPE_DSM:
- text += "DSIK Internal Format";
- break;
- case MOD_TYPE_MDL:
- text += "DigiTracker";
- break;
- case MOD_TYPE_OKT:
- text += "Oktalyzer";
- break;
- case MOD_TYPE_DMF:
- text += "Delusion Digital Music Fileformat (X-Tracker)";
- break;
- case MOD_TYPE_PTM:
- text += "PolyTracker";
- break;
- case MOD_TYPE_DBM:
- text += "DigiBooster Pro";
- break;
- case MOD_TYPE_MT2:
- text += "MT2";
- break;
- case MOD_TYPE_AMF0:
- text += "AMF0";
- break;
- case MOD_TYPE_PSM:
- text += "PSM";
- break;
- default:
- text += "Unknown";
- break;
- }
+ 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'));
@@ -185,3 +115,54 @@ QHash<QString, QString> ModPlugMetaDataModel::descriptions()
desc.insert(tr("Comment"), QString::fromUtf8(message).trimmed ());
return desc;
}
+
+QString ModPlugMetaDataModel::getTypeName(quint32 type)
+{
+ switch (type) {
+ case MOD_TYPE_MOD:
+ return "ProTracker";
+ case MOD_TYPE_S3M:
+ return "Scream Tracker 3";
+ case MOD_TYPE_XM:
+ return "Fast Tracker 2";
+ case MOD_TYPE_IT:
+ return "Impulse Tracker";
+ case MOD_TYPE_MED:
+ return "OctaMed";
+ case MOD_TYPE_MTM:
+ return "MTM";
+ case MOD_TYPE_669:
+ return "669 Composer / UNIS 669";
+ case MOD_TYPE_ULT:
+ return "ULT";
+ case MOD_TYPE_STM:
+ return "Scream Tracker";
+ case MOD_TYPE_FAR:
+ return "Farandole";
+ case MOD_TYPE_AMF:
+ return "ASYLUM Music Format";
+ case MOD_TYPE_AMS:
+ return "AMS module";
+ case MOD_TYPE_DSM:
+ return "DSIK Internal Format";
+ case MOD_TYPE_MDL:
+ return "DigiTracker";
+ case MOD_TYPE_OKT:
+ return "Oktalyzer";
+ case MOD_TYPE_DMF:
+ return "Delusion Digital Music Fileformat (X-Tracker)";
+ case MOD_TYPE_PTM:
+ return "PolyTracker";
+ case MOD_TYPE_DBM:
+ return "DigiBooster Pro";
+ case MOD_TYPE_MT2:
+ return "MT2";
+ case MOD_TYPE_AMF0:
+ return "AMF0";
+ case MOD_TYPE_PSM:
+ return "PSM";
+ default:
+ ;
+ }
+ return "Unknown";
+}
diff --git a/src/plugins/Input/modplug/modplugmetadatamodel.h b/src/plugins/Input/modplug/modplugmetadatamodel.h
index 8ac2e8a22..d20306480 100644
--- a/src/plugins/Input/modplug/modplugmetadatamodel.h
+++ b/src/plugins/Input/modplug/modplugmetadatamodel.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 *
@@ -34,6 +34,7 @@ public:
~ModPlugMetaDataModel();
QHash<QString, QString> audioProperties();
QHash<QString, QString> descriptions();
+ static QString getTypeName(quint32 type);
private:
CSoundFile* m_soundFile;