Code

mpdclient: move code to mpdclient_invoke_error_callback()
[ncmpc.git] / src / screen_browser.h
index 3ebcff20a7f2423efa266c312887df3d4e8f0725..6679a93cc797f580c10643869d2426def1e9c3f6 100644 (file)
@@ -1,40 +1,73 @@
+/* ncmpc (Ncurses MPD Client)
+ * (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
+ * 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.
+ */
+
+#ifndef SCREEN_BROWSER_H
+#define SCREEN_BROWSER_H
+
+#include "command.h"
+#include "config.h"
+#include "ncmpc_curses.h"
+
+#include <stdbool.h>
+
+struct mpdclient;
+struct mpdclient_playlist;
+struct filelist;
+struct list_window;
+struct list_window_state;
+
 struct screen_browser {
        struct list_window *lw;
-       struct list_window_state *lw_state;
 
-       mpdclient_filelist_t *filelist;
+       struct filelist *filelist;
+       const char *song_format;
 };
 
-void clear_highlights(mpdclient_filelist_t *filelist);
-void sync_highlights(mpdclient_t *c, mpdclient_filelist_t *filelist);
-void set_highlight(mpdclient_filelist_t *filelist, 
-                  mpd_Song *song, 
-                  int highlight);
-
-
-const char *browse_lw_callback(unsigned index, int *highlight, void *filelist);
-
-int browse_handle_select(screen_t *screen, 
-                        mpdclient_t *c,
-                        list_window_t *lw,
-                        mpdclient_filelist_t *filelist);
-int browse_handle_select_all (screen_t *screen, 
-                    mpdclient_t *c,
-                    list_window_t *lw,
-                    mpdclient_filelist_t *filelist);
-int browse_handle_enter(screen_t *screen, 
-                       mpdclient_t *c,
-                       list_window_t *lw,
-                       mpdclient_filelist_t *filelist);
-
-#ifdef HAVE_GETMOUSE
-int browse_handle_mouse_event(screen_t *screen, 
-                             mpdclient_t *c,
-                             list_window_t *lw,
-                             mpdclient_filelist_t *filelist);
+#ifndef NCMPC_MINI
+
+void
+screen_browser_sync_highlights(struct filelist *fl,
+                              const struct mpdclient_playlist *playlist);
+
 #else
-#define browse_handle_mouse_event(s,c,lw,filelist) (0)
+
+#include <glib.h>
+static inline void
+screen_browser_sync_highlights(gcc_unused struct filelist *fl,
+                              gcc_unused const struct mpdclient_playlist *playlist)
+{
+}
+
 #endif
 
+void
+screen_browser_paint_directory(WINDOW *w, unsigned width,
+                              bool selected, const char *name);
 
+void
+screen_browser_paint(const struct screen_browser *browser);
 
+struct filelist_entry *
+browser_get_selected_entry(const struct screen_browser *browser);
+
+bool
+browser_cmd(struct screen_browser *browser,
+           struct mpdclient *c, command_t cmd);
+
+#endif