X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fscreen_queue.c;h=71f19a5c9c0e0ee948c5832df2addbc116de69ca;hb=d2247f1fa7e3dd2651b474a6f699abc136731ff3;hp=67df4b53655b7f3603cf174ae48c1a88c724b266;hpb=665ebd4662110c8cc14b64356914af9212846caf;p=ncmpc.git diff --git a/src/screen_queue.c b/src/screen_queue.c index 67df4b5..71f19a5 100644 --- a/src/screen_queue.c +++ b/src/screen_queue.c @@ -20,7 +20,7 @@ #include "screen_queue.h" #include "screen_interface.h" #include "screen_file.h" -#include "screen_message.h" +#include "screen_status.h" #include "screen_find.h" #include "config.h" #include "i18n.h" @@ -253,7 +253,7 @@ playlist_save(struct mpdclient *c, char *name, char *defaultname) /* query the user for a filename */ - filename = screen_readln(_("Save playlist as"), + filename = screen_readln(_("Save queue as"), defaultname, NULL, gcmp); @@ -268,7 +268,7 @@ playlist_save(struct mpdclient *c, char *name, char *defaultname) filename=g_strstrip(filename); } else #endif - filename=g_strdup(name); + filename=g_strdup(name); if (filename == NULL) return -1; @@ -276,8 +276,10 @@ playlist_save(struct mpdclient *c, char *name, char *defaultname) /* send save command to mpd */ connection = mpdclient_get_connection(c); - if (connection == NULL) + if (connection == NULL) { + g_free(filename); return -1; + } filename_utf8 = locale_to_utf8(filename); if (!mpd_run_save(connection, filename_utf8)) { @@ -285,14 +287,14 @@ playlist_save(struct mpdclient *c, char *name, char *defaultname) mpd_connection_get_server_error(connection) == MPD_SERVER_ERROR_EXIST && mpd_connection_clear_error(connection)) { char *buf; - int key; + bool replace; buf = g_strdup_printf(_("Replace %s [%s/%s] ? "), filename, YES, NO); - key = tolower(screen_getch(buf)); + replace = screen_get_yesno(buf, false); g_free(buf); - if (key != YES[0]) { + if (!replace) { g_free(filename_utf8); g_free(filename); screen_status_printf(_("Aborted")); @@ -503,9 +505,9 @@ static const char * screen_queue_title(char *str, size_t size) { if (options.host == NULL) - return _("Playlist"); + return _("Queue"); - g_snprintf(str, size, _("Playlist on %s"), options.host); + g_snprintf(str, size, _("Queue on %s"), options.host); return str; } @@ -552,7 +554,7 @@ screen_queue_update(struct mpdclient *c) screen_queue_restore_selection(); else /* the queue size may have changed, even if we havn't - revceived the QUEUE idle event yet */ + received the QUEUE idle event yet */ list_window_set_length(lw, playlist_length(playlist)); if (((c->events & MPD_IDLE_PLAYER) != 0 && @@ -698,7 +700,10 @@ screen_queue_cmd(struct mpdclient *c, command_t cmd) break; #endif case CMD_SCREEN_SWAP: - screen_swap(c, playlist_get(&c->playlist, lw->selected)); + if (playlist_length(&c->playlist) > 0) + screen_swap(c, playlist_get(&c->playlist, lw->selected)); + else + screen_swap(c, NULL); return true; default: @@ -747,7 +752,7 @@ screen_queue_cmd(struct mpdclient *c, command_t cmd) return true; if (mpd_run_shuffle_range(connection, range.start, range.end)) - screen_status_message(_("Shuffled playlist")); + screen_status_message(_("Shuffled queue")); else mpdclient_handle_error(c); return true; @@ -763,6 +768,10 @@ screen_queue_cmd(struct mpdclient *c, command_t cmd) lw->selected--; lw->range_base--; + if (lw->range_selection) + list_window_scroll_to(lw, lw->range_base); + list_window_scroll_to(lw, lw->selected); + screen_queue_save_selection(); return true; @@ -777,6 +786,10 @@ screen_queue_cmd(struct mpdclient *c, command_t cmd) lw->selected++; lw->range_base++; + if (lw->range_selection) + list_window_scroll_to(lw, lw->range_base); + list_window_scroll_to(lw, lw->selected); + screen_queue_save_selection(); return true;