diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-05-02 18:03:52 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-05-02 18:03:52 +0000 |
| commit | d25fdc99931a393a19a78d8fdc6638322d3ca580 (patch) | |
| tree | 01ebd8caee3f27525d8e25078ea85e41bf8cea50 /src/plugins/Input/cue/cueparser.cpp | |
| parent | 0f7c8bfbce24019d41a2e0de795d4f7e435c4aca (diff) | |
| download | qmmp-d25fdc99931a393a19a78d8fdc6638322d3ca580.tar.gz qmmp-d25fdc99931a393a19a78d8fdc6638322d3ca580.tar.bz2 qmmp-d25fdc99931a393a19a78d8fdc6638322d3ca580.zip | |
added cue with several files support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@926 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/cue/cueparser.cpp')
| -rw-r--r-- | src/plugins/Input/cue/cueparser.cpp | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/plugins/Input/cue/cueparser.cpp b/src/plugins/Input/cue/cueparser.cpp index 1c4df54e5..2a85d96a1 100644 --- a/src/plugins/Input/cue/cueparser.cpp +++ b/src/plugins/Input/cue/cueparser.cpp @@ -74,12 +74,13 @@ CUEParser::CUEParser(const QString &fileName) else if (words[0] == "TRACK") { QString path = fileName; - path.replace("%", QString(QUrl::toPercentEncoding("%"))); + path.replace("%", QString(QUrl::toPercentEncoding("%"))); //replace special symbols path.replace("#", QString(QUrl::toPercentEncoding("#"))); FileInfo info("cue://" + path + QString("#%1").arg(words[1].toInt())); info.setMetaData(Qmmp::TRACK, words[1].toInt()); m_infoList << info; m_offsets << 0; + m_files << m_filePath; } else if (words[0] == "INDEX") { @@ -102,7 +103,20 @@ CUEParser::CUEParser(const QString &fileName) } //calculate length for (int i = 0; i < m_infoList.size() - 1; ++i) - m_infoList[i].setLength(m_infoList[i+1].length() - m_infoList[i].length()); + { + if (m_files[i+1] == m_files[i]) + m_infoList[i].setLength(m_infoList[i+1].length() - m_infoList[i].length()); + else + { + QList <FileInfo *> f_list = Decoder::createPlayList(m_filePath, FALSE); + qint64 l = f_list.isEmpty() ? 0 : f_list.at(0)->length() * 1000; + if (l > m_infoList[i].length()) + m_infoList[i].setLength(l - m_infoList[i].length()); + else + m_infoList[i].setLength(0); + } + } + //calculate last item length QList <FileInfo *> f_list = Decoder::createPlayList(m_filePath, FALSE); qint64 l = f_list.isEmpty() ? 0 : f_list.at(0)->length() * 1000; @@ -139,9 +153,9 @@ QList<FileInfo*> CUEParser::createPlayList() return list; } -const QString CUEParser::filePath() +const QString CUEParser::filePath(int track) { - return m_filePath; + return (track <= m_files.size()) ? m_files[track] : QString(); } qint64 CUEParser::offset(int track) |
