summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 318c4f1)
raw | patch | inline | side by side (parent: 318c4f1)
author | Max Kellermann <max@duempel.org> | |
Tue, 16 Sep 2008 17:11:40 +0000 (19:11 +0200) | ||
committer | Max Kellermann <max@duempel.org> | |
Tue, 16 Sep 2008 17:11:40 +0000 (19:11 +0200) |
Let us declare struct names in addition to typedef names, so we can
forward-declare them.
forward-declare them.
diff --git a/src/list_window.c b/src/list_window.c
index 01e15c0c5fb780e835374bc5248b753e7871752f..297d3f6624cb2fe9ba7a5146d21bd79c1efa4c5b 100644 (file)
--- a/src/list_window.c
+++ b/src/list_window.c
extern void screen_bell(void);
-list_window_t *
+struct list_window *
list_window_init(WINDOW *w, unsigned width, unsigned height)
{
- list_window_t *lw;
+ struct list_window *lw;
lw = g_malloc0(sizeof(list_window_t));
lw->w = w;
return lw;
}
-list_window_t *
-list_window_free(list_window_t *lw)
+struct list_window *
+list_window_free(struct list_window *lw)
{
if (lw) {
memset(lw, 0, sizeof(list_window_t));
}
void
-list_window_reset(list_window_t *lw)
+list_window_reset(struct list_window *lw)
{
lw->selected = 0;
lw->xoffset = 0;
}
void
-list_window_check_selected(list_window_t *lw, unsigned length)
+list_window_check_selected(struct list_window *lw, unsigned length)
{
if (lw->start + lw->rows > length) {
if (length > lw->rows)
}
void
-list_window_set_selected(list_window_t *lw, unsigned n)
+list_window_set_selected(struct list_window *lw, unsigned n)
{
lw->selected = n;
}
void
-list_window_next(list_window_t *lw, unsigned length)
+list_window_next(struct list_window *lw, unsigned length)
{
if (lw->selected + 1 < length)
lw->selected++;
}
void
-list_window_previous(list_window_t *lw, unsigned length)
+list_window_previous(struct list_window *lw, unsigned length)
{
if (lw->selected > 0)
lw->selected--;
}
void
-list_window_first(list_window_t *lw)
+list_window_first(struct list_window *lw)
{
lw->xoffset = 0;
lw->selected = 0;
}
void
-list_window_last(list_window_t *lw, unsigned length)
+list_window_last(struct list_window *lw, unsigned length)
{
lw->xoffset = 0;
if (length > 0)
}
void
-list_window_next_page(list_window_t *lw, unsigned length)
+list_window_next_page(struct list_window *lw, unsigned length)
{
if (lw->rows < 2)
return;
}
void
-list_window_previous_page(list_window_t *lw)
+list_window_previous_page(struct list_window *lw)
{
if (lw->rows < 2)
return;
void
-list_window_paint(list_window_t *lw,
+list_window_paint(struct list_window *lw,
list_window_callback_fn_t callback,
void *callback_data)
{
}
int
-list_window_find(list_window_t *lw,
+list_window_find(struct list_window *lw,
list_window_callback_fn_t callback,
void *callback_data,
const char *str,
}
int
-list_window_rfind(list_window_t *lw,
+list_window_rfind(struct list_window *lw,
list_window_callback_fn_t callback,
void *callback_data,
const char *str,
/* perform basic list window commands (movement) */
int
-list_window_cmd(list_window_t *lw, unsigned rows, command_t cmd)
+list_window_cmd(struct list_window *lw, unsigned rows, command_t cmd)
{
switch (cmd) {
case CMD_LIST_PREVIOUS:
}
void
-list_window_push_state(list_window_state_t *state, list_window_t *lw)
+list_window_push_state(list_window_state_t *state, struct list_window *lw)
{
if (state) {
- list_window_t *tmp = g_malloc(sizeof(list_window_t));
+ struct list_window *tmp = g_malloc(sizeof(list_window_t));
memcpy(tmp, lw, sizeof(list_window_t));
state->list = g_list_prepend(state->list, (gpointer) tmp);
list_window_reset(lw);
}
bool
-list_window_pop_state(list_window_state_t *state, list_window_t *lw)
+list_window_pop_state(list_window_state_t *state, struct list_window *lw)
{
if (state && state->list) {
- list_window_t *tmp = state->list->data;
+ struct list_window *tmp = state->list->data;
memcpy(lw, tmp, sizeof(list_window_t));
g_free(tmp);
diff --git a/src/list_window.h b/src/list_window.h
index 2fadeebd123510c0450eaf374270aafc5b18ebe1..2efff8a5ca7857ba0109db2cbd7b11665cbc7467 100644 (file)
--- a/src/list_window.h
+++ b/src/list_window.h
int *highlight,
void *data);
-typedef struct {
+typedef struct list_window {
WINDOW *w;
unsigned rows, cols;
int flags;
} list_window_t;
-typedef struct {
+typedef struct list_window_state {
GList *list;
} list_window_state_t;
/* create a new list window */
-list_window_t *list_window_init(WINDOW *w, unsigned width, unsigned height);
+struct list_window *list_window_init(WINDOW *w,
+ unsigned width, unsigned height);
/* destroy a list window (returns NULL) */
-list_window_t *list_window_free(list_window_t *lw);
+struct list_window *list_window_free(struct list_window *lw);
/* reset a list window (selected=0, start=0, clear=1) */
-void list_window_reset(list_window_t *lw);
+void list_window_reset(struct list_window *lw);
/* paint a list window */
-void list_window_paint(list_window_t *lw,
+void list_window_paint(struct list_window *lw,
list_window_callback_fn_t callback,
void *callback_data);
/* perform basic list window commands (movement) */
-int list_window_cmd(list_window_t *lw, unsigned rows, command_t cmd);
+int list_window_cmd(struct list_window *lw, unsigned rows, command_t cmd);
/* select functions */
-void list_window_set_selected(list_window_t *lw, unsigned n);
-void list_window_previous(list_window_t *lw, unsigned length);
-void list_window_next(list_window_t *lw, unsigned length);
-void list_window_first(list_window_t *lw);
-void list_window_last(list_window_t *lw, unsigned length);
-void list_window_previous_page(list_window_t *lw);
-void list_window_next_page(list_window_t *lw, unsigned length);
-void list_window_check_selected(list_window_t *lw, unsigned length);
+void list_window_set_selected(struct list_window *lw, unsigned n);
+void list_window_previous(struct list_window *lw, unsigned length);
+void list_window_next(struct list_window *lw, unsigned length);
+void list_window_first(struct list_window *lw);
+void list_window_last(struct list_window *lw, unsigned length);
+void list_window_previous_page(struct list_window *lw);
+void list_window_next_page(struct list_window *lw, unsigned length);
+void list_window_check_selected(struct list_window *lw, unsigned length);
/* find a string in a list window */
-int list_window_find(list_window_t *lw,
+int list_window_find(struct list_window *lw,
list_window_callback_fn_t callback,
void *callback_data,
const char *str,
/* find a string in a list window (reversed) */
int
-list_window_rfind(list_window_t *lw,
+list_window_rfind(struct list_window *lw,
list_window_callback_fn_t callback,
void *callback_data,
const char *str,
/* list window states */
list_window_state_t *list_window_init_state(void);
list_window_state_t *list_window_free_state(list_window_state_t *state);
-void list_window_push_state(list_window_state_t *state, list_window_t *lw);
-bool list_window_pop_state(list_window_state_t *state, list_window_t *lw);
+void list_window_push_state(list_window_state_t *state,
+ struct list_window *lw);
+bool list_window_pop_state(list_window_state_t *state, struct list_window *lw);
diff --git a/src/screen.c b/src/screen.c
index e89e4ebf815eb6e433d8c6653539cca3955484b6..da7e132fa8c45a566bb78487101ad09ed007f184 100644 (file)
--- a/src/screen.c
+++ b/src/screen.c
/* screens */
-extern screen_functions_t *get_screen_playlist(void);
-extern screen_functions_t *get_screen_browse(void);
-extern screen_functions_t *get_screen_help(void);
-extern screen_functions_t *get_screen_search(void);
-extern screen_functions_t *get_screen_artist(void);
-extern screen_functions_t *get_screen_keydef(void);
-extern screen_functions_t *get_screen_clock(void);
-extern screen_functions_t *get_screen_lyrics(void);
-
-typedef screen_functions_t * (*screen_get_mode_functions_fn_t) (void);
-
-typedef struct
+extern struct screen_functions *get_screen_playlist(void);
+extern struct screen_functions *get_screen_browse(void);
+extern struct screen_functions *get_screen_help(void);
+extern struct screen_functions *get_screen_search(void);
+extern struct screen_functions *get_screen_artist(void);
+extern struct screen_functions *get_screen_keydef(void);
+extern struct screen_functions *get_screen_clock(void);
+extern struct screen_functions *get_screen_lyrics(void);
+
+typedef struct screen_functions * (*screen_get_mode_functions_fn_t) (void);
+
+static const struct
{
gint id;
const gchar *name;
screen_get_mode_functions_fn_t get_mode_functions;
-} screen_mode_info_t;
-
-
-static screen_mode_info_t screens[] = {
+} screens[] = {
{ SCREEN_PLAYLIST_ID, "playlist", get_screen_playlist },
{ SCREEN_BROWSE_ID, "browse", get_screen_browse },
#ifdef ENABLE_ARTIST_SCREEN
static gboolean welcome = TRUE;
static screen_t *screen = NULL;
-static screen_functions_t *mode_fn = NULL;
+static struct screen_functions *mode_fn = NULL;
static int seek_id = -1;
static int seek_target_time = 0;
/* close and exit all screens (playlist,browse,help...) */
i=0;
while (screens[i].get_mode_functions) {
- screen_functions_t *sf = screens[i].get_mode_functions();
+ struct screen_functions *sf = screens[i].get_mode_functions();
if (sf && sf->close)
sf->close();
/* close and exit all screens (playlist,browse,help...) */
i=0;
while (screens[i].get_mode_functions) {
- screen_functions_t *sf = screens[i].get_mode_functions();
+ struct screen_functions *sf = screens[i].get_mode_functions();
if (sf && sf->resize)
sf->resize(screen->main_window.cols, screen->main_window.rows);
i=0;
while( screens[i].get_mode_functions )
{
- screen_functions_t *fn = screens[i].get_mode_functions();
+ struct screen_functions *fn = screens[i].get_mode_functions();
if( fn && fn->init )
fn->init(screen->main_window.w,
diff --git a/src/screen.h b/src/screen.h
index d6f1620da3790b156ba35431faea5972e8247541..06ce71da36b0297ee4e6dfcdd76265a0d28fcb34 100644 (file)
--- a/src/screen.h
+++ b/src/screen.h
#ifndef SCREEN_H
#define SCREEN_H
-#include "list_window.h"
#include "mpdclient.h"
+#include "command.h"
#include <ncurses.h>
#include <glib.h>
#define MAX_SONGNAME_LENGTH 512
-typedef struct {
+struct list_window;
+
+struct window {
WINDOW *w;
int rows, cols;
int cur_action_id;
-} window_t;
+};
-typedef struct {
- window_t top_window;
- window_t main_window;
- window_t progress_window;
- window_t status_window;
+typedef struct screen {
+ struct window top_window;
+ struct window main_window;
+ struct window progress_window;
+ struct window status_window;
/* GTime is equivalent to time_t */
GTime start_timestamp;
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, mpdclient_t *c);
+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)(screen_t *screen, mpdclient_t *c);
-typedef void (*screen_update_fn_t)(screen_t *screen, mpdclient_t *c);
-typedef int (*screen_cmd_fn_t)(screen_t *scr, mpdclient_t *c, command_t cmd);
+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 list_window_t *(*screen_get_lw_fn_t) (void);
+typedef struct list_window *(*screen_get_lw_fn_t) (void);
-typedef struct {
+typedef struct screen_functions {
screen_init_fn_t init;
screen_exit_fn_t exit;
screen_open_fn_t open;
gint get_cur_mode_id(void);
int screen_get_mouse_event(mpdclient_t *c,
- list_window_t *lw, int lw_length,
+ struct list_window *lw, int lw_length,
unsigned long *bstate, int *row);
-screen_functions_t *
+struct screen_functions *
get_screen_search(void);
-screen_functions_t *
+struct screen_functions *
get_screen_browse(void);
-screen_functions_t *
+struct screen_functions *
get_screen_playlist(void);
-screen_functions_t *
+struct screen_functions *
get_screen_help(void);
-screen_functions_t *
+struct screen_functions *
get_screen_lyrics(void);
-screen_functions_t *
+struct screen_functions *
get_screen_keydef(void);
-screen_functions_t *
+struct screen_functions *
get_screen_clock(void);
#endif
diff --git a/src/screen_clock.c b/src/screen_clock.c
index 995be67926fcdcf40cc867f107259723a850b875..493150bb056fffd185049476ae4e5b516a8b3ecd 100644 (file)
--- a/src/screen_clock.c
+++ b/src/screen_clock.c
#define ENABLE_SECONDS 0
-static window_t win;
+static struct window win;
static gboolean enable_seconds = ENABLE_SECONDS;
/* orginal variables from gdc.c */
diff --git a/src/screen_utils.c b/src/screen_utils.c
index d75116fb431e4f2d1cf7c29b885dc41a30242f13..311c744afe3ad0f482f2e640faf2892cd56f34fb 100644 (file)
--- a/src/screen_utils.c
+++ b/src/screen_utils.c
*/
#include "screen_utils.h"
+#include "screen.h"
+#include "mpdclient.h"
#include "config.h"
#include "ncmpc.h"
#include "support.h"
}
static gint
-_screen_auth(mpdclient_t *c, gint recursion)
+_screen_auth(struct mpdclient *c, gint recursion)
{
mpd_clearError(c->connection);
if(recursion > 2) return 1;
}
gint
-screen_auth(mpdclient_t *c)
+screen_auth(struct mpdclient *c)
{
gint ret = _screen_auth(c, 0);
mpdclient_update(c);
diff --git a/src/screen_utils.h b/src/screen_utils.h
index 6928ba804518e18439fbe9e8f352e042820a97dc..74ca7d0126704707c9716ca4b3825d2cb3c6dff9 100644 (file)
--- a/src/screen_utils.h
+++ b/src/screen_utils.h
#ifndef SCREEN_UTILS_H
#define SCREEN_UTILS_H
-#include "screen.h"
#include "list_window.h"
-#include "mpdclient.h"
#include "command.h"
#include <ncurses.h>
+struct screen;
+struct mpdclient;
+
/* sound an audible and/or visible bell */
void screen_bell(void);
char *screen_readln_masked(WINDOW *w, const char *prompt);
char *screen_read_pasword(WINDOW *w, const char *prompt);
/* query user for a string and find it in a list window */
-int screen_find(screen_t *screen,
- list_window_t *lw,
+int screen_find(struct screen *screen,
+ struct list_window *lw,
int rows,
command_t findcmd,
list_window_callback_fn_t callback_fn,
void *callback_data);
-gint screen_auth(mpdclient_t *c);
+gint screen_auth(struct mpdclient *c);
-void screen_display_completion_list(screen_t *screen, GList *list);
+void screen_display_completion_list(struct screen *screen, GList *list);
void set_xterm_title(const char *format, ...);