aboutsummaryrefslogtreecommitdiffstats
path: root/screen_help.c
diff options
context:
space:
mode:
Diffstat (limited to 'screen_help.c')
-rw-r--r--screen_help.c165
1 files changed, 165 insertions, 0 deletions
diff --git a/screen_help.c b/screen_help.c
new file mode 100644
index 000000000..d38e4a6c9
--- /dev/null
+++ b/screen_help.c
@@ -0,0 +1,165 @@
+/*
+ * $Id: screen_help.c,v 1.8 2004/03/17 13:40:25 kalle Exp $
+ *
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <ncurses.h>
+
+#include "config.h"
+#include "libmpdclient.h"
+#include "mpc.h"
+#include "command.h"
+#include "screen.h"
+#include "screen_help.h"
+
+typedef struct
+{
+ char highlight;
+ command_t command;
+ char *text;
+} help_text_row_t;
+
+static help_text_row_t help_text[] =
+{
+ { 1, CMD_NONE, " Keys " },
+ { 0, CMD_NONE, " --------" },
+ { 0, CMD_STOP, "Stop" },
+ { 0, CMD_PAUSE, "Pause" },
+ { 0, CMD_TRACK_NEXT, "Next track" },
+ { 0, CMD_TRACK_PREVIOUS, "Prevoius track (back)" },
+ { 0, CMD_VOLUME_DOWN, "Volume down" },
+ { 0, CMD_VOLUME_UP, "Volume up" },
+ { 0, CMD_NONE, " " },
+ { 0, CMD_LIST_NEXT, "Move cursor up" },
+ { 0, CMD_LIST_PREVIOUS, "Move cursor down" },
+ { 0, CMD_SCREEN_NEXT, "Change screen" },
+ { 0, CMD_SCREEN_HELP, "Help screen" },
+ { 0, CMD_SCREEN_PLAY, "Playlist screen" },
+ { 0, CMD_SCREEN_FILE, "Browse screen" },
+ { 0, CMD_QUIT, "Quit" },
+ { 0, CMD_NONE, " " },
+ { 0, CMD_NONE, " " },
+ { 1, CMD_NONE, " Keys - Playlist screen " },
+ { 0, CMD_NONE, " --------------------------" },
+ { 0, CMD_PLAY, "Play selected entry" },
+ { 0, CMD_DELETE, "Delete selected entry from platlist" },
+ { 0, CMD_SHUFFLE, "Shuffle playlist" },
+ { 0, CMD_CLEAR, "Clear playlist" },
+ { 0, CMD_REPEAT, "Toggle repeat mode" },
+ { 0, CMD_RANDOM, "Toggle random mode" },
+ { 0, CMD_NONE, " " },
+ { 0, CMD_NONE, " " },
+ { 1, CMD_NONE, " Keys - Browse screen " },
+ { 0, CMD_NONE, " ------------------------" },
+ { 0, CMD_PLAY, "Change to selected directory" },
+ { 0, CMD_SELECT, "Add/Remove selected file" },
+ { 0, CMD_NONE, " " },
+ { 0, CMD_NONE, " " },
+ { 1, CMD_NONE, " " PACKAGE " version " VERSION },
+ { 0, CMD_NONE, NULL }
+};
+
+static int help_text_rows = -1;
+
+
+
+static char *
+list_callback(int index, int *highlight, void *data)
+{
+ static char buf[256];
+
+ if( help_text_rows<0 )
+ {
+ help_text_rows = 0;
+ while( help_text[help_text_rows].text )
+ help_text_rows++;
+ }
+
+ *highlight = 0;
+ if( index<help_text_rows )
+ {
+ *highlight = help_text[index].highlight;
+ if( help_text[index].command == CMD_NONE )
+ return help_text[index].text;
+ snprintf(buf, 256,
+ "%20s : %s",
+ command_get_keys(help_text[index].command),
+ help_text[index].text);
+ return buf;
+ }
+
+ return NULL;
+}
+
+
+void
+help_open(screen_t *screen, mpd_client_t *c)
+{
+}
+
+void
+help_close(screen_t *screen, mpd_client_t *c)
+{
+}
+
+void
+help_paint(screen_t *screen, mpd_client_t *c)
+{
+ list_window_t *w = screen->helplist;
+
+ w->clear = 1;
+ list_window_paint(screen->helplist, list_callback, NULL);
+ wrefresh(screen->helplist->w);
+}
+
+void
+help_update(screen_t *screen, mpd_client_t *c)
+{
+ list_window_t *w = screen->helplist;
+
+ if( w->repaint )
+ {
+ list_window_paint(screen->helplist, list_callback, NULL);
+ wrefresh(screen->helplist->w);
+ w->repaint = 0;
+ }
+}
+
+
+int
+help_cmd(screen_t *screen, mpd_client_t *c, command_t cmd)
+{
+ switch(cmd)
+ {
+ case CMD_LIST_PREVIOUS:
+ list_window_previous(screen->helplist);
+ screen->helplist->repaint=1;
+ break;
+ case CMD_LIST_NEXT:
+ list_window_next(screen->helplist, help_text_rows);
+ screen->helplist->repaint=1;
+ break;
+ case CMD_LIST_FIRST:
+ list_window_first(screen->helplist);
+ screen->helplist->repaint = 1;
+ break;
+ case CMD_LIST_LAST:
+ list_window_last(screen->helplist, help_text_rows);
+ screen->helplist->repaint = 1;
+ break;
+ case CMD_LIST_PREVIOUS_PAGE:
+ list_window_previous_page(screen->helplist);
+ screen->helplist->repaint = 1;
+ break;
+ case CMD_LIST_NEXT_PAGE:
+ list_window_next_page(screen->helplist, help_text_rows);
+ screen->helplist->repaint = 1;
+ break;
+ default:
+ return 0;
+ }
+ return 1;
+}