diff --git a/src/screen_browser.c b/src/screen_browser.c
index 313f9da6688e31865becda4a5ce95d73c3df2e60..e0c37cbc2e0a48a04e1a66ee3be030b6aad6786a 100644 (file)
--- a/src/screen_browser.c
+++ b/src/screen_browser.c
/* ncmpc (Ncurses MPD Client)
- * (c) 2004-2010 The Music Player Daemon Project
+ * (c) 2004-2017 The Music Player Daemon Project
* Project homepage: http://musicpd.org
*
* This program is free software; you can redistribute it and/or modify
#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"
screen_browser_sync_highlights(struct filelist *fl,
const struct mpdclient_playlist *playlist)
{
- guint i;
-
- for (i = 0; i < filelist_length(fl); ++i) {
+ for (unsigned i = 0; i < filelist_length(fl); ++i) {
struct filelist_entry *entry = filelist_get(fl, i);
const struct mpd_entity *entity = entry->entity;
{
const struct filelist *fl = (const struct filelist *) data;
static char buf[BUFSIZE];
- const struct filelist_entry *entry;
- const struct mpd_entity *entity;
assert(fl != NULL);
assert(idx < filelist_length(fl));
- entry = filelist_get(fl, idx);
+ const struct filelist_entry *entry = filelist_get(fl, idx);
assert(entry != NULL);
- entity = entry->entity;
+ const struct mpd_entity *entity = entry->entity;
if( entity == NULL )
return "..";
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)) {
browser_handle_enter(struct screen_browser *browser, struct mpdclient *c)
{
struct filelist_entry *entry = browser_get_selected_entry(browser);
- struct mpd_entity *entity;
-
if (entry == NULL)
return false;
- entity = entry->entity;
+ struct mpd_entity *entity = entry->entity;
if (entity == NULL)
return false;
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);
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);
}
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 {
browser_handle_select(struct screen_browser *browser, struct mpdclient *c)
{
struct list_window_range range;
- struct filelist_entry *entry;
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);
-
+ struct filelist_entry *entry = browser_get_index(browser, i);
if (entry != NULL && entry->entity != NULL)
success = browser_select_entry(c, entry, TRUE);
}
browser_handle_add(struct screen_browser *browser, struct mpdclient *c)
{
struct list_window_range range;
- struct filelist_entry *entry;
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);
-
+ struct filelist_entry *entry = browser_get_index(browser, i);
if (entry != NULL && entry->entity != NULL)
success = browser_select_entry(c, entry, FALSE) ||
success;
static void
browser_handle_select_all(struct screen_browser *browser, struct mpdclient *c)
{
- guint i;
-
if (browser->filelist == NULL)
return;
- for (i = 0; i < filelist_length(browser->filelist); ++i) {
+ for (unsigned i = 0; i < filelist_length(browser->filelist); ++i) {
struct filelist_entry *entry = filelist_get(browser->filelist, i);
if (entry != NULL && entry->entity != NULL)
@@ -363,16 +351,15 @@ browser_handle_select_all(struct screen_browser *browser, struct mpdclient *c)
}
#ifdef HAVE_GETMOUSE
-static int
-browser_handle_mouse_event(struct screen_browser *browser, struct mpdclient *c)
+
+bool
+browser_mouse(struct screen_browser *browser,
+ struct mpdclient *c, gcc_unused int x, int row, mmask_t bstate)
{
- int row;
unsigned prev_selected = browser->lw->selected;
- unsigned long bstate;
- if (screen_get_mouse_event(c, &bstate, &row) ||
- list_window_mouse(browser->lw, bstate, row))
- return 1;
+ if (list_window_mouse(browser->lw, bstate, row))
+ return true;
list_window_set_cursor(browser->lw, browser->lw->start + row);
@@ -384,20 +371,19 @@ browser_handle_mouse_event(struct screen_browser *browser, struct mpdclient *c)
browser_handle_select(browser, c);
}
- return 1;
+ return true;
}
+
#endif
static void
screen_browser_paint_callback(WINDOW *w, unsigned i, unsigned y,
- unsigned width, bool selected, void *data);
+ unsigned width, bool selected, const void *data);
bool
browser_cmd(struct screen_browser *browser,
struct mpdclient *c, command_t cmd)
{
- const struct mpd_song *song;
-
if (browser->filelist == NULL)
return false;
return true;
switch (cmd) {
+#if defined(ENABLE_SONG_SCREEN) || defined(ENABLE_LYRICS_SCREEN)
+ const struct mpd_song *song;
+#endif
+
case CMD_LIST_FIND:
case CMD_LIST_RFIND:
case CMD_LIST_FIND_NEXT:
browser->filelist);
return true;
case CMD_LIST_JUMP:
- screen_jump(browser->lw, browser_lw_callback,
- screen_browser_paint_callback, browser->filelist);
- return true;
-
-#ifdef HAVE_GETMOUSE
- case CMD_MOUSE_EVENT:
- browser_handle_mouse_event(browser, c);
+ screen_jump(browser->lw,
+ browser_lw_callback, browser->filelist,
+ screen_browser_paint_callback, browser);
return true;
-#endif
#ifdef ENABLE_SONG_SCREEN
case CMD_SCREEN_SONG:
return false;
switch (cmd) {
+ const struct mpd_song *song;
+
case CMD_PLAY:
browser_handle_enter(browser, c);
return true;
static void
screen_browser_paint_callback(WINDOW *w, unsigned i,
unsigned y, unsigned width,
- bool selected, void *data)
+ bool selected, const void *data)
{
- const struct filelist *fl = (const struct filelist *) data;
- const struct filelist_entry *entry;
- const struct mpd_entity *entity;
- bool highlight;
- const struct mpd_directory *directory;
- const struct mpd_playlist *playlist;
- char *p;
+ const struct screen_browser *browser = (const struct screen_browser *) data;
- assert(fl != NULL);
- assert(i < filelist_length(fl));
+ assert(browser != NULL);
+ assert(browser->filelist != NULL);
+ assert(i < filelist_length(browser->filelist));
- entry = filelist_get(fl, i);
+ const struct filelist_entry *entry = filelist_get(browser->filelist, i);
assert(entry != NULL);
- entity = entry->entity;
+ const struct mpd_entity *entity = entry->entity;
if (entity == NULL) {
screen_browser_paint_directory(w, width, selected, "..");
return;
}
#ifndef NCMPC_MINI
- highlight = (entry->flags & HIGHLIGHT) != 0;
+ const bool highlight = (entry->flags & HIGHLIGHT) != 0;
#else
- highlight = false;
+ const bool highlight = false;
#endif
switch (mpd_entity_get_type(entity)) {
+ const struct mpd_directory *directory;
+ const struct mpd_playlist *playlist;
+ char *p;
+
case MPD_ENTITY_TYPE_DIRECTORY:
directory = mpd_entity_get_directory(entity);
p = utf8_to_locale(g_basename(mpd_directory_get_path(directory)));
case MPD_ENTITY_TYPE_SONG:
paint_song_row(w, y, width, selected, highlight,
- mpd_entity_get_song(entity), NULL);
+ mpd_entity_get_song(entity), NULL, browser->song_format);
break;
case MPD_ENTITY_TYPE_PLAYLIST:
screen_browser_paint(const struct screen_browser *browser)
{
list_window_paint2(browser->lw, screen_browser_paint_callback,
- browser->filelist);
+ browser);
}