3 typedef struct _Elm_Params_Spinner
5 const char *label_format;
6 double min, max, step, value;
7 Eina_Bool min_exists:1;
8 Eina_Bool max_exists:1;
9 Eina_Bool step_exists:1;
10 Eina_Bool value_exists:1;
11 Eina_Bool wrap_exists:1;
16 external_spinner_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__)
18 const Elm_Params_Spinner *p;
20 if (to_params) p = to_params;
21 else if (from_params) p = from_params;
25 elm_spinner_label_format_set(obj, p->label_format);
26 if ((p->min_exists) && (p->max_exists))
27 elm_spinner_min_max_set(obj, p->min, p->max);
28 else if ((p->min_exists) || (p->max_exists))
31 elm_spinner_min_max_get(obj, &min, &max);
33 elm_spinner_min_max_set(obj, p->min, max);
35 elm_spinner_min_max_set(obj, min, p->max);
38 elm_spinner_step_set(obj, p->step);
40 elm_spinner_value_set(obj, p->value);
42 elm_spinner_wrap_set(obj, p->wrap);
46 external_spinner_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param)
48 if (!strcmp(param->name, "label format"))
50 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
52 elm_spinner_label_format_set(obj, param->s);
56 else if (!strcmp(param->name, "min"))
58 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
61 elm_spinner_min_max_get(obj, &min, &max);
62 elm_spinner_min_max_set(obj, param->d, max);
66 else if (!strcmp(param->name, "max"))
68 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
71 elm_spinner_min_max_get(obj, &min, &max);
72 elm_spinner_min_max_set(obj, min, param->d);
76 else if (!strcmp(param->name, "step"))
78 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
80 elm_spinner_step_set(obj, param->d);
84 else if (!strcmp(param->name, "value"))
86 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
88 elm_spinner_value_set(obj, param->d);
92 else if (!strcmp(param->name, "wrap"))
94 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
96 elm_spinner_wrap_set(obj, param->i);
101 ERR("unknown parameter '%s' of type '%s'",
102 param->name, edje_external_param_type_str(param->type));
108 external_spinner_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param)
110 if (!strcmp(param->name, "label format"))
112 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
114 param->s = elm_spinner_label_format_get(obj);
118 else if (!strcmp(param->name, "min"))
120 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
123 elm_spinner_min_max_get(obj, &min, &max);
128 else if (!strcmp(param->name, "max"))
130 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
133 elm_spinner_min_max_get(obj, &min, &max);
138 else if (!strcmp(param->name, "step"))
140 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
142 param->d = elm_spinner_step_get(obj);
146 else if (!strcmp(param->name, "value"))
148 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
150 param->d = elm_spinner_value_get(obj);
154 else if (!strcmp(param->name, "wrap"))
156 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
158 param->i = elm_spinner_value_get(obj);
163 ERR("unknown parameter '%s' of type '%s'",
164 param->name, edje_external_param_type_str(param->type));
170 external_spinner_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const Eina_List *params)
172 Elm_Params_Spinner *mem;
173 Edje_External_Param *param;
176 mem = calloc(1, sizeof(Elm_Params_Spinner));
180 EINA_LIST_FOREACH(params, l, param)
182 if (!strcmp(param->name, "label format"))
183 mem->label_format = eina_stringshare_add(param->s);
184 else if (!strcmp(param->name, "min"))
187 mem->min_exists = EINA_TRUE;
189 else if (!strcmp(param->name, "max"))
192 mem->max_exists = EINA_TRUE;
194 else if (!strcmp(param->name, "step"))
196 mem->step = param->d;
197 mem->step_exists = EINA_TRUE;
199 else if (!strcmp(param->name, "value"))
201 mem->value = param->d;
202 mem->value_exists = EINA_TRUE;
204 else if (!strcmp(param->name, "wrap"))
206 mem->wrap = param->i;
207 mem->wrap_exists = EINA_TRUE;
215 external_spinner_params_free(void *params)
217 Elm_Params_Spinner *mem = params;
219 if (mem->label_format)
220 eina_stringshare_del(mem->label_format);
224 static Edje_External_Param_Info external_spinner_params[] = {
225 EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT("label format", "%1.2f"),
226 EDJE_EXTERNAL_PARAM_INFO_DOUBLE("min"),
227 EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT("max", 100.0),
228 EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT("step", 1.0),
229 EDJE_EXTERNAL_PARAM_INFO_DOUBLE("value"),
230 EDJE_EXTERNAL_PARAM_INFO_BOOL("wrap"),
231 EDJE_EXTERNAL_PARAM_INFO_SENTINEL
234 DEFINE_EXTERNAL_ICON_ADD(spinner, "spinner")
235 DEFINE_EXTERNAL_TYPE_SIMPLE(spinner, "Spinner")