Code

Update copyright notices
[ncmpc.git] / src / screen_utils.c
index 9dde20c03aa8a2fd3e0ac0abd6ecbb3aeafabea4..ab1b39b0163c6c25a32de3bf9cff58b0f7d19935 100644 (file)
@@ -1,5 +1,5 @@
 /* ncmpc (Ncurses MPD Client)
- * (c) 2004-2009 The Music Player Daemon Project
+ * (c) 2004-2010 The Music Player Daemon Project
  * Project homepage: http://musicpd.org
  
  * This program is free software; you can redistribute it and/or modify
 #include "colors.h"
 #include "wreadln.h"
 
-#include <stdlib.h>
-#include <unistd.h>
-
-#define FIND_PROMPT  _("Find")
-#define RFIND_PROMPT _("Find backward")
+#include <mpd/client.h>
 
 void
 screen_bell(void)
@@ -42,8 +38,9 @@ screen_bell(void)
 }
 
 int
-screen_getch(WINDOW *w, const char *prompt)
+screen_getch(const char *prompt)
 {
+       WINDOW *w = screen.status_bar.window.w;
        int key = -1;
 
        colors_use(w, COLOR_STATUS_ALERT);
@@ -60,7 +57,7 @@ screen_getch(WINDOW *w, const char *prompt)
 #ifdef HAVE_GETMOUSE
        /* ignore mouse events */
        if (key == KEY_MOUSE)
-               return screen_getch(w, prompt);
+               return screen_getch(prompt);
 #endif
 
        noecho();
@@ -70,149 +67,42 @@ screen_getch(WINDOW *w, const char *prompt)
 }
 
 char *
-screen_readln(WINDOW *w,
-             const char *prompt,
+screen_readln(const char *prompt,
              const char *value,
              GList **history,
              GCompletion *gcmp)
 {
+       struct window *window = &screen.status_bar.window;
+       WINDOW *w = window->w;
        char *line = NULL;
 
        wmove(w, 0,0);
        curs_set(1);
        colors_use(w, COLOR_STATUS_ALERT);
-       line = wreadln(w, prompt, value, COLS, history, gcmp);
+       line = wreadln(w, prompt, value, window->cols, history, gcmp);
        curs_set(0);
        return line;
 }
 
 char *
-screen_getstr(WINDOW *w, const char *prompt)
-{
-       return screen_readln(w, prompt, NULL, NULL, NULL);
-}
-
-static char *
-screen_read_password(WINDOW *w, const char *prompt)
+screen_read_password(const char *prompt)
 {
+       struct window *window = &screen.status_bar.window;
+       WINDOW *w = window->w;
        char *ret;
 
-       if (w == NULL) {
-               int rows, cols;
-               getmaxyx(stdscr, rows, cols);
-               /* create window for input */
-               w = newwin(1,  cols, rows-1, 0);
-               leaveok(w, FALSE);
-               keypad(w, TRUE);
-       }
-
        wmove(w, 0,0);
        curs_set(1);
        colors_use(w, COLOR_STATUS_ALERT);
 
        if (prompt == NULL)
-               prompt = _("Password");
-       ret = wreadln_masked(w, prompt, NULL, COLS, NULL, NULL);
+               prompt = _("Password");
+       ret = wreadln_masked(w, prompt, NULL, window->cols, NULL, NULL);
 
        curs_set(0);
        return ret;
 }
 
-static gint
-_screen_auth(struct mpdclient *c, gint recursion)
-{
-       char *password;
-
-       mpd_clearError(c->connection);
-       if (recursion > 2)
-               return 1;
-
-       password = screen_read_password(NULL, NULL);
-       if (password == NULL)
-               return 1;
-
-       mpd_sendPasswordCommand(c->connection, password);
-       g_free(password);
-
-       mpd_finishCommand(c->connection);
-       mpdclient_update(c);
-       if (c->connection->errorCode == MPD_ACK_ERROR_PASSWORD)
-               return  _screen_auth(c, ++recursion);
-       return 0;
-}
-
-gint
-screen_auth(struct mpdclient *c)
-{
-       gint ret = _screen_auth(c, 0);
-       mpdclient_update(c);
-       curs_set(0);
-       return ret;
-}
-
-/* query user for a string and find it in a list window */
-int
-screen_find(list_window_t *lw,
-           int rows,
-           command_t findcmd,
-           list_window_callback_fn_t callback_fn,
-           void *callback_data)
-{
-       int reversed = 0;
-       bool found;
-       const char *prompt = FIND_PROMPT;
-       char *value = options.find_show_last_pattern ? (char *) -1 : NULL;
-
-       if (findcmd == CMD_LIST_RFIND || findcmd == CMD_LIST_RFIND_NEXT) {
-               prompt = RFIND_PROMPT;
-               reversed = 1;
-       }
-
-       switch (findcmd) {
-       case CMD_LIST_FIND:
-       case CMD_LIST_RFIND:
-               if (screen.findbuf) {
-                       g_free(screen.findbuf);
-                       screen.findbuf=NULL;
-               }
-               /* continue... */
-
-       case CMD_LIST_FIND_NEXT:
-       case CMD_LIST_RFIND_NEXT:
-               if (!screen.findbuf)
-                       screen.findbuf=screen_readln(screen.status_window.w,
-                                                    prompt,
-                                                    value,
-                                                    &screen.find_history,
-                                                    NULL);
-
-               if (screen.findbuf == NULL)
-                       return 1;
-
-               found = reversed
-                       ? list_window_rfind(lw,
-                                           callback_fn, callback_data,
-                                           screen.findbuf,
-                                           options.find_wrap,
-                                           options.bell_on_wrap,
-                                           rows)
-                       : list_window_find(lw,
-                                          callback_fn, callback_data,
-                                          screen.findbuf,
-                                          options.find_wrap,
-                                          options.bell_on_wrap);
-               if (!found) {
-                       screen_status_printf(_("Unable to find \'%s\'"),
-                                            screen.findbuf);
-                       screen_bell();
-               }
-               return 1;
-       default:
-               break;
-       }
-       return 0;
-}
-
 void
 screen_display_completion_list(GList *list)
 {
@@ -256,7 +146,7 @@ void
 set_xterm_title(const char *format, ...)
 {
        /* the current xterm title exists under the WM_NAME property */
-       /* and can be retreived with xprop -id $WINDOWID */
+       /* and can be retrieved with xprop -id $WINDOWID */
 
        if (options.enable_xterm_title) {
                if (g_getenv("WINDOWID")) {