X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fscreen_search.c;h=deab64ab05ba96bc5ea35e181834724f646fd2a9;hb=f06ea973f90093fed3cf81954698c4139818064b;hp=7c35fd2fa44da1c86a0e60e460fadbac7a5956aa;hpb=2d5758c66089501bd41015c718dfb3eeb934373f;p=ncmpc.git diff --git a/src/screen_search.c b/src/screen_search.c index 7c35fd2..deab64a 100644 --- a/src/screen_search.c +++ b/src/screen_search.c @@ -1,25 +1,25 @@ /* 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 * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ + */ #include "screen_search.h" #include "screen_interface.h" -#include "screen_message.h" +#include "screen_status.h" #include "screen.h" #include "i18n.h" #include "options.h" @@ -36,6 +36,7 @@ enum { SEARCH_URI = MPD_TAG_COUNT + 100, + SEARCH_ARTIST_TITLE }; static const struct { @@ -57,13 +58,11 @@ static const struct { static int search_get_tag_id(const char *name) { - unsigned i; - if (g_ascii_strcasecmp(name, "file") == 0 || strcasecmp(name, _("file")) == 0) return SEARCH_URI; - for (i = 0; i < MPD_TAG_COUNT; ++i) + for (unsigned i = 0; i < MPD_TAG_COUNT; ++i) if (search_tag[i].name != NULL && (strcasecmp(search_tag[i].name, name) == 0 || strcasecmp(search_tag[i].localname, name) == 0)) @@ -72,8 +71,6 @@ search_get_tag_id(const char *name) return -1; } -#define SEARCH_ARTIST_TITLE 999 - typedef struct { enum mpd_tag_type table; const char *label; @@ -83,7 +80,7 @@ static search_type_t mode[] = { { MPD_TAG_TITLE, N_("Title") }, { MPD_TAG_ARTIST, N_("Artist") }, { MPD_TAG_ALBUM, N_("Album") }, - { SEARCH_URI, N_("file") }, + { SEARCH_URI, N_("Filename") }, { SEARCH_ARTIST_TITLE, N_("Artist + Title") }, { 0, NULL } }; @@ -108,8 +105,7 @@ static const char *const help_text[] = { /* search info */ static const char * -lw_search_help_callback(unsigned idx, G_GNUC_UNUSED bool *highlight, - G_GNUC_UNUSED char** sc, G_GNUC_UNUSED void *data) +lw_search_help_callback(unsigned idx, gcc_unused void *data) { assert(idx < G_N_ELEMENTS(help_text)); @@ -206,23 +202,19 @@ search_simple_query(struct mpd_connection *connection, bool exact_match, static struct filelist * search_advanced_query(struct mpd_connection *connection, char *query) { - int i,j; - char **strv; - int table[10]; - char *arg[10]; - struct filelist *fl = NULL; - advanced_search_mode = FALSE; if (strchr(query, ':') == NULL) return NULL; - strv = g_strsplit_set(query, ": ", 0); + char **strv = g_strsplit_set(query, ": ", 0); + int table[10]; memset(table, 0, 10*sizeof(int)); + + char *arg[10]; memset(arg, 0, 10*sizeof(char *)); - i=0; - j=0; + int i = 0, j = 0; while (strv[i] && strlen(strv[i]) > 0 && i < 9) { int id = search_get_tag_id(strv[i]); if (id == -1) { @@ -279,7 +271,7 @@ search_advanced_query(struct mpd_connection *connection, char *query) } mpd_search_commit(connection); - fl = filelist_new_recv(connection); + struct filelist *fl = filelist_new_recv(connection); if (!mpd_response_finish(connection)) { filelist_free(fl); fl = NULL; @@ -295,9 +287,10 @@ static struct filelist * do_search(struct mpdclient *c, char *query) { struct mpd_connection *connection = mpdclient_get_connection(c); - struct filelist *fl; + if (connection == NULL) + return NULL; - fl = search_advanced_query(connection, query); + struct filelist *fl = search_advanced_query(connection, query); if (fl != NULL) return fl; @@ -359,6 +352,11 @@ static void screen_search_init(WINDOW *w, int cols, int rows) { browser.lw = list_window_init(w, cols, rows); + if (options.search_format != NULL) { + browser.song_format = options.search_format; + } else { + browser.song_format = options.list_format; + } list_window_set_length(browser.lw, G_N_ELEMENTS(help_text)); } @@ -378,13 +376,13 @@ screen_search_quit(void) } static void -screen_search_open(G_GNUC_UNUSED struct mpdclient *c) +screen_search_open(gcc_unused struct mpdclient *c) { // if( pattern==NULL ) // search_new(screen, c); // else screen_status_printf(_("Press %s for a new search"), - get_key_names(CMD_SCREEN_SEARCH,0)); + get_key_names(CMD_SCREEN_SEARCH, false)); search_check_mode(); } @@ -399,7 +397,7 @@ screen_search_paint(void) { if (browser.filelist) { browser.lw->hide_cursor = false; - list_window_paint(browser.lw, browser_lw_callback, browser.filelist); + screen_browser_paint(&browser); } else { browser.lw->hide_cursor = true; list_window_paint(browser.lw, lw_search_help_callback, NULL); @@ -418,7 +416,7 @@ screen_search_get_title(char *str, size_t size) _(mode[options.search_mode].label)); else g_snprintf(str, size, _("Search: Press %s for a new search [%s]"), - get_key_names(CMD_SCREEN_SEARCH,0), + get_key_names(CMD_SCREEN_SEARCH, false), _(mode[options.search_mode].label)); return str; @@ -427,7 +425,7 @@ screen_search_get_title(char *str, size_t size) static void screen_search_update(struct mpdclient *c) { - if (browser.filelist != NULL && c->events & MPD_IDLE_PLAYLIST) { + if (browser.filelist != NULL && c->events & MPD_IDLE_QUEUE) { screen_browser_sync_highlights(browser.filelist, &c->playlist); search_repaint(); }