From b66a8c518cbaa660ca3b9d18a1d071b144e5a2ab Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Mon, 22 Sep 2014 17:16:26 +0000 Subject: 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 --- src/qmmpui/detailsdialog.cpp | 1 + src/qmmpui/forms/tageditor.ui | 170 +++++++++++++++++++++------------------ src/qmmpui/mediaplayer.cpp | 3 +- src/qmmpui/metadataformatter.cpp | 1 + src/qmmpui/playlistcontainer.cpp | 14 ++++ src/qmmpui/playlistmanager.cpp | 3 + src/qmmpui/playlistmodel.h | 1 + src/qmmpui/tageditor.cpp | 3 + 8 files changed, 115 insertions(+), 81 deletions(-) (limited to 'src/qmmpui') diff --git a/src/qmmpui/detailsdialog.cpp b/src/qmmpui/detailsdialog.cpp index 93e02be2f..243fc4b63 100644 --- a/src/qmmpui/detailsdialog.cpp +++ b/src/qmmpui/detailsdialog.cpp @@ -164,6 +164,7 @@ void DetailsDialog::printInfo() //tags formattedText += formatRow(tr("Title"), m_metaData[Qmmp::TITLE]); formattedText += formatRow(tr("Artist"), m_metaData[Qmmp::ARTIST]); + formattedText += formatRow(tr("ALbum artist"), m_metaData[Qmmp::ALBUMARTIST]); formattedText += formatRow(tr("Album"), m_metaData[Qmmp::ALBUM]); formattedText += formatRow(tr("Comment"), m_metaData[Qmmp::COMMENT]); formattedText += formatRow(tr("Genre"), m_metaData[Qmmp::GENRE]); diff --git a/src/qmmpui/forms/tageditor.ui b/src/qmmpui/forms/tageditor.ui index 90d3c5aa2..5f5d721b5 100644 --- a/src/qmmpui/forms/tageditor.ui +++ b/src/qmmpui/forms/tageditor.ui @@ -26,8 +26,8 @@ - - + + 0 @@ -35,25 +35,22 @@ - Title: + Artist: Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - 0 - 0 - + + + + false - - + + 0 @@ -61,24 +58,14 @@ - Artist: + Genre: Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - 0 - 0 - - - - - + @@ -94,50 +81,23 @@ - - - - - 0 - 0 - - - - - - - - - - - Composer: - - - - - - - false - - - - - + + - + 0 0 - Genre: + Comment: Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - + @@ -151,23 +111,7 @@ - - - - - 0 - 0 - - - - Track: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - + @@ -257,23 +201,69 @@ - - + + - + + 0 + 0 + + + + + + + + 0 0 - Comment: + Title: Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - + + + + + 0 + 0 + + + + Track: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + + + + + Composer: + + + + true @@ -291,8 +281,28 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Arial'; font-size:10pt;"><br /></p></body></html> + + + + + + + + 0 + 0 + + + + + + + + + + + Album Artist diff --git a/src/qmmpui/mediaplayer.cpp b/src/qmmpui/mediaplayer.cpp index 487b974c9..402ed0e28 100644 --- a/src/qmmpui/mediaplayer.cpp +++ b/src/qmmpui/mediaplayer.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2008-2013 by Ilya Kotov * + * Copyright (C) 2008-2014 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -188,6 +188,7 @@ void MediaPlayer::updateMetaData() qDebug("===== metadata ======"); qDebug("ARTIST = %s", qPrintable(m_core->metaData(Qmmp::ARTIST))); qDebug("TITLE = %s", qPrintable(m_core->metaData(Qmmp::TITLE))); + qDebug("ALBUMARTIST = %s", qPrintable(m_core->metaData(Qmmp::ALBUMARTIST))); qDebug("ALBUM = %s", qPrintable(m_core->metaData(Qmmp::ALBUM))); qDebug("COMMENT = %s", qPrintable(m_core->metaData(Qmmp::COMMENT))); qDebug("GENRE = %s", qPrintable(m_core->metaData(Qmmp::GENRE))); diff --git a/src/qmmpui/metadataformatter.cpp b/src/qmmpui/metadataformatter.cpp index d9699edb9..702c0acfe 100644 --- a/src/qmmpui/metadataformatter.cpp +++ b/src/qmmpui/metadataformatter.cpp @@ -61,6 +61,7 @@ QString MetaDataFormatter::parse(const QMap &metaData, title.replace("&", "%&"); title.replace(",", "%,"); title.replace("%p", metaData[Qmmp::ARTIST]); + title.replace("%aa", metaData[Qmmp::ALBUMARTIST]); title.replace("%a", metaData[Qmmp::ALBUM]); title.replace("%t", metaData[Qmmp::TITLE]); title.replace("%n", metaData[Qmmp::TRACK]); diff --git a/src/qmmpui/playlistcontainer.cpp b/src/qmmpui/playlistcontainer.cpp index 1ca4d79dc..a717f9677 100644 --- a/src/qmmpui/playlistcontainer.cpp +++ b/src/qmmpui/playlistcontainer.cpp @@ -75,6 +75,16 @@ static bool _artistGreaterComparator(PlayListTrack* s1,PlayListTrack* s2) { return QString::localeAwareCompare (s1->value(Qmmp::ARTIST), s2->value(Qmmp::ARTIST)) > 0; } +//by album artist +static bool _albumArtistLessComparator(PlayListTrack* s1,PlayListTrack* s2) +{ + return QString::localeAwareCompare (s1->value(Qmmp::ALBUMARTIST), s2->value(Qmmp::ALBUMARTIST)) < 0; +} + +static bool _albumArtistGreaterComparator(PlayListTrack* s1,PlayListTrack* s2) +{ + return QString::localeAwareCompare (s1->value(Qmmp::ALBUMARTIST), s2->value(Qmmp::ALBUMARTIST)) > 0; +} //by path static bool _pathAndFilenameLessComparator(PlayListTrack* s1,PlayListTrack* s2) { @@ -180,6 +190,10 @@ void PlayListContainer::doSort(int sort_mode, QList& list_to_sor compareLessFunc = _artistLessComparator; compareGreaterFunc = _artistGreaterComparator; break; + case PlayListModel::ALBUMARTIST: + compareLessFunc = _albumArtistLessComparator; + compareGreaterFunc = _albumArtistGreaterComparator; + break; case PlayListModel::FILENAME: compareLessFunc = _filenameLessComparator; compareGreaterFunc = _filenameGreaterComparator; diff --git a/src/qmmpui/playlistmanager.cpp b/src/qmmpui/playlistmanager.cpp index 64517fbbc..e99a49a81 100644 --- a/src/qmmpui/playlistmanager.cpp +++ b/src/qmmpui/playlistmanager.cpp @@ -278,6 +278,8 @@ void PlayListManager::readPlayLists() tracks.last()->insert(Qmmp::TITLE, value); else if (param == "artist") tracks.last()->insert(Qmmp::ARTIST, value); + else if (param == "albumartist") + tracks.last()->insert(Qmmp::ALBUMARTIST, value); else if (param == "album") tracks.last()->insert(Qmmp::ALBUM, value); else if (param == "comment") @@ -341,6 +343,7 @@ void PlayListManager::writePlayLists() tmpFile.write(QString("file=%1\n").arg(t->url()).toUtf8()); tmpFile.write(QString("title=%1\n").arg(t->value(Qmmp::TITLE)).toUtf8()); tmpFile.write(QString("artist=%1\n").arg(t->value(Qmmp::ARTIST)).toUtf8()); + tmpFile.write(QString("albumartist=%1\n").arg(t->value(Qmmp::ALBUMARTIST)).toUtf8()); tmpFile.write(QString("album=%1\n").arg(t->value(Qmmp::ALBUM)).toUtf8()); tmpFile.write(QString("comment=%1\n").arg(t->value(Qmmp::COMMENT)).toUtf8()); tmpFile.write(QString("genre=%1\n").arg(t->value(Qmmp::GENRE)).toUtf8()); diff --git a/src/qmmpui/playlistmodel.h b/src/qmmpui/playlistmodel.h index 77ad9c50a..49c3e0a6b 100644 --- a/src/qmmpui/playlistmodel.h +++ b/src/qmmpui/playlistmodel.h @@ -287,6 +287,7 @@ public: ALBUM, /*!< by album */ DISCNUMBER, /*!< by discnumber */ ARTIST, /*!< by artist */ + ALBUMARTIST, /*!< by album artist */ FILENAME, /*!< by file name */ PATH_AND_FILENAME, /*!< by path and file name */ DATE, /*!< by date */ diff --git a/src/qmmpui/tageditor.cpp b/src/qmmpui/tageditor.cpp index 7306d0981..1323c046e 100644 --- a/src/qmmpui/tageditor.cpp +++ b/src/qmmpui/tageditor.cpp @@ -29,6 +29,7 @@ TagEditor::TagEditor(TagModel *tagModel, QWidget *parent) : QWidget(parent), m_u //check available keys m_ui->titleLineEdit->setEnabled(m_tagModel->keys().contains(Qmmp::TITLE)); m_ui->artistLineEdit->setEnabled(m_tagModel->keys().contains(Qmmp::ARTIST)); + m_ui->albumArtistLineEdit->setEnabled(m_tagModel->keys().contains(Qmmp::ALBUMARTIST)); m_ui->albumLineEdit->setEnabled(m_tagModel->keys().contains(Qmmp::ALBUM)); m_ui->composerLineEdit->setEnabled(m_tagModel->keys().contains(Qmmp::COMPOSER)); m_ui->genreLineEdit->setEnabled(m_tagModel->keys().contains(Qmmp::GENRE)); @@ -53,6 +54,7 @@ void TagEditor::save() m_tagModel->create(); m_tagModel->setValue(Qmmp::TITLE, m_ui->titleLineEdit->text()); m_tagModel->setValue(Qmmp::ARTIST, m_ui->artistLineEdit->text()); + m_tagModel->setValue(Qmmp::ALBUMARTIST, m_ui->albumArtistLineEdit->text()); m_tagModel->setValue(Qmmp::ALBUM, m_ui->albumLineEdit->text()); m_tagModel->setValue(Qmmp::COMPOSER, m_ui->composerLineEdit->text()); m_tagModel->setValue(Qmmp::GENRE, m_ui->genreLineEdit->text()); @@ -74,6 +76,7 @@ void TagEditor::readTag() m_ui->useCheckBox->setVisible(m_tagModel->caps() & TagModel::CreateRemove); m_ui->titleLineEdit->setText(m_tagModel->value(Qmmp::TITLE)); m_ui->artistLineEdit->setText(m_tagModel->value(Qmmp::ARTIST)); + m_ui->albumArtistLineEdit->setText(m_tagModel->value(Qmmp::ALBUMARTIST)); m_ui->albumLineEdit->setText(m_tagModel->value(Qmmp::ALBUM)); m_ui->composerLineEdit->setText(m_tagModel->value(Qmmp::COMPOSER)); m_ui->genreLineEdit->setText(m_tagModel->value(Qmmp::GENRE)); -- cgit v1.2.3-13-gbd6f