From 395e88b9c998a6c6f6b7a5d67079e79318966d6a Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Fri, 11 Sep 2009 13:39:38 +0200 Subject: [PATCH 2/2] Add %cs tag. It can be used conditionally and indicates the current screen (wps, rec, radio screens or lists). --- apps/gui/skin_engine/skin_parser.c | 1 + apps/gui/skin_engine/skin_tokens.c | 27 +++++++++++++++++++++++++++ apps/gui/skin_engine/skin_tokens.h | 1 + apps/root_menu.c | 9 ++++++++- apps/root_menu.h | 2 ++ 5 files changed, 39 insertions(+), 1 deletions(-) diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index c23f55c..248c17b 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c @@ -352,6 +352,7 @@ static const struct wps_tag all_tags[] = { { WPS_TOKEN_SETTING, "St", WPS_REFRESH_DYNAMIC, parse_setting }, { WPS_TOKEN_LASTTOUCH, "Tl", WPS_REFRESH_DYNAMIC, parse_timeout }, + { WPS_TOKEN_CURRENT_SCREEN, "cs", WPS_REFRESH_DYNAMIC, NULL }, { WPS_NO_TOKEN, "T", 0, parse_touchregion }, { WPS_TOKEN_UNKNOWN, "", 0, NULL } diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c index 9d44256..8d5236c 100644 --- a/apps/gui/skin_engine/skin_tokens.c +++ b/apps/gui/skin_engine/skin_tokens.c @@ -56,6 +56,7 @@ #include "wps_internals.h" #include "wps.h" +#include "root_menu.h" static char* get_codectype(const struct mp3entry* id3) { @@ -816,6 +817,32 @@ const char *get_token_value(struct gui_wps *gwps, cfg_to_string(token->value.i,buf,buf_size); return buf; } + case WPS_TOKEN_CURRENT_SCREEN: + { + int curr_screen = current_screen(); + switch (curr_screen) + { + case GO_TO_WPS: + curr_screen = 2; + break; + case GO_TO_RECSCREEN: + curr_screen = 3; + break; + case GO_TO_FM: + curr_screen = 4; + break; + default: /* lists */ + curr_screen = 1; + break; + } + if (intval) + { + + *intval = curr_screen; + } + snprintf(buf, buf_size, "%d", curr_screen); + return buf; + } default: return NULL; diff --git a/apps/gui/skin_engine/skin_tokens.h b/apps/gui/skin_engine/skin_tokens.h index ad01604..0a998f5 100644 --- a/apps/gui/skin_engine/skin_tokens.h +++ b/apps/gui/skin_engine/skin_tokens.h @@ -191,6 +191,7 @@ enum wps_token_type { /* Setting option */ WPS_TOKEN_SETTING, + WPS_TOKEN_CURRENT_SCREEN, }; struct wps_token { diff --git a/apps/root_menu.c b/apps/root_menu.c index a06caba..a6a59e4 100644 --- a/apps/root_menu.c +++ b/apps/root_menu.c @@ -72,6 +72,9 @@ struct root_items { static int last_screen = GO_TO_ROOT; /* unfortunatly needed so we can resume or goto current track based on previous screen */ + +int next_screen = GO_TO_ROOT; + static char current_track_path[MAX_PATH]; static void rootmenu_track_changed_callback(void* param) { @@ -494,10 +497,14 @@ void previous_music_is_wps(void) previous_music = GO_TO_WPS; } +int current_screen(void) +{ + return next_screen; +} + void root_menu(void) { int previous_browser = GO_TO_FILEBROWSER; - int next_screen = GO_TO_ROOT; int selected = 0; if (global_settings.start_in_screen == 0) diff --git a/apps/root_menu.h b/apps/root_menu.h index 2ab3aae..584e048 100644 --- a/apps/root_menu.h +++ b/apps/root_menu.h @@ -58,4 +58,6 @@ extern const struct menu_item_ex root_menu_; extern void previous_music_is_wps(void); +extern int current_screen(void); + #endif /* __ROOT_MENU_H__ */ -- 1.6.3.3