diff --git a/src/ncmpcpp.cpp b/src/ncmpcpp.cpp index bd149fe7..4184479b 100644 --- a/src/ncmpcpp.cpp +++ b/src/ncmpcpp.cpp @@ -365,7 +365,11 @@ int main(int argc, char *argv[]) MpdData *data; if (wCurrent == mLibAlbums && mLibAlbums->Empty()) + { + mLibAlbums->HighlightColor(Config.main_color); + mLibArtists->HighlightColor(Config.library_active_column_color); wCurrent = mLibArtists; + } if (wCurrent == mLibArtists) { @@ -1009,11 +1013,14 @@ int main(int argc, char *argv[]) if (wCurrent == mLibSongs) { - Song &s = vSongs[mLibSongs->GetChoice()-1]; - ShowMessage("Added to playlist: " + OmitBBCodes(DisplaySong(s))); - mpd_playlist_add(conn, (char *) s.GetFile().c_str()); - if (input == ENTER && s.GetHash() == vPlaylist.back()->GetHash()) - mpd_player_play_id(conn, vPlaylist.back()->GetID()); + if (!vSongs.empty()) + { + Song &s = vSongs[mLibSongs->GetChoice()-1]; + ShowMessage("Added to playlist: " + OmitBBCodes(DisplaySong(s))); + mpd_playlist_add(conn, (char *) s.GetFile().c_str()); + if (input == ENTER && s.GetHash() == vPlaylist.back()->GetHash()) + mpd_player_play_id(conn, vPlaylist.back()->GetID()); + } } if (input == KEY_SPACE) @@ -1240,7 +1247,7 @@ int main(int argc, char *argv[]) ShowMessage("Playlist saved as: " + playlist_name); break; case MPD_DATABASE_PLAYLIST_EXIST: - ShowMessage("Playlist already exist!"); + ShowMessage("Playlist already exists!"); break; } } diff --git a/src/status_checker.cpp b/src/status_checker.cpp index d7db140f..c0999d2b 100644 --- a/src/status_checker.cpp +++ b/src/status_checker.cpp @@ -43,6 +43,8 @@ extern vector vPlaylist; extern vector vSearched; extern vector vBrowser; +extern vector vArtists; + extern time_t block_delay; extern time_t timer; extern time_t now; @@ -251,6 +253,25 @@ void NcmpcppStatusChanged(MpdObj *conn, ChangedStatusType what) if(what & MPD_CST_DATABASE) { GetDirectory(browsed_dir); + if (!mLibArtists->Empty()) + { + ShowMessage("Updating artists' list..."); + mLibArtists->Clear(0); + vArtists.clear(); + MpdData *data = mpd_database_get_artists(conn); + FOR_EACH_MPD_DATA(data) + vArtists.push_back(data->tag); + mpd_data_free(data); + sort(vArtists.begin(), vArtists.end(), CaseInsensitiveComparison); + for (vector::const_iterator it = vArtists.begin(); it != vArtists.end(); it++) + mLibArtists->AddOption(*it); + if (current_screen == csLibrary) + { + mLibArtists->Hide(); + mLibArtists->Display(); + } + ShowMessage("List updated!"); + } block_library_update = 0; } if (what & MPD_CST_STATE)