add saving and deleting playlist

This commit is contained in:
unknown
2008-08-17 22:39:25 +02:00
parent bdb9adc4c3
commit e98cd9962c
4 changed files with 36 additions and 16 deletions

View File

@@ -469,6 +469,27 @@ void MPDConnection::CommitQueue()
itsQueue.clear(); itsQueue.clear();
} }
void MPDConnection::DeletePlaylist(const string &name)
{
if (isConnected)
{
mpd_sendRmCommand(itsConnection, name.c_str());
mpd_finishCommand(itsConnection);
}
}
bool MPDConnection::SavePlaylist(const string &name)
{
if (isConnected)
{
mpd_sendSaveCommand(itsConnection, name.c_str());
mpd_finishCommand(itsConnection);
return !(itsConnection->error == MPD_ERROR_ACK && itsConnection->errorCode == MPD_ACK_ERROR_EXIST);
}
else
return 0;
}
void MPDConnection::GetArtists(TagList &v) const void MPDConnection::GetArtists(TagList &v) const
{ {
if (isConnected) if (isConnected)

View File

@@ -137,6 +137,9 @@ class MPDConnection
void QueueDeleteSongId(int); void QueueDeleteSongId(int);
void CommitQueue(); void CommitQueue();
void DeletePlaylist(const string &);
bool SavePlaylist(const string &);
void StartSearch(bool) const; void StartSearch(bool) const;
void AddSearch(mpd_TagItems, const string &) const; void AddSearch(mpd_TagItems, const string &) const;
void CommitSearch(SongList &v) const; void CommitSearch(SongList &v) const;

View File

@@ -490,7 +490,8 @@ int main(int argc, char *argv[])
if (input == KEY_UP || input == KEY_DOWN || input == KEY_PPAGE || input == KEY_NPAGE || input == KEY_HOME || input == KEY_END) if (input == KEY_UP || input == KEY_DOWN || input == KEY_PPAGE || input == KEY_NPAGE || input == KEY_HOME || input == KEY_END)
{ {
if (wCurrent == mLibArtists) if (wCurrent == mLibArtists)
{ mLibAlbums->Reset(); {
mLibAlbums->Reset();
mLibSongs->Reset(); mLibSongs->Reset();
} }
if (wCurrent == mLibAlbums) if (wCurrent == mLibAlbums)
@@ -1217,7 +1218,7 @@ int main(int argc, char *argv[])
block_statusbar_update = 0; block_statusbar_update = 0;
if (in == 'y') if (in == 'y')
{ {
//mpd_database_delete_playlist(conn, (char *) vBrowser[id].name.c_str()); Mpd->DeletePlaylist(vBrowser[id].name);
ShowMessage("Playlist " + vBrowser[id].name + " deleted!"); ShowMessage("Playlist " + vBrowser[id].name + " deleted!");
GetDirectory("/"); GetDirectory("/");
} }
@@ -1244,12 +1245,11 @@ int main(int argc, char *argv[])
Mpd->Pause(); Mpd->Pause();
break; break;
} }
/*case 'S': // save playlist case 'S': // save playlist
{ {
string playlist_name;
BLOCK_STATUSBAR_UPDATE; BLOCK_STATUSBAR_UPDATE;
wFooter->WriteXY(0, Config.statusbar_visibility, "Save playlist as: ", 1); wFooter->WriteXY(0, Config.statusbar_visibility, "Save playlist as: ", 1);
playlist_name = wFooter->GetString("", TraceMpdStatus); string playlist_name = wFooter->GetString("", TraceMpdStatus);
UNBLOCK_STATUSBAR_UPDATE; UNBLOCK_STATUSBAR_UPDATE;
if (playlist_name.find("/") != string::npos) if (playlist_name.find("/") != string::npos)
{ {
@@ -1258,20 +1258,15 @@ int main(int argc, char *argv[])
} }
if (!playlist_name.empty()) if (!playlist_name.empty())
{ {
switch (mpd_database_save_playlist(conn, (char *) playlist_name.c_str())) if (Mpd->SavePlaylist(playlist_name))
{ ShowMessage("Playlist saved as: " + playlist_name);
case MPD_OK: else
ShowMessage("Playlist saved as: " + playlist_name); ShowMessage("Playlist already exists!");
break;
case MPD_DATABASE_PLAYLIST_EXIST:
ShowMessage("Playlist already exists!");
break;
}
} }
if (browsed_dir == "/" && !vBrowser.empty()) if (browsed_dir == "/" && !vBrowser.empty())
GetDirectory(browsed_dir); GetDirectory(browsed_dir);
break; break;
}*/ }
case 's': // stop case 's': // stop
{ {
Mpd->Stop(); Mpd->Stop();

View File

@@ -451,6 +451,7 @@ void NcmpcppStatusChanged(MPDConnection *Mpd, MPDStatusChanges changed, void *da
wFooter->Refresh(); wFooter->Refresh();
wFooter->AutoRefresh(1); wFooter->AutoRefresh(1);
wFooter->EnableBB(); wFooter->EnableBB();
wCurrent->Refresh(); if (changed.SongID || changed.PlayerState)
wCurrent->Refresh();
} }