Add an option to group the library by albumartist. Fixes issue #198

This commit is contained in:
David Sansome 2010-04-11 22:21:21 +00:00
parent d0ddeb2956
commit c576ca92e8
12 changed files with 67 additions and 8 deletions

View File

@ -27,10 +27,11 @@ GroupByDialog::GroupByDialog(QWidget *parent)
mapping_.insert(Mapping(Library::GroupBy_None, 0));
mapping_.insert(Mapping(Library::GroupBy_Album, 1));
mapping_.insert(Mapping(Library::GroupBy_Artist, 2));
mapping_.insert(Mapping(Library::GroupBy_Composer, 3));
mapping_.insert(Mapping(Library::GroupBy_Genre, 4));
mapping_.insert(Mapping(Library::GroupBy_Year, 5));
mapping_.insert(Mapping(Library::GroupBy_YearAlbum, 6));
mapping_.insert(Mapping(Library::GroupBy_AlbumArtist, 3));
mapping_.insert(Mapping(Library::GroupBy_Composer, 4));
mapping_.insert(Mapping(Library::GroupBy_Genre, 5));
mapping_.insert(Mapping(Library::GroupBy_Year, 6));
mapping_.insert(Mapping(Library::GroupBy_YearAlbum, 7));
connect(ui_.button_box->button(QDialogButtonBox::Reset), SIGNAL(clicked()),
SLOT(Reset()));

View File

@ -54,6 +54,11 @@
<string>Artist</string>
</property>
</item>
<item>
<property name="text">
<string>Albumartist</string>
</property>
</item>
<item>
<property name="text">
<string>Composer</string>
@ -100,6 +105,11 @@
<string>Artist</string>
</property>
</item>
<item>
<property name="text">
<string>Albumartist</string>
</property>
</item>
<item>
<property name="text">
<string>Composer</string>
@ -146,6 +156,11 @@
<string>Artist</string>
</property>
</item>
<item>
<property name="text">
<string>Albumartist</string>
</property>
</item>
<item>
<property name="text">
<string>Composer</string>

View File

@ -165,10 +165,11 @@ void Library::SongsDiscovered(const SongList& songs) {
// item's key
QString key;
switch (type) {
case GroupBy_Album: key = song.album(); break;
case GroupBy_Artist: key = song.artist(); break;
case GroupBy_Composer: key = song.composer(); break;
case GroupBy_Genre: key = song.genre(); break;
case GroupBy_Album: key = song.album(); break;
case GroupBy_Artist: key = song.artist(); break;
case GroupBy_Composer: key = song.composer(); break;
case GroupBy_Genre: key = song.genre(); break;
case GroupBy_AlbumArtist: key = song.albumartist(); break;
case GroupBy_Year:
key = QString::number(qMax(0, song.year())); break;
case GroupBy_YearAlbum:
@ -229,6 +230,7 @@ QString Library::DividerKey(GroupBy type, LibraryItem* item) const {
case GroupBy_Artist:
case GroupBy_Composer:
case GroupBy_Genre:
case GroupBy_AlbumArtist:
if (item->sort_text[0].isDigit())
return "0";
if (item->sort_text[0] == ' ')
@ -256,6 +258,7 @@ QString Library::DividerDisplayText(GroupBy type, const QString& key) const {
case GroupBy_Artist:
case GroupBy_Composer:
case GroupBy_Genre:
case GroupBy_AlbumArtist:
if (key == "0")
return "0-9";
return key.toUpper();
@ -498,6 +501,9 @@ void Library::InitQuery(GroupBy type, LibraryQuery* q) {
case GroupBy_Genre:
q->SetColumnSpec("DISTINCT genre");
break;
case GroupBy_AlbumArtist:
q->SetColumnSpec("DISTINCT albumartist");
break;
case GroupBy_None:
q->SetColumnSpec("ROWID, " + QString(Song::kColumnSpec));
break;
@ -534,6 +540,9 @@ void Library::FilterQuery(GroupBy type, LibraryItem* item, LibraryQuery* q) {
case GroupBy_Genre:
q->AddWhere("genre", item->key);
break;
case GroupBy_AlbumArtist:
q->AddWhere("albumartist", item->key);
break;
case GroupBy_None:
Q_ASSERT(0);
break;
@ -587,6 +596,7 @@ LibraryItem* Library::ItemFromQuery(GroupBy type,
case GroupBy_Composer:
case GroupBy_Genre:
case GroupBy_Album:
case GroupBy_AlbumArtist:
item->key = q.Value(0).toString();
item->display_text = TextOrUnknown(item->key);
item->sort_text = SortText(item->key);
@ -634,6 +644,7 @@ LibraryItem* Library::ItemFromSong(GroupBy type,
case GroupBy_Composer: item->key = s.composer();
case GroupBy_Genre: if (item->key.isNull()) item->key = s.genre();
case GroupBy_Album: if (item->key.isNull()) item->key = s.album();
case GroupBy_AlbumArtist: if (item->key.isNull()) item->key = s.albumartist();
item->display_text = TextOrUnknown(item->key);
item->sort_text = SortText(item->key);
break;

View File

@ -58,6 +58,7 @@ class Library : public SimpleTreeModel<LibraryItem> {
GroupBy_Year = 4,
GroupBy_Composer = 5,
GroupBy_Genre = 6,
GroupBy_AlbumArtist = 7,
};
struct Grouping {

View File

@ -884,6 +884,10 @@ msgstr ""
msgid "None"
msgstr ""
#, fuzzy
msgid "Albumartist"
msgstr "Umělec alba"
msgid "Year - Album"
msgstr ""

View File

@ -884,6 +884,10 @@ msgstr "Πρώτο επίπεδο"
msgid "None"
msgstr "Κανένα"
#, fuzzy
msgid "Albumartist"
msgstr "Άλμπουμ καλλιτέχνη"
msgid "Year - Album"
msgstr "Έτος - Άλμπουμ"

View File

@ -893,6 +893,10 @@ msgstr "Primer nivel"
msgid "None"
msgstr "Ninguno"
#, fuzzy
msgid "Albumartist"
msgstr "Álbum Artista"
msgid "Year - Album"
msgstr "Año - Álbum"

View File

@ -889,6 +889,10 @@ msgstr ""
msgid "None"
msgstr ""
#, fuzzy
msgid "Albumartist"
msgstr "Artiste de l'album"
msgid "Year - Album"
msgstr ""

View File

@ -881,6 +881,10 @@ msgstr "Pierwszy poziom"
msgid "None"
msgstr "Brak"
#, fuzzy
msgid "Albumartist"
msgstr "Wszyscy wykonawcy"
msgid "Year - Album"
msgstr "Rok - Album"

View File

@ -880,6 +880,10 @@ msgstr ""
msgid "None"
msgstr ""
#, fuzzy
msgid "Albumartist"
msgstr "Исполнитель"
msgid "Year - Album"
msgstr ""

View File

@ -886,6 +886,10 @@ msgstr "Prvá úroveň"
msgid "None"
msgstr "Nijako"
#, fuzzy
msgid "Albumartist"
msgstr "Interprét albumu"
msgid "Year - Album"
msgstr "Rok - Album"

View File

@ -870,6 +870,9 @@ msgstr ""
msgid "None"
msgstr ""
msgid "Albumartist"
msgstr ""
msgid "Year - Album"
msgstr ""