diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2012-02-13 20:02:54 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2012-02-13 20:02:54 +0000 |
| commit | 526e04b8b4d8ba43f39c0bb653200b054bf5dbd9 (patch) | |
| tree | 243ac42cd058530735f62807599a36e760f377c4 /src/plugins | |
| parent | 336f191f80cbb5cfba9b4910ee1ada7a8133796e (diff) | |
| download | qmmp-526e04b8b4d8ba43f39c0bb653200b054bf5dbd9.tar.gz qmmp-526e04b8b4d8ba43f39c0bb653200b054bf5dbd9.tar.bz2 qmmp-526e04b8b4d8ba43f39c0bb653200b054bf5dbd9.zip | |
added 'disc number' tag support for flac files with embedded cuesheet, added sorting by disc number (Brice Videau)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2601 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/Input/flac/decoder_flac.cpp | 5 | ||||
| -rw-r--r-- | src/plugins/Input/flac/decoderflacfactory.cpp | 11 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/playlist.cpp | 8 |
3 files changed, 24 insertions, 0 deletions
diff --git a/src/plugins/Input/flac/decoder_flac.cpp b/src/plugins/Input/flac/decoder_flac.cpp index a8a1c3c1f..3651f407a 100644 --- a/src/plugins/Input/flac/decoder_flac.cpp +++ b/src/plugins/Input/flac/decoder_flac.cpp @@ -292,6 +292,11 @@ bool DecoderFLAC::initialize() } data()->input = new QFile(p); data()->input->open(QIODevice::ReadOnly); + if(xiph_comment->contains("DISCNUMBER") && !xiph_comment->fieldListMap()["DISCNUMBER"].isEmpty()) + { + m_parser->info(m_track)->setMetaData(Qmmp::DISCNUMBER, + QString::fromUtf8(xiph_comment->fieldListMap()["DISCNUMBER"].toString().toCString(true)).trimmed()); + } QMap<Qmmp::MetaData, QString> metaData = m_parser->info(m_track)->metaData(); addMetaData(metaData); //send metadata } diff --git a/src/plugins/Input/flac/decoderflacfactory.cpp b/src/plugins/Input/flac/decoderflacfactory.cpp index fc9779d82..521318336 100644 --- a/src/plugins/Input/flac/decoderflacfactory.cpp +++ b/src/plugins/Input/flac/decoderflacfactory.cpp @@ -132,6 +132,17 @@ QList<FileInfo *> DecoderFLACFactory::createPlayList(const QString &fileName, bo if (tag->fieldListMap().contains("CUESHEET")) { CUEParser parser(tag->fieldListMap()["CUESHEET"].toString().toCString(true), fileName); + if(tag->contains("DISCNUMBER") && !tag->fieldListMap()["DISCNUMBER"].isEmpty()) + { + TagLib::StringList fld; + fld = tag->fieldListMap()["DISCNUMBER"]; + int i; + for(i=1; i<=parser.count(); i++) + { + parser.info(i)->setMetaData(Qmmp::DISCNUMBER, + QString::fromUtf8(fld.toString().toCString(true)).trimmed()); + } + } list = parser.createPlayList(); delete info; if(flacFile) diff --git a/src/plugins/Ui/skinned/playlist.cpp b/src/plugins/Ui/skinned/playlist.cpp index dca16c90d..04cf7a153 100644 --- a/src/plugins/Ui/skinned/playlist.cpp +++ b/src/plugins/Ui/skinned/playlist.cpp @@ -212,6 +212,10 @@ void PlayList::createActions() connect (albumAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); signalMapper->setMapping (albumAct, PlayListModel::ALBUM); + QAction* discnumberAct = sort_mode_menu->addAction (tr ("By Disc Number")); + connect (discnumberAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); + signalMapper->setMapping (discnumberAct, PlayListModel::DISCNUMBER); + QAction* artistAct = sort_mode_menu->addAction (tr ("By Artist")); connect (artistAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); signalMapper->setMapping (artistAct, PlayListModel::ARTIST); @@ -247,6 +251,10 @@ void PlayList::createActions() connect (albumAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); signalMapper->setMapping (albumAct, PlayListModel::ALBUM); + discnumberAct = sort_mode_menu->addAction (tr ("By Disc Number")); + connect (discnumberAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); + signalMapper->setMapping (discnumberAct, PlayListModel::DISCNUMBER); + artistAct = sort_mode_menu->addAction (tr ("By Artist")); connect (artistAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); signalMapper->setMapping (artistAct, PlayListModel::ARTIST); |
