diff options
| author | Thomas Martitz <kugel@rockbox.org> | 2009-10-16 19:14:33 +0000 |
|---|---|---|
| committer | Thomas Martitz <kugel@rockbox.org> | 2009-10-16 19:14:33 +0000 |
| commit | 9072a4558cb1db2b82ca3b001f6b95b5afda16c8 (patch) | |
| tree | a97bb48981118cee6fd012dfcc55f12d35d0f38d /apps/gui | |
| parent | 71411ee83a224034c5779c8046539fdd136d213f (diff) | |
| download | rockbox-9072a4558cb1db2b82ca3b001f6b95b5afda16c8.zip rockbox-9072a4558cb1db2b82ca3b001f6b95b5afda16c8.tar.gz rockbox-9072a4558cb1db2b82ca3b001f6b95b5afda16c8.tar.bz2 rockbox-9072a4558cb1db2b82ca3b001f6b95b5afda16c8.tar.xz | |
Add %cs tag.
It can be used conditionally and indicates the current screen (wps, rec, radio screens or lists).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23207 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/gui')
| -rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 1 | ||||
| -rw-r--r-- | apps/gui/skin_engine/skin_tokens.c | 46 | ||||
| -rw-r--r-- | apps/gui/skin_engine/skin_tokens.h | 1 |
3 files changed, 48 insertions, 0 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index dbbdc32..016126b 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c @@ -354,6 +354,7 @@ static const struct wps_tag all_tags[] = { parse_setting_and_lang }, { 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 2df087b..ac37c6d 100644 --- a/apps/gui/skin_engine/skin_tokens.c +++ b/apps/gui/skin_engine/skin_tokens.c @@ -56,6 +56,10 @@ #include "wps_internals.h" #include "wps.h" +#include "root_menu.h" +#ifdef HAVE_RECORDING +#include "recording.h" +#endif static char* get_codectype(const struct mp3entry* id3) { @@ -482,16 +486,20 @@ const char *get_token_value(struct gui_wps *gwps, if (status_get_ffmode() == STATUS_FASTBACKWARD) mode = 5; } +#ifdef HAVE_RECORDING /* recording */ if (status == STATUS_RECORD) mode = 6; else if (status == STATUS_RECORD_PAUSE) mode = 7; +#endif +#if CONFIG_TUNER /* radio */ if (status == STATUS_RADIO) mode = 8; else if (status == STATUS_RADIO_PAUSE) mode = 9; +#endif if (intval) { *intval = mode; @@ -823,6 +831,44 @@ 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(); + +#ifdef HAVE_RECORDING + /* override current_screen() for recording screen since it may + * be entered from the radio screen */ + if (in_recording_screen()) + curr_screen = GO_TO_RECSCREEN; +#endif + + switch (curr_screen) + { + case GO_TO_WPS: + curr_screen = 2; + break; +#ifdef HAVE_RECORDING + case GO_TO_RECSCREEN: + curr_screen = 3; + break; +#endif +#if CONFIG_TUNER + case GO_TO_FM: + curr_screen = 4; + break; +#endif + 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 8642542..6d78355 100644 --- a/apps/gui/skin_engine/skin_tokens.h +++ b/apps/gui/skin_engine/skin_tokens.h @@ -192,6 +192,7 @@ enum wps_token_type { /* Setting option */ WPS_TOKEN_SETTING, + WPS_TOKEN_CURRENT_SCREEN, }; struct wps_token { |