diff --git a/src/help.cpp b/src/help.cpp index 548407b6..0bf1d49f 100644 --- a/src/help.cpp +++ b/src/help.cpp @@ -238,6 +238,7 @@ void Help::GetKeybindings() # endif // ! HAVE_TAGLIB_H *w << DisplayKeys(Key.MvSongUp) << "Move item(s) up\n"; *w << DisplayKeys(Key.MvSongDown) << "Move item(s) down\n"; + *w << DisplayKeys(Key.Clear) << "Clear current playlist\n"; *w << "\n\n " << fmtBold << "Keys - Lyrics\n -----------------------------------------\n" << fmtBoldEnd; *w << DisplayKeys(Key.Space) << "Switch for following lyrics of now playing song\n"; diff --git a/src/libmpdclient.c b/src/libmpdclient.c index ba211ae9..f78b70c7 100644 --- a/src/libmpdclient.c +++ b/src/libmpdclient.c @@ -2026,7 +2026,7 @@ void mpd_sendListPlaylistCommand(mpd_Connection *connection, char *path) free(query); } -void mpd_sendPlaylistClearCommand(mpd_Connection *connection, char *path) +void mpd_sendPlaylistClearCommand(mpd_Connection *connection, const char *path) { char *sPath = mpd_sanitizeArg(path); int len = strlen("playlistclear")+2+strlen(sPath)+3; diff --git a/src/libmpdclient.h b/src/libmpdclient.h index 73828a21..c9bbafec 100644 --- a/src/libmpdclient.h +++ b/src/libmpdclient.h @@ -664,7 +664,7 @@ void mpd_startPlaylistSearch(mpd_Connection *connection, int exact); void mpd_startStatsSearch(mpd_Connection *connection); -void mpd_sendPlaylistClearCommand(mpd_Connection *connection, char *path); +void mpd_sendPlaylistClearCommand(mpd_Connection *connection, const char *path); void mpd_sendPlaylistAddCommand(mpd_Connection *connection, const char *playlist, const char *path); diff --git a/src/mpdpp.cpp b/src/mpdpp.cpp index 41c8d0c3..265d74fa 100644 --- a/src/mpdpp.cpp +++ b/src/mpdpp.cpp @@ -338,6 +338,16 @@ void Connection::ClearPlaylist() const } } +void Connection::ClearPlaylist(const string &playlist) const +{ + if (isConnected) + { + mpd_sendPlaylistClearCommand(itsConnection, playlist.c_str()); + if (!isCommandsListEnabled) + mpd_finishCommand(itsConnection); + } +} + void Connection::AddToPlaylist(const string &path, const Song &s) const { if (!s.Empty()) diff --git a/src/ncmpcpp.cpp b/src/ncmpcpp.cpp index 1a25aca8..cbafe914 100644 --- a/src/ncmpcpp.cpp +++ b/src/ncmpcpp.cpp @@ -1512,8 +1512,18 @@ int main(int argc, char *argv[]) } else { + if (myScreen == myPlaylistEditor && myPlaylistEditor->Playlists->Empty()) + continue; ShowMessage("Clearing playlist..."); - Mpd->ClearPlaylist(); + if (myScreen == myPlaylistEditor) + { + Mpd->ClearPlaylist(locale_to_utf_cpy(myPlaylistEditor->Playlists->Current())); + myPlaylistEditor->Content->Clear(0); + } + else + { + Mpd->ClearPlaylist(); + } ShowMessage("Cleared playlist!"); } }