diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-05-27 11:17:37 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-05-27 11:17:37 +0000 |
| commit | 833d350aee61c16a2472b3f491f4cc6b71b5c40a (patch) | |
| tree | 38d2961b84ff52e38cf1a2018cd39723d20df360 /src/plugins/Input/cue/cueparser.cpp | |
| parent | aabdc5d988cc2a5b4232dece2a358dfcc3981a7b (diff) | |
| download | qmmp-833d350aee61c16a2472b3f491f4cc6b71b5c40a.tar.gz qmmp-833d350aee61c16a2472b3f491f4cc6b71b5c40a.tar.bz2 qmmp-833d350aee61c16a2472b3f491f4cc6b71b5c40a.zip | |
enabled cue plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7966 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/cue/cueparser.cpp')
| -rw-r--r-- | src/plugins/Input/cue/cueparser.cpp | 73 |
1 files changed, 37 insertions, 36 deletions
diff --git a/src/plugins/Input/cue/cueparser.cpp b/src/plugins/Input/cue/cueparser.cpp index db3750f87..b3b393c87 100644 --- a/src/plugins/Input/cue/cueparser.cpp +++ b/src/plugins/Input/cue/cueparser.cpp @@ -31,10 +31,10 @@ #endif #include "cueparser.h" -CUEParser::CUEParser(const QString &url) +CUEParser::CUEParser(const QString &path, TrackInfo::Parts parts) { - QString fileName = url; - if(url.contains("://")) + QString fileName = path; + if(path.contains("://")) { fileName.remove("cue://"); fileName.remove(QRegExp("#\\d+$")); @@ -98,32 +98,32 @@ CUEParser::CUEParser(const QString &url) if(m_tracks.isEmpty()) artist = words[1]; else - m_tracks.last()->info.setMetaData(Qmmp::ARTIST, words[1]); + m_tracks.last()->info.setValue(Qmmp::ARTIST, words[1]); } else if (words[0] == "TITLE") { if(m_tracks.isEmpty()) album = words[1]; else - m_tracks.last()->info.setMetaData(Qmmp::TITLE, words[1]); + m_tracks.last()->info.setValue(Qmmp::TITLE, words[1]); } else if (words[0] == "TRACK") { QString path = fileName; - FileInfo info("cue://" + path + QString("#%1").arg(words[1].toInt())); - info.setMetaData(Qmmp::TRACK, words[1].toInt()); - info.setMetaData(Qmmp::ALBUM, album); - info.setMetaData(Qmmp::GENRE, genre); - info.setMetaData(Qmmp::YEAR, date); - info.setMetaData(Qmmp::COMMENT, comment); - info.setMetaData(Qmmp::ARTIST, artist); - info.setMetaData(Qmmp::ALBUMARTIST, artist); + TrackInfo info("cue://" + path + QString("#%1").arg(words[1].toInt())); + info.setValue(Qmmp::TRACK, words[1].toInt()); + info.setValue(Qmmp::ALBUM, album); + info.setValue(Qmmp::GENRE, genre); + info.setValue(Qmmp::YEAR, date); + info.setValue(Qmmp::COMMENT, comment); + info.setValue(Qmmp::ARTIST, artist); + info.setValue(Qmmp::ALBUMARTIST, artist); + info.setValue(Qmmp::REPLAYGAIN_ALBUM_GAIN, album_gain); + info.setValue(Qmmp::REPLAYGAIN_ALBUM_PEAK, album_peak); m_tracks << new CUETrack; m_tracks.last()->info = info; m_tracks.last()->offset = 0; - m_tracks.last()->replayGain.insert(Qmmp::REPLAYGAIN_ALBUM_GAIN, album_gain); - m_tracks.last()->replayGain.insert(Qmmp::REPLAYGAIN_ALBUM_PEAK, album_peak); } else if (words[0] == "INDEX" && words[1] == "01") { @@ -147,9 +147,9 @@ CUEParser::CUEParser(const QString &url) else if (words[1] == "REPLAYGAIN_ALBUM_PEAK") album_peak = words[2].toDouble(); else if (words[1] == "REPLAYGAIN_TRACK_GAIN" && !m_tracks.isEmpty()) - m_tracks.last()->replayGain.insert(Qmmp::REPLAYGAIN_TRACK_GAIN, words[2].toDouble()); + m_tracks.last()->info.setValue(Qmmp::REPLAYGAIN_TRACK_GAIN, words[2].toDouble()); else if (words[1] == "REPLAYGAIN_TRACK_PEAK" && !m_tracks.isEmpty()) - m_tracks.last()->replayGain.insert(Qmmp::REPLAYGAIN_TRACK_PEAK, words[2].toDouble()); + m_tracks.last()->info.setValue(Qmmp::REPLAYGAIN_TRACK_PEAK, words[2].toDouble()); } } file.close(); @@ -173,23 +173,25 @@ CUEParser::CUEParser(const QString &url) } } //calculate lengths + QList<TrackInfo *> f_list; for(int i = 0; i < m_tracks.count(); ++i) { - QString file_path = m_tracks[i]->file; - if((i < m_tracks.count() - 1) && (file_path == m_tracks[i+1]->file)) - m_tracks[i]->info.setLength(m_tracks[i+1]->offset - m_tracks[i]->offset); - else + if(i == 0 || m_tracks[i - 1]->file != m_tracks[i]->file) { - QList <FileInfo *> f_list = MetaDataManager::instance()->createPlayList(file_path, false); - qint64 l = f_list.isEmpty() ? 0 : f_list.at(0)->length() * 1000; - if (l > m_tracks[i]->offset) - m_tracks[i]->info.setLength(l - m_tracks[i]->offset); - else - m_tracks[i]->info.setLength(0); qDeleteAll(f_list); - f_list.clear(); + f_list = MetaDataManager::instance()->createPlayList(m_tracks[i]->file, (parts & TrackInfo::Properties) + ? TrackInfo::NoParts : TrackInfo::Properties); } + if(!f_list.isEmpty()) + m_tracks[i]->info.setValues(f_list.first()->properties()); + + if((i < m_tracks.count() - 1) && ( m_tracks[i]->file == m_tracks[i+1]->file)) + m_tracks[i]->info.setDuration(m_tracks[i+1]->offset - m_tracks[i]->offset); + else if(!f_list.isEmpty()) + m_tracks[i]->info.setDuration(qMax(0LL, f_list.first()->duration() - m_tracks[i]->offset)); } + qDeleteAll(f_list); + f_list.clear(); } CUEParser::~CUEParser() @@ -198,13 +200,12 @@ CUEParser::~CUEParser() m_tracks.clear(); } -QList<FileInfo*> CUEParser::createPlayList() +QList<TrackInfo *> CUEParser::createPlayList() { - QList<FileInfo*> list; + QList<TrackInfo*> list; foreach(CUETrack *track, m_tracks) { - list << new FileInfo(track->info); - list.last()->setLength(track->info.length()/1000); + list << new TrackInfo(track->info); } return list; } @@ -236,9 +237,9 @@ qint64 CUEParser::offset(int track) const return m_tracks.at(track - 1)->offset; } -qint64 CUEParser::length(int track) const +qint64 CUEParser::duration(int track) const { - return m_tracks.at(track - 1)->info.length(); + return m_tracks.at(track - 1)->info.duration(); } int CUEParser::count() const @@ -246,7 +247,7 @@ int CUEParser::count() const return m_tracks.count(); } -FileInfo *CUEParser::info(int track) +TrackInfo *CUEParser::info(int track) { return &m_tracks.at(track - 1)->info; } @@ -258,7 +259,7 @@ const QString CUEParser::trackURL(int track) const const QMap<Qmmp::ReplayGainKey, double> CUEParser::replayGain(int track) const { - return m_tracks.at(track - 1)->replayGain; + return m_tracks.at(track - 1)->info.replayGainInfo(); } QStringList CUEParser::splitLine(const QString &line) |
