aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-09-22 17:16:26 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-09-22 17:16:26 +0000
commitb66a8c518cbaa660ca3b9d18a1d071b144e5a2ab (patch)
tree45c7f5c5f45f54636b60449b137aaee79fb1f8a9 /src/plugins
parent9f312260e06b7d3bc0a017e0dda4836d02f925e4 (diff)
downloadqmmp-b66a8c518cbaa660ca3b9d18a1d071b144e5a2ab.tar.gz
qmmp-b66a8c518cbaa660ca3b9d18a1d071b144e5a2ab.tar.bz2
qmmp-b66a8c518cbaa660ca3b9d18a1d071b144e5a2ab.zip
added 'album artist' field support (patch by Dmitry Misharov)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4509 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/CommandLineOptions/StatusOption/statusoption.cpp1
-rw-r--r--src/plugins/General/mpris/mpris1/playerobject.cpp1
-rw-r--r--src/plugins/General/mpris/mpris1/tracklistobject.cpp1
-rw-r--r--src/plugins/General/mpris/mpris2/player2object.cpp2
-rw-r--r--src/plugins/Input/flac/decoderflacfactory.cpp3
-rw-r--r--src/plugins/Input/flac/flacmetadatamodel.cpp10
-rw-r--r--src/plugins/Ui/skinned/playlist.cpp8
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);