From 986b284179715143736251e6507d4af089306993 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Sat, 27 Apr 2013 16:03:01 +0000 Subject: 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 --- src/plugins/Input/sid/decodersidfactory.cpp | 34 ++++++++++++++++++----------- 1 file changed, 21 insertions(+), 13 deletions(-) (limited to 'src/plugins/Input/sid/decodersidfactory.cpp') 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 #include #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 DecoderSIDFactory::createPlayList(const QString &fileName, bool useMetaData) { - QList list; - FileInfo *info = new FileInfo(fileName); - if(useMetaData) + SIDHelper helper; + helper.load(fileName); + QList 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() << info; } - list << info; return list; } -- cgit v1.2.3-13-gbd6f