diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-04-27 16:03:01 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-04-27 16:03:01 +0000 |
| commit | 986b284179715143736251e6507d4af089306993 (patch) | |
| tree | b9c46c3aafa324eb7f9e1f526dd48942c7ee08d2 /src/plugins/Input/sid/decodersidfactory.cpp | |
| parent | bf1c573857cae1b1c24a4a6ad8b960d78de99658 (diff) | |
| download | qmmp-986b284179715143736251e6507d4af089306993.tar.gz qmmp-986b284179715143736251e6507d4af089306993.tar.bz2 qmmp-986b284179715143736251e6507d4af089306993.zip | |
sid plugin: added multiple tracks support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3412 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/sid/decodersidfactory.cpp')
| -rw-r--r-- | src/plugins/Input/sid/decodersidfactory.cpp | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/src/plugins/Input/sid/decodersidfactory.cpp b/src/plugins/Input/sid/decodersidfactory.cpp index 5bb703c5c..50aa92c7a 100644 --- a/src/plugins/Input/sid/decodersidfactory.cpp +++ b/src/plugins/Input/sid/decodersidfactory.cpp @@ -23,6 +23,7 @@ #include <sidplayfp/SidTune.h> #include <sidplayfp/SidTuneInfo.h> #include "decoder_sid.h" +#include "sidhelper.h" #include "decodersidfactory.h" // DecoderSIDFactory @@ -56,30 +57,37 @@ const DecoderProperties DecoderSIDFactory::properties() const properties.shortName = "sid"; properties.hasAbout = true; properties.hasSettings = false; - properties.noInput = false; + properties.noInput = true; + properties.protocols << "sid"; return properties; } Decoder *DecoderSIDFactory::create(const QString &path, QIODevice *input) { - Q_UNUSED(path); - return new DecoderSID(input); + Q_UNUSED(input); + return new DecoderSID(path); } QList<FileInfo *> DecoderSIDFactory::createPlayList(const QString &fileName, bool useMetaData) { - QList <FileInfo*> list; - FileInfo *info = new FileInfo(fileName); - if(useMetaData) + SIDHelper helper; + helper.load(fileName); + QList <FileInfo*> list = helper.createPlayList(useMetaData); + if(list.isEmpty()) + return list; + if(fileName.contains("://")) //is it url? { - SidTune *tune = new SidTune(qPrintable(fileName)); - const SidTuneInfo *tune_info = tune->getInfo(); - info->setMetaData(Qmmp::TITLE, tune_info->infoString(0)); - info->setMetaData(Qmmp::ARTIST, tune_info->infoString(1)); - info->setMetaData(Qmmp::COMMENT, tune_info->commentString(0)); - delete tune; + int track = fileName.section("#", -1).toInt(); + if(track > list.count() || track < 1) + { + qDeleteAll(list); + list.clear(); + return list; + } + FileInfo *info = list.takeAt(track - 1); + qDeleteAll(list); + return QList<FileInfo *>() << info; } - list << info; return list; } |
