diff options
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/CommandLineOptions/StatusOption/statusoption.cpp | 1 | ||||
| -rw-r--r-- | src/plugins/General/mpris/mpris1/playerobject.cpp | 1 | ||||
| -rw-r--r-- | src/plugins/General/mpris/mpris1/tracklistobject.cpp | 1 | ||||
| -rw-r--r-- | src/plugins/General/mpris/mpris2/player2object.cpp | 2 | ||||
| -rw-r--r-- | src/plugins/Input/flac/decoderflacfactory.cpp | 3 | ||||
| -rw-r--r-- | src/plugins/Input/flac/flacmetadatamodel.cpp | 10 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/playlist.cpp | 8 |
7 files changed, 26 insertions, 0 deletions
diff --git a/src/plugins/CommandLineOptions/StatusOption/statusoption.cpp b/src/plugins/CommandLineOptions/StatusOption/statusoption.cpp index 99fef7adb..dc9ebc4b1 100644 --- a/src/plugins/CommandLineOptions/StatusOption/statusoption.cpp +++ b/src/plugins/CommandLineOptions/StatusOption/statusoption.cpp @@ -63,6 +63,7 @@ QString StatusOption::executeCommand(const QString &opt_str, const QStringList & out += " "; out += genProgressBar() + "\n"; out += "ARTIST = %p\n"; + out += "ALBUMARTIST = %p\n"; out += "TITLE = %t\n"; out += "ALBUM = %a\n"; out += "COMMENT = %c\n"; diff --git a/src/plugins/General/mpris/mpris1/playerobject.cpp b/src/plugins/General/mpris/mpris1/playerobject.cpp index 27c9ca9fa..ed1b499c3 100644 --- a/src/plugins/General/mpris/mpris1/playerobject.cpp +++ b/src/plugins/General/mpris/mpris1/playerobject.cpp @@ -135,6 +135,7 @@ QVariantMap PlayerObject::GetMetadata() map.insert("arturl", MetaDataManager::instance()->getCoverPath(m_core->metaData(Qmmp::URL))); map.insert("title", m_core->metaData(Qmmp::TITLE)); map.insert("artist", m_core->metaData(Qmmp::ARTIST)); + map.insert("albumartist", m_core->metaData(Qmmp::ALBUMARTIST)); map.insert("album", m_core->metaData(Qmmp::ALBUM)); map.insert("tracknumber", m_core->metaData(Qmmp::TRACK)); map.insert("time", (quint32)m_core->totalTime()/1000); diff --git a/src/plugins/General/mpris/mpris1/tracklistobject.cpp b/src/plugins/General/mpris/mpris1/tracklistobject.cpp index 13c40c929..23740ff81 100644 --- a/src/plugins/General/mpris/mpris1/tracklistobject.cpp +++ b/src/plugins/General/mpris/mpris1/tracklistobject.cpp @@ -106,6 +106,7 @@ QVariantMap TrackListObject::GetMetadata(int in0) map.insert("location", "file://" + track->url()); map.insert("title", track->value(Qmmp::TITLE)); map.insert("artist", track->value(Qmmp::ARTIST)); + map.insert("albumartist", track->value(Qmmp::ALBUMARTIST)); map.insert("album", track->value(Qmmp::ALBUM)); map.insert("tracknumber", track->value(Qmmp::TRACK)); map.insert("time", (quint32)track->length()); diff --git a/src/plugins/General/mpris/mpris2/player2object.cpp b/src/plugins/General/mpris/mpris2/player2object.cpp index e7fedac5e..9bf7e539e 100644 --- a/src/plugins/General/mpris/mpris2/player2object.cpp +++ b/src/plugins/General/mpris/mpris2/player2object.cpp @@ -136,6 +136,8 @@ QVariantMap Player2Object::metadata() const map["xesam:album"] = m_core->metaData(Qmmp::ALBUM); if(!m_core->metaData(Qmmp::ARTIST).isEmpty()) map["xesam:artist"] = QStringList() << m_core->metaData(Qmmp::ARTIST); + if(!m_core->metaData(Qmmp::ALBUMARTIST).isEmpty()) + map["xesam:albumArtist"] = QStringList() << m_core->metaData(Qmmp::ALBUMARTIST); if(!m_core->metaData(Qmmp::COMMENT).isEmpty()) map["xesam:comment"] = QStringList() << m_core->metaData(Qmmp::COMMENT); if(!m_core->metaData(Qmmp::COMPOSER).isEmpty()) diff --git a/src/plugins/Input/flac/decoderflacfactory.cpp b/src/plugins/Input/flac/decoderflacfactory.cpp index d45a8164c..7e2600b7d 100644 --- a/src/plugins/Input/flac/decoderflacfactory.cpp +++ b/src/plugins/Input/flac/decoderflacfactory.cpp @@ -152,6 +152,9 @@ QList<FileInfo *> DecoderFLACFactory::createPlayList(const QString &fileName, bo //additional metadata TagLib::StringList fld; + if(!(fld = tag->fieldListMap()["ALBUMARTIST"]).isEmpty()) + info->setMetaData(Qmmp::ALBUMARTIST, + QString::fromUtf8(fld.toString().toCString(true)).trimmed()); if(!(fld = tag->fieldListMap()["COMPOSER"]).isEmpty()) info->setMetaData(Qmmp::COMPOSER, QString::fromUtf8(fld.toString().toCString(true)).trimmed()); diff --git a/src/plugins/Input/flac/flacmetadatamodel.cpp b/src/plugins/Input/flac/flacmetadatamodel.cpp index 3c0738819..9b700383f 100644 --- a/src/plugins/Input/flac/flacmetadatamodel.cpp +++ b/src/plugins/Input/flac/flacmetadatamodel.cpp @@ -160,6 +160,11 @@ const QString VorbisCommentModel::value(Qmmp::MetaData key) return TStringToQString_qt4(m_tag->title()); case Qmmp::ARTIST: return TStringToQString_qt4(m_tag->artist()); + case Qmmp::ALBUMARTIST: + if(m_tag->fieldListMap()["ALBUMARTIST"].isEmpty()) + return QString(); + else + return TStringToQString_qt4(m_tag->fieldListMap()["ALBUMARTIST"].front()); case Qmmp::ALBUM: return TStringToQString_qt4(m_tag->album()); case Qmmp::COMMENT: @@ -199,6 +204,11 @@ void VorbisCommentModel::setValue(Qmmp::MetaData key, const QString &value) case Qmmp::ARTIST: m_tag->setArtist(str); return; + case Qmmp::ALBUMARTIST: + value.isEmpty() ? + m_tag->removeField("ALBUMARTIST"): + m_tag->addField("ALBUMARTIST", str, true); + return; case Qmmp::ALBUM: m_tag->setAlbum(str); return; diff --git a/src/plugins/Ui/skinned/playlist.cpp b/src/plugins/Ui/skinned/playlist.cpp index 4846388a9..bc58312d0 100644 --- a/src/plugins/Ui/skinned/playlist.cpp +++ b/src/plugins/Ui/skinned/playlist.cpp @@ -225,6 +225,10 @@ void PlayList::createActions() connect (artistAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); signalMapper->setMapping (artistAct, PlayListModel::ARTIST); + QAction* albumArtistAct = sort_mode_menu->addAction (tr ("By Album Artist")); + connect (albumArtistAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); + signalMapper->setMapping (albumArtistAct, PlayListModel::ALBUMARTIST); + QAction* nameAct = sort_mode_menu->addAction (tr ("By Filename")); connect (nameAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); signalMapper->setMapping (nameAct, PlayListModel::FILENAME); @@ -272,6 +276,10 @@ void PlayList::createActions() connect (artistAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); signalMapper->setMapping (artistAct, PlayListModel::ARTIST); + albumArtistAct = sort_mode_menu->addAction (tr ("By Album Artist")); + connect (albumArtistAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); + signalMapper->setMapping (albumArtistAct, PlayListModel::ALBUMARTIST); + nameAct = sort_mode_menu->addAction (tr ("By Filename")); connect (nameAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); signalMapper->setMapping (nameAct, PlayListModel::FILENAME); |
