summaryrefslogtreecommitdiff
path: root/apps/gui/skin_engine
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2010-09-06 13:33:49 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2010-09-06 13:33:49 +0000
commit4caa8326abd590eb01279dde3f4dc6611a9255c8 (patch)
treec7f0f858ecda565e688b945ab89cd000d8c4fe2c /apps/gui/skin_engine
parent1a92ff099499a657c55e1282dab00276100f99f7 (diff)
downloadrockbox-4caa8326abd590eb01279dde3f4dc6611a9255c8.tar.gz
rockbox-4caa8326abd590eb01279dde3f4dc6611a9255c8.zip
2 new touch region options... "settings_inc" and "settings_dec" which will increase or decrease most of the available settings. To use it put the config name of the setting as the next param after settings_inc... i.e %T(0, 0, 32, 32, settings_inc, repeat)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28009 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/gui/skin_engine')
-rw-r--r--apps/gui/skin_engine/skin_engine.h3
-rw-r--r--apps/gui/skin_engine/skin_parser.c25
-rw-r--r--apps/gui/skin_engine/skin_touchsupport.c7
-rw-r--r--apps/gui/skin_engine/wps_internals.h1
4 files changed, 34 insertions, 2 deletions
diff --git a/apps/gui/skin_engine/skin_engine.h b/apps/gui/skin_engine/skin_engine.h
index 9845d8ca8a..6beedd90a2 100644
--- a/apps/gui/skin_engine/skin_engine.h
+++ b/apps/gui/skin_engine/skin_engine.h
@@ -67,7 +67,8 @@ enum skinnable_screens {
67 67
68 68
69#ifdef HAVE_TOUCHSCREEN 69#ifdef HAVE_TOUCHSCREEN
70int skin_get_touchaction(struct wps_data *data, int* edge_offset); 70int skin_get_touchaction(struct wps_data *data, int* edge_offset,
71 struct touchregion **retregion);
71void skin_disarm_touchregions(struct wps_data *data); 72void skin_disarm_touchregions(struct wps_data *data);
72#endif 73#endif
73 74
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index a486436816..3d796f8032 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -826,6 +826,9 @@ static const struct touchaction touchactions[] = {
826 {"contextmenu", ACTION_STD_CONTEXT},{"quickscreen", ACTION_STD_QUICKSCREEN }, 826 {"contextmenu", ACTION_STD_CONTEXT},{"quickscreen", ACTION_STD_QUICKSCREEN },
827 /* not really WPS specific, but no equivilant ACTION_STD_* */ 827 /* not really WPS specific, but no equivilant ACTION_STD_* */
828 {"voldown", ACTION_WPS_VOLDOWN}, {"volup", ACTION_WPS_VOLUP}, 828 {"voldown", ACTION_WPS_VOLDOWN}, {"volup", ACTION_WPS_VOLUP},
829
830 /* generic settings changers */
831 {"setting_inc", ACTION_SETTINGS_INC}, {"setting_dec", ACTION_SETTINGS_DEC},
829 832
830 /* WPS specific actions */ 833 /* WPS specific actions */
831 {"browse", ACTION_WPS_BROWSE }, 834 {"browse", ACTION_WPS_BROWSE },
@@ -888,6 +891,7 @@ static int parse_touchregion(struct skin_element *element,
888 region->wvp = curr_vp; 891 region->wvp = curr_vp;
889 region->armed = false; 892 region->armed = false;
890 region->reverse_bar = false; 893 region->reverse_bar = false;
894 region->extradata = NULL;
891 action = element->params[4].data.text; 895 action = element->params[4].data.text;
892 896
893 strcpy(temp, action); 897 strcpy(temp, action);
@@ -922,6 +926,27 @@ static int parse_touchregion(struct skin_element *element,
922 if (!strcmp(touchactions[i].s, action)) 926 if (!strcmp(touchactions[i].s, action))
923 { 927 {
924 region->action = touchactions[i].action; 928 region->action = touchactions[i].action;
929 if (region->action == ACTION_SETTINGS_INC ||
930 region->action == ACTION_SETTINGS_DEC)
931 {
932 if (element->params_count < 6)
933 {
934 return WPS_ERROR_INVALID_PARAM;
935 }
936 else
937 {
938 char *name = element->params[5].data.text;
939 int j;
940 /* Find the setting */
941 for (j=0; j<nb_settings; j++)
942 if (settings[j].cfg_name &&
943 !strcmp(settings[j].cfg_name, name))
944 break;
945 if (j==nb_settings)
946 return WPS_ERROR_INVALID_PARAM;
947 region->extradata = &settings[j];
948 }
949 }
925 break; 950 break;
926 } 951 }
927 } 952 }
diff --git a/apps/gui/skin_engine/skin_touchsupport.c b/apps/gui/skin_engine/skin_touchsupport.c
index 09fbd86acd..850c1c0647 100644
--- a/apps/gui/skin_engine/skin_touchsupport.c
+++ b/apps/gui/skin_engine/skin_touchsupport.c
@@ -40,7 +40,8 @@ void skin_disarm_touchregions(struct wps_data *data)
40 * egde_offset is a percentage value for the position of the touch 40 * egde_offset is a percentage value for the position of the touch
41 * inside the bar for regions which arnt WPS_TOUCHREGION_ACTION type. 41 * inside the bar for regions which arnt WPS_TOUCHREGION_ACTION type.
42 */ 42 */
43int skin_get_touchaction(struct wps_data *data, int* edge_offset) 43int skin_get_touchaction(struct wps_data *data, int* edge_offset,
44 struct touchregion **retregion)
44{ 45{
45 int returncode = ACTION_NONE; 46 int returncode = ACTION_NONE;
46 short x,y; 47 short x,y;
@@ -84,6 +85,8 @@ int skin_get_touchaction(struct wps_data *data, int* edge_offset)
84 { 85 {
85 last_action = r->action; 86 last_action = r->action;
86 returncode = r->action; 87 returncode = r->action;
88 if (retregion)
89 *retregion = r;
87 } 90 }
88 if (pressed) 91 if (pressed)
89 r->armed = true; 92 r->armed = true;
@@ -99,6 +102,8 @@ int skin_get_touchaction(struct wps_data *data, int* edge_offset)
99 *edge_offset = 100 - *edge_offset; 102 *edge_offset = 100 - *edge_offset;
100 } 103 }
101 returncode = r->type; 104 returncode = r->type;
105 if (retregion)
106 *retregion = r;
102 break; 107 break;
103 } 108 }
104 } 109 }
diff --git a/apps/gui/skin_engine/wps_internals.h b/apps/gui/skin_engine/wps_internals.h
index 81958c7966..0767f50279 100644
--- a/apps/gui/skin_engine/wps_internals.h
+++ b/apps/gui/skin_engine/wps_internals.h
@@ -196,6 +196,7 @@ struct touchregion {
196 int action; /* action this button will return */ 196 int action; /* action this button will return */
197 bool armed; /* A region is armed on press. Only armed regions are triggered 197 bool armed; /* A region is armed on press. Only armed regions are triggered
198 on repeat or release. */ 198 on repeat or release. */
199 void* extradata;
199}; 200};
200#endif 201#endif
201 202