diff options
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); |
