diff --git a/src/media_library.cpp b/src/media_library.cpp index ff7299c3..edfc3afa 100644 --- a/src/media_library.cpp +++ b/src/media_library.cpp @@ -63,7 +63,7 @@ void MediaLibrary::Init() Artists->CenteredCursor(Config.centered_cursor); Artists->SetSelectPrefix(&Config.selected_item_prefix); Artists->SetSelectSuffix(&Config.selected_item_suffix); - Artists->SetItemDisplayer(Display::Generic); + Artists->SetItemDisplayer(DisplayPrimaryTags); Albums = new Menu(itsMiddleColStartX, MainStartY, itsMiddleColWidth, MainHeight, "Albums", Config.main_color, brNone); Albums->HighlightColor(Config.main_highlight_color); @@ -191,11 +191,8 @@ void MediaLibrary::Update() sort(list.begin(), list.end(), CaseInsensitiveSorting()); for (MPD::TagList::iterator it = list.begin(); it != list.end(); ++it) { - if (!it->empty()) - { - utf_to_locale(*it); - Artists->AddOption(*it); - } + utf_to_locale(*it); + Artists->AddOption(*it); } Artists->Window::Clear(); Artists->Refresh(); @@ -257,8 +254,6 @@ void MediaLibrary::Update() Mpd.GetList(artists, Config.media_lib_primary_tag); for (MPD::TagList::iterator i = artists.begin(); i != artists.end(); ++i) { - if (i->empty()) - continue; MPD::TagList albums; Mpd.StartFieldSearch(MPD_TAG_ALBUM); Mpd.AddSearch(Config.media_lib_primary_tag, *i); @@ -738,8 +733,8 @@ std::string MediaLibrary::AlbumToString(const SearchConstraints &sc, void *ptr) if (sc.Year == AllTracksMarker) return "All tracks"; std::string result; - if (!sc.Artist.empty()) - (result += sc.Artist) += " - "; + if (static_cast(ptr)->hasTwoColumns) + (result += sc.Artist.empty() ? Config.empty_tag : sc.Artist) += " - "; if ((!static_cast(ptr)->hasTwoColumns || Config.media_lib_primary_tag != MPD_TAG_DATE) && !sc.Year.empty()) ((result += "(") += sc.Year) += ") "; result += sc.Album.empty() ? "" : sc.Album; @@ -751,16 +746,18 @@ void MediaLibrary::DisplayAlbums(const SearchConstraints &sc, void *, Menu *menu) +{ + *menu << (!tag.empty() ? tag : Config.empty_tag); +} + bool MediaLibrary::SearchConstraintsSorting::operator()(const SearchConstraints &a, const SearchConstraints &b) const { int result; CaseInsensitiveStringComparison cmp; - if (!a.Artist.empty() || b.Artist.empty()) - { - result = cmp(a.Artist, b.Artist); - if (result != 0) - return result < 0; - } + result = cmp(a.Artist, b.Artist); + if (result != 0) + return result < 0; result = cmp(a.Year, b.Year); return (result == 0 ? cmp(a.Album, b.Album) : result) < 0; } diff --git a/src/media_library.h b/src/media_library.h index cc915050..8502dfd5 100644 --- a/src/media_library.h +++ b/src/media_library.h @@ -86,6 +86,7 @@ class MediaLibrary : public Screen static std::string AlbumToString(const SearchConstraints &, void *); static void DisplayAlbums(const SearchConstraints &, void *, Menu *); + static void DisplayPrimaryTags(const std::string &artist, void *, Menu *menu); static bool SortSongsByTrack(MPD::Song *, MPD::Song *); static bool SortAllTracks(MPD::Song *, MPD::Song *);