From 87aa86cedd27445e51b0ad38dbc7cf2bdaa42364 Mon Sep 17 00:00:00 2001 From: Jonathan Gordon Date: Sun, 27 Mar 2011 08:01:58 +0000 Subject: Skin variables for touchscreen targets (origional implementation by Jens Theeß) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit %vs(name, [set|inc|dec], value [,max]) - name is the id, set sets the value, inc increments by value, dec decrements by value %vg(name) - get the current value %vl(name [,timeout]) - 'has it changed in [timeout]'? values start at 1 and are all reset to 1 on skin load git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29655 a1c6a512-1295-4272-9138-f99709370657 --- apps/gui/skin_engine/skin_render.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'apps/gui/skin_engine/skin_render.c') diff --git a/apps/gui/skin_engine/skin_render.c b/apps/gui/skin_engine/skin_render.c index 9fa940dba2..3037a955c7 100644 --- a/apps/gui/skin_engine/skin_render.c +++ b/apps/gui/skin_engine/skin_render.c @@ -229,6 +229,30 @@ static bool do_non_text_tags(struct gui_wps *gwps, struct skin_draw_info *info, break; #endif /* HAVE_LCD_BITMAP */ +#ifdef HAVE_SKIN_VARIABLES + case SKIN_TOKEN_VAR_SET: + if (do_refresh) + { + struct skin_var_changer *data = token->value.data; + if (data->direct) + data->var->value = data->newval; + else + { + data->var->value += data->newval; + if (data->max) + { + if (data->var->value > data->max) + data->var->value = 1; + else if (data->var->value < 1) + data->var->value = data->max; + } + } + if (data->var->value < 1) + data->var->value = 1; + data->var->last_changed = current_tick; + } + break; +#endif default: return false; } -- cgit v1.2.3