update artists' list if database has changed

This commit is contained in:
unknown
2008-08-12 07:22:39 +02:00
parent 2b4518c157
commit 47b94b751b
2 changed files with 34 additions and 6 deletions

View File

@@ -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;
}
}

View File

@@ -43,6 +43,8 @@ extern vector<Song *> vPlaylist;
extern vector<Song> vSearched;
extern vector<BrowsedItem> vBrowser;
extern vector<string> 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<string>::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)