diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2012-02-21 00:34:58 +1100 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2012-02-21 00:34:58 +1100 |
commit | 9c21258e2cd7904ff0933f8a9bb4c5bc428c23cc (patch) | |
tree | 6b30ab474345e3975a4c74e79058be15d44b5622 | |
parent | 43fc2a51d982c12b92b18ecba820b264212a3208 (diff) | |
download | rockbox-9c21258e2cd7904ff0933f8a9bb4c5bc428c23cc.tar.gz rockbox-9c21258e2cd7904ff0933f8a9bb4c5bc428c23cc.zip |
skin engine: Add 'touch' command to the %vs() tag
%vs(label, touch, -) will reset the timeout for the variable without
changing the variables value.
Change-Id: Idba03f454a82ac7460bb53a4de3aa6903656c585
-rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 10 | ||||
-rw-r--r-- | lib/skin_parser/tag_table.c | 2 |
2 files changed, 10 insertions, 2 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index 0be88f4e69..8409f0ed8b 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c | |||
@@ -1179,7 +1179,10 @@ static int parse_skinvar( struct skin_element *element, | |||
1179 | if (!data) | 1179 | if (!data) |
1180 | return WPS_ERROR_INVALID_PARAM; | 1180 | return WPS_ERROR_INVALID_PARAM; |
1181 | data->var = PTRTOSKINOFFSET(skin_buffer, var); | 1181 | data->var = PTRTOSKINOFFSET(skin_buffer, var); |
1182 | data->newval = get_param(element, 2)->data.number; | 1182 | if (!isdefault(get_param(element, 2))) |
1183 | data->newval = get_param(element, 2)->data.number; | ||
1184 | else if (strcmp(get_param_text(element, 1), "touch")) | ||
1185 | return WPS_ERROR_INVALID_PARAM; | ||
1183 | data->max = 0; | 1186 | data->max = 0; |
1184 | if (!strcmp(get_param_text(element, 1), "set")) | 1187 | if (!strcmp(get_param_text(element, 1), "set")) |
1185 | data->direct = true; | 1188 | data->direct = true; |
@@ -1192,6 +1195,11 @@ static int parse_skinvar( struct skin_element *element, | |||
1192 | data->direct = false; | 1195 | data->direct = false; |
1193 | data->newval *= -1; | 1196 | data->newval *= -1; |
1194 | } | 1197 | } |
1198 | else if (!strcmp(get_param_text(element, 1), "touch")) | ||
1199 | { | ||
1200 | data->direct = false; | ||
1201 | data->newval = 0; | ||
1202 | } | ||
1195 | if (element->params_count > 3) | 1203 | if (element->params_count > 3) |
1196 | data->max = get_param(element, 3)->data.number; | 1204 | data->max = get_param(element, 3)->data.number; |
1197 | token->value.data = PTRTOSKINOFFSET(skin_buffer, data); | 1205 | token->value.data = PTRTOSKINOFFSET(skin_buffer, data); |
diff --git a/lib/skin_parser/tag_table.c b/lib/skin_parser/tag_table.c index 1ddef71a24..d10b319dcf 100644 --- a/lib/skin_parser/tag_table.c +++ b/lib/skin_parser/tag_table.c | |||
@@ -236,7 +236,7 @@ static const struct tag_info legal_tags[] = | |||
236 | { SKIN_TOKEN_REC_HOURS, "Rh" , "", SKIN_REFRESH_DYNAMIC }, | 236 | { SKIN_TOKEN_REC_HOURS, "Rh" , "", SKIN_REFRESH_DYNAMIC }, |
237 | 237 | ||
238 | /* Skin variables */ | 238 | /* Skin variables */ |
239 | { SKIN_TOKEN_VAR_SET, "vs", "SSI|I", SKIN_REFRESH_DYNAMIC }, | 239 | { SKIN_TOKEN_VAR_SET, "vs", "SSi|I", SKIN_REFRESH_DYNAMIC }, |
240 | { SKIN_TOKEN_VAR_GETVAL, "vg", "S", SKIN_REFRESH_DYNAMIC }, | 240 | { SKIN_TOKEN_VAR_GETVAL, "vg", "S", SKIN_REFRESH_DYNAMIC }, |
241 | { SKIN_TOKEN_VAR_TIMEOUT, "vl", "S|D", SKIN_REFRESH_DYNAMIC }, | 241 | { SKIN_TOKEN_VAR_TIMEOUT, "vl", "S|D", SKIN_REFRESH_DYNAMIC }, |
242 | 242 | ||