diff options
Diffstat (limited to 'apps/gui/skin_engine/skin_parser.c')
-rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 25 |
1 files changed, 25 insertions, 0 deletions
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 | } |