aboutsummaryrefslogtreecommitdiffstats
path: root/screen_help.c
diff options
context:
space:
mode:
authorKalle Wallin <kaw@linux.se>2004-04-19 22:06:41 +0000
committerKalle Wallin <kaw@linux.se>2004-04-19 22:06:41 +0000
commitbf28b56f26bb5753c706e2e249265f95b500fd78 (patch)
tree7dbc577ad0ab0b293ab0ff00b86ee93ab80bae4d /screen_help.c
parent2a803438b5efaee06de58af19a7cb501904d2901 (diff)
downloadmpd-bf28b56f26bb5753c706e2e249265f95b500fd78.tar.gz
mpd-bf28b56f26bb5753c706e2e249265f95b500fd78.tar.xz
mpd-bf28b56f26bb5753c706e2e249265f95b500fd78.zip
Major cleanup. The goal of this is to simplify addition of "screens".
git-svn-id: https://svn.musicpd.org/ncmpc/trunk@832 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to '')
-rw-r--r--screen_help.c92
1 files changed, 71 insertions, 21 deletions
diff --git a/screen_help.c b/screen_help.c
index c0661a67f..c19049717 100644
--- a/screen_help.c
+++ b/screen_help.c
@@ -1,3 +1,21 @@
+/*
+ * (c) 2004 by Kalle Wallin (kaw@linux.se)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
#include <stdlib.h>
#include <string.h>
#include <glib.h>
@@ -46,6 +64,9 @@ static help_text_row_t help_text[] =
{ 0, CMD_SCREEN_HELP, NULL },
{ 0, CMD_SCREEN_PLAY, NULL },
{ 0, CMD_SCREEN_FILE, NULL },
+#ifdef ENABLE_KEYDEF_SCREEN
+ { 0, CMD_SCREEN_KEYDEF, NULL },
+#endif
{ 0, CMD_QUIT, NULL },
{ 0, CMD_NONE, NULL },
{ 0, CMD_NONE, NULL },
@@ -75,7 +96,7 @@ static help_text_row_t help_text[] =
};
static int help_text_rows = -1;
-
+static list_window_t *lw = NULL;
static char *
@@ -117,51 +138,80 @@ list_callback(int index, int *highlight, void *data)
return NULL;
}
+static void
+help_init(WINDOW *w, int cols, int rows)
+{
+ lw = list_window_init(w, cols, rows);
+}
-void
-help_open(screen_t *screen, mpd_client_t *c)
+static void
+help_exit(void)
{
+ list_window_free(lw);
}
-void
-help_close(screen_t *screen, mpd_client_t *c)
+
+static char *
+help_title(void)
{
+ return (TOP_HEADER_PREFIX "Help");
}
-void
+static 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);
+ lw->clear = 1;
+ list_window_paint(lw, list_callback, NULL);
+ wrefresh(lw->w);
}
-void
+static void
help_update(screen_t *screen, mpd_client_t *c)
{
- list_window_t *w = screen->helplist;
-
- if( w->repaint )
+ if( lw->repaint )
{
- list_window_paint(screen->helplist, list_callback, NULL);
- wrefresh(screen->helplist->w);
- w->repaint = 0;
+ list_window_paint(lw, list_callback, NULL);
+ wrefresh(lw->w);
+ lw->repaint = 0;
}
}
-int
+static int
help_cmd(screen_t *screen, mpd_client_t *c, command_t cmd)
{
int retval;
- retval = list_window_cmd(screen->helplist, help_text_rows, cmd);
+ retval = list_window_cmd(lw, help_text_rows, cmd);
if( !retval )
return screen_find(screen, c,
- screen->helplist, help_text_rows,
+ lw, help_text_rows,
cmd, list_callback);
return retval;
}
+
+static list_window_t *
+help_lw(void)
+{
+ return lw;
+}
+
+screen_functions_t *
+get_screen_help(void)
+{
+ static screen_functions_t functions;
+
+ memset(&functions, 0, sizeof(screen_functions_t));
+ functions.init = help_init;
+ functions.exit = help_exit;
+ functions.open = NULL;
+ functions.close = NULL;
+ functions.paint = help_paint;
+ functions.update = help_update;
+ functions.cmd = help_cmd;
+ functions.get_lw = help_lw;
+ functions.get_title = help_title;
+
+ return &functions;
+}