diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-05-29 20:19:05 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-05-29 20:19:05 +0000 |
| commit | 9d81081004c265c4c27af54da2361d75aa3f789c (patch) | |
| tree | b0b41168445423d4d7eb450c203aa6a785e9e1fb | |
| parent | ad050bfb8b19d968fb6c6fa4645b92a11e885729 (diff) | |
| download | qmmp-9d81081004c265c4c27af54da2361d75aa3f789c.tar.gz qmmp-9d81081004c265c4c27af54da2361d75aa3f789c.tar.bz2 qmmp-9d81081004c265c4c27af54da2361d75aa3f789c.zip | |
enabled modplug plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7973 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/plugins/Input/Input.pro | 2 | ||||
| -rw-r--r-- | src/plugins/Input/modplug/decodermodplugfactory.cpp | 57 | ||||
| -rw-r--r-- | src/plugins/Input/modplug/decodermodplugfactory.h | 16 | ||||
| -rw-r--r-- | src/plugins/Input/modplug/modplugmetadatamodel.cpp | 125 | ||||
| -rw-r--r-- | src/plugins/Input/modplug/modplugmetadatamodel.h | 3 |
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; |
