diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2010-09-06 13:33:49 +0000 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2010-09-06 13:33:49 +0000 |
commit | 4caa8326abd590eb01279dde3f4dc6611a9255c8 (patch) | |
tree | c7f0f858ecda565e688b945ab89cd000d8c4fe2c /apps/gui/skin_engine | |
parent | 1a92ff099499a657c55e1282dab00276100f99f7 (diff) | |
download | rockbox-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.h | 3 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 25 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_touchsupport.c | 7 | ||||
-rw-r--r-- | apps/gui/skin_engine/wps_internals.h | 1 |
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 |
70 | int skin_get_touchaction(struct wps_data *data, int* edge_offset); | 70 | int skin_get_touchaction(struct wps_data *data, int* edge_offset, |
71 | struct touchregion **retregion); | ||
71 | void skin_disarm_touchregions(struct wps_data *data); | 72 | void 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 | */ |
43 | int skin_get_touchaction(struct wps_data *data, int* edge_offset) | 43 | int 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 | ||