X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fscreen_browser.c;h=6c802f6e87aaa2a0654a0ce7b42c2d88d4598cdb;hb=d0d23a29f2f710e39ae14be009656f7fc2c30560;hp=45b782a079378b5d2c3fbe84cae10e211c727fd2;hpb=323ee425fe07485577efee5636ba47efcc8b19fc;p=ncmpc.git diff --git a/src/screen_browser.c b/src/screen_browser.c index 45b782a..6c802f6 100644 --- a/src/screen_browser.c +++ b/src/screen_browser.c @@ -1,27 +1,28 @@ /* 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 "config.h" #include "screen_browser.h" #include "screen_file.h" #include "screen_song.h" #include "screen_lyrics.h" -#include "screen_message.h" +#include "screen_status.h" #include "screen_find.h" #include "screen.h" #include "i18n.h" @@ -44,8 +45,6 @@ #define HIGHLIGHT (0x01) #endif -static const char playlist_format[] = "*%s*"; - #ifndef NCMPC_MINI /* sync highlight flags with playlist */ @@ -99,6 +98,7 @@ browser_lw_callback(unsigned idx, void *data) mpd_entity_get_directory(entity); char *directory = utf8_to_locale(g_basename(mpd_directory_get_path(dir))); g_strlcpy(buf, directory, sizeof(buf)); + g_free(directory); return buf; } else if (mpd_entity_get_type(entity) == MPD_ENTITY_TYPE_SONG) { const struct mpd_song *song = mpd_entity_get_song(entity); @@ -110,7 +110,7 @@ browser_lw_callback(unsigned idx, void *data) mpd_entity_get_playlist(entity); char *filename = utf8_to_locale(g_basename(mpd_playlist_get_path(playlist))); - g_snprintf(buf, BUFSIZE, playlist_format, filename); + g_strlcpy(buf, filename, sizeof(buf)); g_free(filename); return buf; } @@ -143,6 +143,9 @@ static bool enqueue_and_play(struct mpdclient *c, struct filelist_entry *entry) { struct mpd_connection *connection = mpdclient_get_connection(c); + if (connection == NULL) + return false; + const struct mpd_song *song = mpd_entity_get_song(entry->entity); int id; @@ -166,7 +169,7 @@ enqueue_and_play(struct mpdclient *c, struct filelist_entry *entry) entry->flags |= HIGHLIGHT; #endif strfsong(buf, BUFSIZE, options.list_format, song); - screen_status_printf(_("Adding \'%s\' to playlist"), buf); + screen_status_printf(_("Adding \'%s\' to queue"), buf); } if (!mpd_run_play_id(connection, id)) { @@ -246,7 +249,7 @@ browser_handle_enter(struct screen_browser *browser, struct mpdclient *c) static bool browser_select_entry(struct mpdclient *c, struct filelist_entry *entry, - G_GNUC_UNUSED gboolean toggle) + gcc_unused gboolean toggle) { assert(entry != NULL); assert(entry->entity != NULL); @@ -261,7 +264,7 @@ browser_select_entry(struct mpdclient *c, struct filelist_entry *entry, if (mpdclient_cmd_add_path(c, mpd_directory_get_path(dir))) { char *tmp = utf8_to_locale(mpd_directory_get_path(dir)); - screen_status_printf(_("Adding \'%s\' to playlist"), tmp); + screen_status_printf(_("Adding \'%s\' to queue"), tmp); g_free(tmp); } @@ -286,7 +289,7 @@ browser_select_entry(struct mpdclient *c, struct filelist_entry *entry, char buf[BUFSIZE]; strfsong(buf, BUFSIZE, options.list_format, song); - screen_status_printf(_("Adding \'%s\' to playlist"), buf); + screen_status_printf(_("Adding \'%s\' to queue"), buf); } #ifndef NCMPC_MINI } else { @@ -311,7 +314,7 @@ browser_handle_select(struct screen_browser *browser, struct mpdclient *c) { struct list_window_range range; struct filelist_entry *entry; - bool success; + bool success = false; list_window_get_range(browser->lw, &range); for (unsigned i = range.start; i < range.end; ++i) { @@ -329,14 +332,15 @@ browser_handle_add(struct screen_browser *browser, struct mpdclient *c) { struct list_window_range range; struct filelist_entry *entry; - bool success; + bool success = false; list_window_get_range(browser->lw, &range); for (unsigned i = range.start; i < range.end; ++i) { entry = browser_get_index(browser, i); if (entry != NULL && entry->entity != NULL) - success = browser_select_entry(c, entry, FALSE); + success = browser_select_entry(c, entry, FALSE) || + success; } return range.end == range.start + 1 && success; @@ -483,7 +487,7 @@ browser_cmd(struct screen_browser *browser, return false; } -static void +void screen_browser_paint_directory(WINDOW *w, unsigned width, bool selected, const char *name) { @@ -535,11 +539,6 @@ screen_browser_paint_callback(WINDOW *w, unsigned i, highlight = false; #endif - if (highlight) - colors_use(w, COLOR_LIST_BOLD); - else - colors_use(w, COLOR_LIST); - switch (mpd_entity_get_type(entity)) { case MPD_ENTITY_TYPE_DIRECTORY: directory = mpd_entity_get_directory(entity); @@ -550,7 +549,7 @@ screen_browser_paint_callback(WINDOW *w, unsigned i, case MPD_ENTITY_TYPE_SONG: paint_song_row(w, y, width, selected, highlight, - mpd_entity_get_song(entity)); + mpd_entity_get_song(entity), NULL); break; case MPD_ENTITY_TYPE_PLAYLIST: @@ -561,13 +560,9 @@ screen_browser_paint_callback(WINDOW *w, unsigned i, break; default: - waddstr(w, ""); + row_paint_text(w, width, highlight ? COLOR_LIST_BOLD : COLOR_LIST, + selected, ""); } - - whline(w, ' ', width); - - if (selected) - wattroff(w, A_REVERSE); } void