X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fscreen.h;h=7aa72d7d296188e39f73a15f0b26460c1cc6ce34;hb=51cb2863dd7def8505ba37bdbcb8221416c26f55;hp=f674b1cffa64db216f7bcdae94147b0fa0120047;hpb=77c69999a63e6b999814cb39c35bb4d30646c145;p=ncmpc.git diff --git a/src/screen.h b/src/screen.h index f674b1c..7aa72d7 100644 --- a/src/screen.h +++ b/src/screen.h @@ -1,102 +1,95 @@ #ifndef SCREEN_H #define SCREEN_H -#include -#include "list_window.h" -/* minumum window size */ -#define SCREEN_MIN_COLS 14 -#define SCREEN_MIN_ROWS 5 +#include "mpdclient.h" +#include "command.h" + +#include +#include #define IS_PLAYING(s) (s==MPD_STATUS_STATE_PLAY) #define IS_PAUSED(s) (s==MPD_STATUS_STATE_PAUSE) #define IS_STOPPED(s) (!(IS_PLAYING(s) | IS_PAUSED(s))) +#define MAX_SONGNAME_LENGTH 512 -typedef enum -{ - SCREEN_PLAY_WINDOW = 0, - SCREEN_FILE_WINDOW, - SCREEN_HELP_WINDOW, - SCREEN_KEYDEF_WINDOW, - SCREEN_CLOCK_WINDOW, - SCREEN_SEARCH_WINDOW - -} screen_mode_t; - -typedef struct -{ - WINDOW *w; - int rows, cols; - -} window_t; +struct list_window; +struct window { + WINDOW *w; + int rows, cols; + int cur_action_id; +}; +typedef struct screen { + struct window top_window; + struct window main_window; + struct window progress_window; + struct window status_window; -typedef struct -{ - window_t top_window; - window_t main_window; - window_t progress_window; - window_t status_window; + /* GTime is equivalent to time_t */ + GTime start_timestamp; + GTime status_timestamp; + GTime input_timestamp; + GTime last_cmd; - GList *screen_list; + int cols, rows; - time_t start_timestamp; - time_t status_timestamp; - time_t input_timestamp; - command_t last_cmd; + int mode; - int cols, rows; + char *buf; + size_t buf_size; - screen_mode_t mode; - - char *buf; - size_t buf_size; - - char *findbuf; - GList *find_history; - - int painted; + char *findbuf; + GList *find_history; + int painted; } screen_t; -typedef void (*screen_init_fn_t) (WINDOW *w, int cols, int rows); -typedef void (*screen_exit_fn_t) (void); -typedef void (*screen_open_fn_t) (screen_t *screen, mpd_client_t *c); -typedef void (*screen_close_fn_t) (void); -typedef void (*screen_resize_fn_t) (int cols, int rows); -typedef void (*screen_paint_fn_t) (screen_t *screen, mpd_client_t *c); -typedef void (*screen_update_fn_t) (screen_t *screen, mpd_client_t *c); -typedef int (*screen_cmd_fn_t) (screen_t *scr, mpd_client_t *c, command_t cmd); -typedef char * (*screen_title_fn_t) (void); -typedef list_window_t * (*screen_get_lw_fn_t) (void); - -typedef struct -{ - screen_init_fn_t init; - screen_exit_fn_t exit; - screen_open_fn_t open; - screen_close_fn_t close; - screen_resize_fn_t resize; - screen_paint_fn_t paint; - screen_update_fn_t update; - screen_cmd_fn_t cmd; - screen_title_fn_t get_title; - screen_get_lw_fn_t get_lw; - +typedef void (*screen_init_fn_t)(WINDOW *w, int cols, int rows); +typedef void (*screen_exit_fn_t)(void); +typedef void (*screen_open_fn_t)(struct screen *screen, mpdclient_t *c); +typedef void (*screen_close_fn_t)(void); +typedef void (*screen_resize_fn_t)(int cols, int rows); +typedef void (*screen_paint_fn_t)(struct screen *screen, mpdclient_t *c); +typedef void (*screen_update_fn_t)(struct screen *screen, mpdclient_t *c); +typedef int (*screen_cmd_fn_t)(struct screen *scr, mpdclient_t *c, command_t cmd); +typedef const char *(*screen_title_fn_t)(char *s, size_t size); +typedef struct list_window *(*screen_get_lw_fn_t) (void); + +typedef struct screen_functions { + screen_init_fn_t init; + screen_exit_fn_t exit; + screen_open_fn_t open; + screen_close_fn_t close; + screen_resize_fn_t resize; + screen_paint_fn_t paint; + screen_update_fn_t update; + screen_cmd_fn_t cmd; + screen_title_fn_t get_title; + screen_get_lw_fn_t get_lw; } screen_functions_t; +void +ncurses_init(void); -int screen_init(void); +int screen_init(mpdclient_t *c); int screen_exit(void); void screen_resize(void); -void screen_status_message(char *msg); -void screen_status_printf(char *format, ...); +void screen_status_message(const char *msg); +void screen_status_printf(const char *format, ...); char *screen_error(void); -void screen_paint(mpd_client_t *c); -void screen_update(mpd_client_t *c); -void screen_idle(mpd_client_t *c); -void screen_cmd(mpd_client_t *c, command_t cmd); +void screen_paint(mpdclient_t *c); +void screen_update(mpdclient_t *c); +void screen_idle(mpdclient_t *c); +void screen_cmd(mpdclient_t *c, command_t cmd); +gint screen_get_id(const char *name); + + +gint get_cur_mode_id(void); +int screen_get_mouse_event(mpdclient_t *c, + struct list_window *lw, int lw_length, + unsigned long *bstate, int *row); #endif