From ceff30c9ec14db89d252fd8c5f5ecc47891a3b75 Mon Sep 17 00:00:00 2001 From: unK Date: Fri, 29 Aug 2008 17:09:01 +0200 Subject: [PATCH] sort albums in media library by year (and display it) --- src/ncmpcpp.cpp | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/src/ncmpcpp.cpp b/src/ncmpcpp.cpp index 5888b786..b4ea46c2 100644 --- a/src/ncmpcpp.cpp +++ b/src/ncmpcpp.cpp @@ -430,10 +430,29 @@ int main(int argc, char *argv[]) if (wCurrent == mLibArtists) { TagList list; - mLibAlbums->Clear(); + mLibAlbums->Clear(0); Mpd->GetAlbums(mLibArtists->GetCurrentOption(), list); + for (TagList::iterator it = list.begin(); it != list.end(); it++) + { + SongList l; + Mpd->StartSearch(1); + Mpd->AddSearch(MPD_TAG_ITEM_ARTIST, mLibArtists->GetCurrentOption()); + Mpd->AddSearch(MPD_TAG_ITEM_ALBUM, *it); + Mpd->CommitSearch(l); + for (SongList::const_iterator j = l.begin(); j != l.end(); j++) + { + if ((*j)->GetYear() != EMPTY_TAG) + { + *it = "(" + (*j)->GetYear() + ") " + *it; + break; + } + } + FreeSongList(l); + } + sort(list.begin(), list.end()); for (TagList::const_iterator it = list.begin(); it != list.end(); it++) mLibAlbums->AddOption(*it); + mLibAlbums->Window::Clear(); } FreeSongList(vSongs); @@ -453,6 +472,14 @@ int main(int argc, char *argv[]) Mpd->AddSearch(MPD_TAG_ITEM_ARTIST, mLibArtists->GetCurrentOption()); Mpd->AddSearch(MPD_TAG_ITEM_ALBUM, mLibAlbums->GetCurrentOption()); Mpd->CommitSearch(vSongs); + if (vSongs.empty()) + { + const string &album = mLibAlbums->GetCurrentOption(); + Mpd->StartSearch(1); + Mpd->AddSearch(MPD_TAG_ITEM_ARTIST, mLibArtists->GetCurrentOption()); + Mpd->AddSearch(MPD_TAG_ITEM_ALBUM, album.substr(7, album.length()-7)); + Mpd->CommitSearch(vSongs); + } } sort(vSongs.begin(), vSongs.end(), SortSongsByTrack); bool bold = 0; @@ -472,9 +499,9 @@ int main(int argc, char *argv[]) } mLibAlbums->Refresh(); - mLibSongs->Hide(); - mLibSongs->Display(); - + mLibSongs->Window::Clear(); + mLibSongs->Refresh(); + block_library_update = 1; }