diff options
Diffstat (limited to 'apps/gui/skin_engine/skin_touchsupport.c')
-rw-r--r-- | apps/gui/skin_engine/skin_touchsupport.c | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/apps/gui/skin_engine/skin_touchsupport.c b/apps/gui/skin_engine/skin_touchsupport.c index 3206579adf..110e97f997 100644 --- a/apps/gui/skin_engine/skin_touchsupport.c +++ b/apps/gui/skin_engine/skin_touchsupport.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include "misc.h" | 27 | #include "misc.h" |
28 | #include "option_select.h" | 28 | #include "option_select.h" |
29 | #include "sound.h" | 29 | #include "sound.h" |
30 | #include "settings_list.h" | ||
30 | 31 | ||
31 | 32 | ||
32 | /** Disarms all touchregions. */ | 33 | /** Disarms all touchregions. */ |
@@ -129,8 +130,45 @@ int skin_get_touchaction(struct wps_data *data, int* edge_offset, | |||
129 | case ACTION_SETTINGS_INC: | 130 | case ACTION_SETTINGS_INC: |
130 | case ACTION_SETTINGS_DEC: | 131 | case ACTION_SETTINGS_DEC: |
131 | { | 132 | { |
132 | const struct settings_list *setting = temp->data; | 133 | const struct settings_list *setting = |
133 | option_select_next_val(setting, returncode == ACTION_SETTINGS_DEC, true); | 134 | temp->setting_data.setting; |
135 | option_select_next_val(setting, | ||
136 | returncode == ACTION_SETTINGS_DEC, | ||
137 | true); | ||
138 | returncode = ACTION_REDRAW; | ||
139 | } | ||
140 | break; | ||
141 | case ACTION_SETTINGS_SET: | ||
142 | { | ||
143 | struct touchsetting *data = &temp->setting_data; | ||
144 | const struct settings_list *s = data->setting; | ||
145 | void (*f)(int) = NULL; | ||
146 | switch (s->flags&F_T_MASK) | ||
147 | { | ||
148 | case F_T_CUSTOM: | ||
149 | s->custom_setting | ||
150 | ->load_from_cfg(s->setting, data->value.text); | ||
151 | break; | ||
152 | case F_T_INT: | ||
153 | case F_T_UINT: | ||
154 | *(int*)s->setting = data->value.number; | ||
155 | if (s->flags&F_CHOICE_SETTING) | ||
156 | f = s->choice_setting->option_callback; | ||
157 | else if (s->flags&F_TABLE_SETTING) | ||
158 | f = s->table_setting->option_callback; | ||
159 | else | ||
160 | f = s->int_setting->option_callback; | ||
161 | |||
162 | if (f) | ||
163 | f(data->value.number); | ||
164 | break; | ||
165 | case F_T_BOOL: | ||
166 | *(bool*)s->setting = data->value.number ? true : false; | ||
167 | if (s->bool_setting->option_callback) | ||
168 | s->bool_setting | ||
169 | ->option_callback(data->value.number ? true : false); | ||
170 | break; | ||
171 | } | ||
134 | returncode = ACTION_REDRAW; | 172 | returncode = ACTION_REDRAW; |
135 | } | 173 | } |
136 | break; | 174 | break; |