Code

screen_artist: moved code to artist_lw_cmd()
[ncmpc.git] / src / screen_artist.c
index 71b168841dc73d8c18f82e5f86244ed4e025507b..03b4fed421ab69165d61a4776f750f389e834875 100644 (file)
@@ -286,14 +286,32 @@ add_query(mpdclient_t *c, int table, char *_filter)
        }
 }
 
+static int
+artist_lw_cmd(command_t cmd)
+{
+       switch (mode) {
+       case LIST_ARTISTS:
+       case LIST_ALBUMS:
+               return list_window_cmd(browser.lw, metalist_length, cmd);
+
+       case LIST_SONGS:
+               return list_window_cmd(browser.lw,
+                                      filelist_length(browser.filelist),
+                                      cmd);
+       }
+
+       assert(0);
+       return 0;
+}
+
 static int
 artist_cmd(screen_t *screen, mpdclient_t *c, command_t cmd)
 {
        char *selected;
+       int ret;
 
-       if (browser.filelist == NULL && metalist != NULL &&
-           list_window_cmd(browser.lw, metalist_length, cmd)) {
-               list_window_paint(browser.lw, artist_lw_callback, metalist);
+       if (artist_lw_cmd(cmd)) {
+               artist_repaint();
                wrefresh(browser.lw->w);
                return 1;
        }
@@ -396,6 +414,7 @@ artist_cmd(screen_t *screen, mpdclient_t *c, command_t cmd)
                break;
 
        case CMD_SELECT:
+       case CMD_ADD:
                switch(mode) {
                case LIST_ARTISTS:
                        selected = g_list_nth_data(metalist,
@@ -423,7 +442,10 @@ artist_cmd(screen_t *screen, mpdclient_t *c, command_t cmd)
                        break;
 
                case LIST_SONGS:
-                       if (browser_handle_select(&browser, c) == 0)
+                       ret = cmd == CMD_SELECT
+                               ? browser_handle_select(&browser, c)
+                               : browser_handle_add(&browser, c);
+                       if (ret == 0)
                                /* continue and select next item... */
                                cmd = CMD_LIST_NEXT;
                        break;
@@ -462,15 +484,6 @@ artist_cmd(screen_t *screen, mpdclient_t *c, command_t cmd)
                break;
        }
 
-       if (browser.filelist != NULL &&
-           list_window_cmd(browser.lw, filelist_length(browser.filelist),
-                           cmd)) {
-               list_window_paint(browser.lw, browser_lw_callback,
-                                 browser.filelist);
-               wrefresh(browser.lw->w);
-               return 1;
-       }
-
        return 0;
 }