summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2010-06-21 12:43:08 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2010-06-21 12:43:08 +0000
commitadc9cb1adc667997808b0abdbf8749fcbdbbf461 (patch)
tree7ef600a4946b6e67aa6bc9db29acebd9658341bd /apps
parente481e887db23d634c8c2dfcec1594eec0646a63d (diff)
Allow the progressbar and volume touch regions to be reverse by prepending them with ! (so full is the left/top instead of right/bottom)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27013 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/gui/skin_engine/skin_parser.c7
-rw-r--r--apps/gui/skin_engine/skin_touchsupport.c2
-rw-r--r--apps/gui/skin_engine/wps_internals.h1
3 files changed, 10 insertions, 0 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index bbcb3fe8f7..b9254d9dbd 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -1578,12 +1578,19 @@ static int parse_touchregion(const char *wps_bufptr,
region->height = h;
region->wvp = curr_vp;
region->armed = false;
+ region->reverse_bar = false;
end = strchr(action, ')');
if (!end || (size_t)(end-action+1) > sizeof temp)
return WPS_ERROR_INVALID_PARAM;
strlcpy(temp, action, end-action+1);
action = temp;
+
+ if (*action == '!')
+ {
+ region->reverse_bar = true;
+ action++;
+ }
if(!strcmp(pb_string, action))
region->type = WPS_TOUCHREGION_SCROLLBAR;
diff --git a/apps/gui/skin_engine/skin_touchsupport.c b/apps/gui/skin_engine/skin_touchsupport.c
index 9c0cda779a..09fbd86acd 100644
--- a/apps/gui/skin_engine/skin_touchsupport.c
+++ b/apps/gui/skin_engine/skin_touchsupport.c
@@ -95,6 +95,8 @@ int skin_get_touchaction(struct wps_data *data, int* edge_offset)
*edge_offset = vx*100/r->width;
else
*edge_offset = vy*100/r->height;
+ if (r->reverse_bar)
+ *edge_offset = 100 - *edge_offset;
}
returncode = r->type;
break;
diff --git a/apps/gui/skin_engine/wps_internals.h b/apps/gui/skin_engine/wps_internals.h
index 5501dd580b..4ef860a8b7 100644
--- a/apps/gui/skin_engine/wps_internals.h
+++ b/apps/gui/skin_engine/wps_internals.h
@@ -228,6 +228,7 @@ struct touchregion {
WPS_TOUCHREGION_SCROLLBAR,
WPS_TOUCHREGION_VOLUME
} type; /* type of touch region */
+ bool reverse_bar; /* if true 0% is the left or top */
bool repeat; /* requires the area be held for the action */
int action; /* action this button will return */
bool armed; /* A region is armed on press. Only armed regions are triggered