From ee40c635427a92d1cd39247a962f1ad6ea3a7699 Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Mon, 9 Nov 2009 23:38:12 +0100 Subject: [PATCH] xmms2: outsource code and convert to callbacks.print --- src/conky.c | 68 ----------------------------------------------------- src/core.c | 19 +++++++++++++++ src/xmms2.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/xmms2.h | 21 +++++++++++++++++ 4 files changed, 105 insertions(+), 68 deletions(-) diff --git a/src/conky.c b/src/conky.c index 47b4de34..1b5afc6e 100644 --- a/src/conky.c +++ b/src/conky.c @@ -1523,74 +1523,6 @@ void generate_text_internal(char *p, int p_max_size, #endif #ifdef XMMS2 - OBJ(xmms2_artist) { - snprintf(p, p_max_size, "%s", cur->xmms2.artist); - } - OBJ(xmms2_album) { - snprintf(p, p_max_size, "%s", cur->xmms2.album); - } - OBJ(xmms2_title) { - snprintf(p, p_max_size, "%s", cur->xmms2.title); - } - OBJ(xmms2_genre) { - snprintf(p, p_max_size, "%s", cur->xmms2.genre); - } - OBJ(xmms2_comment) { - snprintf(p, p_max_size, "%s", cur->xmms2.comment); - } - OBJ(xmms2_url) { - snprintf(p, p_max_size, "%s", cur->xmms2.url); - } - OBJ(xmms2_status) { - snprintf(p, p_max_size, "%s", cur->xmms2.status); - } - OBJ(xmms2_date) { - snprintf(p, p_max_size, "%s", cur->xmms2.date); - } - OBJ(xmms2_tracknr) { - if (cur->xmms2.tracknr != -1) { - snprintf(p, p_max_size, "%i", cur->xmms2.tracknr); - } - } - OBJ(xmms2_bitrate) { - snprintf(p, p_max_size, "%i", cur->xmms2.bitrate); - } - OBJ(xmms2_id) { - snprintf(p, p_max_size, "%u", cur->xmms2.id); - } - OBJ(xmms2_size) { - snprintf(p, p_max_size, "%2.1f", cur->xmms2.size); - } - OBJ(xmms2_elapsed) { - snprintf(p, p_max_size, "%02d:%02d", cur->xmms2.elapsed / 60000, - (cur->xmms2.elapsed / 1000) % 60); - } - OBJ(xmms2_duration) { - snprintf(p, p_max_size, "%02d:%02d", - cur->xmms2.duration / 60000, - (cur->xmms2.duration / 1000) % 60); - } - OBJ(xmms2_percent) { - snprintf(p, p_max_size, "%2.0f", cur->xmms2.progress * 100); - } - OBJ(xmms2_bar) { - new_bar(obj, p, p_max_size, (int) (cur->xmms2.progress * 255.0f)); - } - OBJ(xmms2_playlist) { - snprintf(p, p_max_size, "%s", cur->xmms2.playlist); - } - OBJ(xmms2_timesplayed) { - snprintf(p, p_max_size, "%i", cur->xmms2.timesplayed); - } - OBJ(xmms2_smart) { - if (strlen(cur->xmms2.title) < 2 - && strlen(cur->xmms2.title) < 2) { - snprintf(p, p_max_size, "%s", cur->xmms2.url); - } else { - snprintf(p, p_max_size, "%s - %s", cur->xmms2.artist, - cur->xmms2.title); - } - } OBJ(if_xmms2_connected) { if (cur->xmms2.conn_state != 1) { DO_JUMP; diff --git a/src/core.c b/src/core.c index 02aabe45..f848267a 100644 --- a/src/core.c +++ b/src/core.c @@ -1167,25 +1167,44 @@ struct text_object *construct_text_object(const char *s, const char *arg, long #endif /* MOC */ #ifdef XMMS2 END OBJ(xmms2_artist, &update_xmms2) + obj->callbacks.print = &print_xmms2_artist; END OBJ(xmms2_album, &update_xmms2) + obj->callbacks.print = &print_xmms2_album; END OBJ(xmms2_title, &update_xmms2) + obj->callbacks.print = &print_xmms2_title; END OBJ(xmms2_genre, &update_xmms2) + obj->callbacks.print = &print_xmms2_genre; END OBJ(xmms2_comment, &update_xmms2) + obj->callbacks.print = &print_xmms2_comment; END OBJ(xmms2_url, &update_xmms2) + obj->callbacks.print = &print_xmms2_url; END OBJ(xmms2_tracknr, &update_xmms2) + obj->callbacks.print = &print_xmms2_tracknr; END OBJ(xmms2_bitrate, &update_xmms2) + obj->callbacks.print = &print_xmms2_bitrate; END OBJ(xmms2_date, &update_xmms2) + obj->callbacks.print = &print_xmms2_date; END OBJ(xmms2_id, &update_xmms2) + obj->callbacks.print = &print_xmms2_id; END OBJ(xmms2_duration, &update_xmms2) + obj->callbacks.print = &print_xmms2_duration; END OBJ(xmms2_elapsed, &update_xmms2) + obj->callbacks.print = &print_xmms2_elapsed; END OBJ(xmms2_size, &update_xmms2) + obj->callbacks.print = &print_xmms2_size; END OBJ(xmms2_status, &update_xmms2) + obj->callbacks.print = &print_xmms2_status; END OBJ(xmms2_percent, &update_xmms2) + obj->callbacks.print = &print_xmms2_percent; END OBJ(xmms2_bar, &update_xmms2) scan_bar(obj, arg); + obj->callbacks.print = &print_xmms2_bar; END OBJ(xmms2_smart, &update_xmms2) + obj->callbacks.print = &print_xmms2_smart; END OBJ(xmms2_playlist, &update_xmms2) + obj->callbacks.print = &print_xmms2_playlist; END OBJ(xmms2_timesplayed, &update_xmms2) + obj->callbacks.print = &print_xmms2_timesplayed; END OBJ_IF(if_xmms2_connected, &update_xmms2) #endif #ifdef AUDACIOUS diff --git a/src/xmms2.c b/src/xmms2.c index a8abbbf8..e9f75cf9 100644 --- a/src/xmms2.c +++ b/src/xmms2.c @@ -320,4 +320,69 @@ void update_xmms2(void) } } +void print_xmms2_tracknr(struct text_object *obj, char *p, int p_max_size) +{ + (void)obj; + if (info.xmms2.tracknr != -1) { + snprintf(p, p_max_size, "%i", info.xmms2.tracknr); + } +} +void print_xmms2_elapsed(struct text_object *obj, char *p, int p_max_size) +{ + (void)obj; + snprintf(p, p_max_size, "%02d:%02d", info.xmms2.elapsed / 60000, + (info.xmms2.elapsed / 1000) % 60); +} + +void print_xmms2_duration(struct text_object *obj, char *p, int p_max_size) +{ + (void)obj; + snprintf(p, p_max_size, "%02d:%02d", + info.xmms2.duration / 60000, + (info.xmms2.duration / 1000) % 60); +} + +void print_xmms2_bar(struct text_object *obj, char *p, int p_max_size) +{ + (void)obj; + if (!p_max_size) + return; + + new_bar(obj, p, p_max_size, (int) (info.xmms2.progress * 255.0f)); +} + +void print_xmms2_smart(struct text_object *obj, char *p, int p_max_size) +{ + (void)obj; + if (strlen(info.xmms2.title) < 2 + && strlen(info.xmms2.title) < 2) { + snprintf(p, p_max_size, "%s", info.xmms2.url); + } else { + snprintf(p, p_max_size, "%s - %s", info.xmms2.artist, + info.xmms2.title); + } +} + +#define XMMS2_PRINT_GENERATOR(name, fmt) \ +void print_xmms2_##name(struct text_object *obj, char *p, int p_max_size) \ +{ \ + (void)obj; \ + snprintf(p, p_max_size, fmt, info.xmms2.name); \ +} + +XMMS2_PRINT_GENERATOR(artist, "%s") +XMMS2_PRINT_GENERATOR(album, "%s") +XMMS2_PRINT_GENERATOR(title, "%s") +XMMS2_PRINT_GENERATOR(genre, "%s") +XMMS2_PRINT_GENERATOR(comment, "%s") +XMMS2_PRINT_GENERATOR(url, "%s") +XMMS2_PRINT_GENERATOR(status, "%s") +XMMS2_PRINT_GENERATOR(date, "%s") +XMMS2_PRINT_GENERATOR(bitrate, "%i") +XMMS2_PRINT_GENERATOR(id, "%u") +XMMS2_PRINT_GENERATOR(size, "%2.1f") +XMMS2_PRINT_GENERATOR(playlist, "%s") +XMMS2_PRINT_GENERATOR(timesplayed, "%i") + +#undef XMMS2_PRINT_GENERATOR diff --git a/src/xmms2.h b/src/xmms2.h index 9ad62628..71f62d20 100644 --- a/src/xmms2.h +++ b/src/xmms2.h @@ -55,4 +55,25 @@ struct xmms2_s { void update_xmms2(void); +void print_xmms2_tracknr(struct text_object *, char *, int); +void print_xmms2_elapsed(struct text_object *, char *, int); +void print_xmms2_duration(struct text_object *, char *, int); +#ifdef X11 +void print_xmms2_bar(struct text_object *, char *, int); +#endif /* X11 */ +void print_xmms2_smart(struct text_object *, char *, int); +void print_xmms2_artist(struct text_object *, char *, int); +void print_xmms2_album(struct text_object *, char *, int); +void print_xmms2_title(struct text_object *, char *, int); +void print_xmms2_genre(struct text_object *, char *, int); +void print_xmms2_comment(struct text_object *, char *, int); +void print_xmms2_url(struct text_object *, char *, int); +void print_xmms2_status(struct text_object *, char *, int); +void print_xmms2_date(struct text_object *, char *, int); +void print_xmms2_bitrate(struct text_object *, char *, int); +void print_xmms2_id(struct text_object *, char *, int); +void print_xmms2_size(struct text_object *, char *, int); +void print_xmms2_playlist(struct text_object *, char *, int); +void print_xmms2_timesplayed(struct text_object *, char *, int); + #endif /*XMMS2_H_*/