4 typedef struct _Elm_Params_Icon
7 Eina_Bool scale_up_exists;
8 Eina_Bool scale_up : 1;
9 Eina_Bool scale_down_exists;
10 Eina_Bool scale_down : 1;
11 Eina_Bool smooth_exists;
13 Eina_Bool fill_outside_exists;
14 Eina_Bool fill_outside : 1;
15 Eina_Bool no_scale_exists;
16 Eina_Bool no_scale : 1;
17 Eina_Bool prescale_size_exists;
23 static Elm_Params_Icon *param_icon;
26 external_icon_state_set(void *data __UNUSED__, Evas_Object *obj,
27 const void *from_params, const void *to_params,
30 const Elm_Params_Icon *p;
34 if (to_params) p = to_params;
35 else if (from_params) p = from_params;
40 elm_icon_file_set(obj, p->file, NULL);
42 param_icon->file = p->file;
44 param_icon->file = p->file;
45 >>>>>>> remotes/origin/upstream
49 elm_icon_smooth_set(obj, p->smooth);
51 param_icon->smooth = p->smooth;
53 param_icon->smooth = p->smooth;
54 >>>>>>> remotes/origin/upstream
56 if (p->no_scale_exists)
58 elm_icon_no_scale_set(obj, p->no_scale);
60 param_icon->no_scale = p->no_scale;
62 if (p->scale_up_exists && p->scale_down_exists)
64 elm_icon_scale_set(obj, p->scale_up, p->scale_down);
65 param_icon->scale_up = p->scale_up;
66 param_icon->scale_down = p->scale_down;
68 else if (p->scale_up_exists || p->scale_down_exists)
70 if (p->scale_up_exists)
72 elm_icon_scale_set(obj, p->scale_up, param_icon->scale_down);
73 param_icon->scale_up = p->scale_up;
77 elm_icon_scale_set(obj, param_icon->scale_up, p->scale_down);
78 param_icon->scale_down = p->scale_down;
81 param_icon->no_scale = p->no_scale;
83 if (p->scale_up_exists && p->scale_down_exists)
85 elm_icon_resizable_set(obj, p->scale_up, p->scale_down);
86 param_icon->scale_up = p->scale_up;
87 param_icon->scale_down = p->scale_down;
89 else if (p->scale_up_exists || p->scale_down_exists)
91 if (p->scale_up_exists)
93 elm_icon_resizable_set(obj, p->scale_up, param_icon->scale_down);
94 param_icon->scale_up = p->scale_up;
98 elm_icon_resizable_set(obj, param_icon->scale_up, p->scale_down);
99 param_icon->scale_down = p->scale_down;
101 >>>>>>> remotes/origin/upstream
103 if (p->fill_outside_exists)
105 elm_icon_fill_outside_set(obj, p->fill_outside);
107 param_icon->fill_outside = p->fill_outside;
109 param_icon->fill_outside = p->fill_outside;
110 >>>>>>> remotes/origin/upstream
112 if (p->prescale_size_exists)
114 elm_icon_prescale_set(obj, p->prescale_size);
116 param_icon->prescale_size = p->prescale_size;
118 param_icon->prescale_size = p->prescale_size;
119 >>>>>>> remotes/origin/upstream
123 edje = evas_object_smart_parent_get(obj);
124 edje_object_file_get(edje, &file, NULL);
126 if (!elm_icon_file_set(obj, file, p->icon))
127 elm_icon_standard_set(obj, p->icon);
132 external_icon_param_set(void *data __UNUSED__, Evas_Object *obj,
133 const Edje_External_Param *param)
138 if (!strcmp(param->name, "file")
139 && param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
141 Eina_Bool ret = elm_icon_file_set(obj, param->s, NULL);
143 param_icon->file = param->s;
146 else if (!strcmp(param->name, "smooth")
148 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
150 elm_icon_smooth_set(obj, param->i);
151 param_icon->smooth = param->i;
154 else if (!strcmp(param->name, "no scale")
155 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
157 elm_icon_no_scale_set(obj, param->i);
158 param_icon->no_scale = param->i;
161 else if (!strcmp(param->name, "scale up")
162 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
164 elm_icon_scale_set(obj, param->i, param_icon->scale_down);
165 param_icon->scale_up = param->i;
168 else if (!strcmp(param->name, "scale down")
169 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
171 elm_icon_scale_set(obj, param_icon->scale_up, param->i);
172 param_icon->scale_down = param->i;
175 else if (!strcmp(param->name, "fill outside")
176 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
178 elm_icon_fill_outside_set(obj, param->i);
179 param_icon->fill_outside = param->i;
182 else if (!strcmp(param->name, "prescale")
183 && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
185 elm_icon_prescale_set(obj, param->i);
186 param_icon->prescale_size = param->i;
189 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
191 elm_icon_smooth_set(obj, param->i);
192 param_icon->smooth = param->i;
195 else if (!strcmp(param->name, "no scale")
196 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
198 elm_icon_no_scale_set(obj, param->i);
199 param_icon->no_scale = param->i;
202 else if (!strcmp(param->name, "scale up")
203 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
205 elm_icon_resizable_set(obj, param->i, param_icon->scale_down);
206 param_icon->scale_up = param->i;
209 else if (!strcmp(param->name, "scale down")
210 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
212 elm_icon_resizable_set(obj, param_icon->scale_up, param->i);
213 param_icon->scale_down = param->i;
216 else if (!strcmp(param->name, "fill outside")
217 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
219 elm_icon_fill_outside_set(obj, param->i);
220 param_icon->fill_outside = param->i;
223 else if (!strcmp(param->name, "prescale")
224 && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
226 elm_icon_prescale_set(obj, param->i);
227 param_icon->prescale_size = param->i;
229 >>>>>>> remotes/origin/upstream
231 else if (!strcmp(param->name, "icon"))
233 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
235 edje = evas_object_smart_parent_get(obj);
236 edje_object_file_get(edje, &file, NULL);
238 if (!elm_icon_file_set(obj, file, param->s))
239 elm_icon_standard_set(obj, param->s);
244 ERR("unknown parameter '%s' of type '%s'",
245 param->name, edje_external_param_type_str(param->type));
251 external_icon_param_get(void *data __UNUSED__,
252 const Evas_Object *obj __UNUSED__,
253 Edje_External_Param *param)
255 if (!strcmp(param->name, "file")
256 && param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
258 param->s = param_icon->file;
262 else if (!strcmp(param->name, "smooth")
263 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
265 param->i = param_icon->smooth;
268 else if (!strcmp(param->name, "no scale")
269 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
271 param->i = param_icon->no_scale;
274 else if (!strcmp(param->name, "scale up")
275 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
277 param->i = param_icon->scale_up;
280 else if (!strcmp(param->name, "scale down")
281 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
283 param->i = param_icon->scale_down;
286 else if (!strcmp(param->name, "fill outside")
287 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
289 param->i = param_icon->fill_outside;
292 else if (!strcmp(param->name, "prescale")
293 && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
295 param->i = param_icon->prescale_size;
300 else if (!strcmp(param->name, "smooth")
301 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
303 param->i = param_icon->smooth;
306 else if (!strcmp(param->name, "no scale")
307 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
309 param->i = param_icon->no_scale;
312 else if (!strcmp(param->name, "scale up")
313 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
315 param->i = param_icon->scale_up;
318 else if (!strcmp(param->name, "scale down")
319 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
321 param->i = param_icon->scale_down;
324 else if (!strcmp(param->name, "fill outside")
325 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
327 param->i = param_icon->fill_outside;
330 else if (!strcmp(param->name, "prescale")
331 && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
333 param->i = param_icon->prescale_size;
335 >>>>>>> remotes/origin/upstream
337 else if (!strcmp(param->name, "icon"))
339 /* not easy to get icon name back from live object */
343 ERR("unknown parameter '%s' of type '%s'",
344 param->name, edje_external_param_type_str(param->type));
350 external_icon_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__,
351 const Eina_List *params)
353 Elm_Params_Icon *mem;
354 Edje_External_Param *param;
356 param_icon = calloc(1, sizeof(Elm_Params_Icon));
357 mem = ELM_NEW(Elm_Params_Icon);
361 EINA_LIST_FOREACH(params, l, param)
363 if (!strcmp(param->name, "file"))
365 mem->file = eina_stringshare_add(param->s);
366 else if (!strcmp(param->name, "smooth"))
368 mem->smooth = param->i;
369 mem->smooth_exists = EINA_TRUE;
371 else if (!strcmp(param->name, "no scale"))
373 mem->no_scale = param->i;
374 mem->no_scale_exists = EINA_TRUE;
376 else if (!strcmp(param->name, "scale up"))
378 mem->scale_up = param->i;
379 mem->scale_up_exists = EINA_TRUE;
381 else if (!strcmp(param->name, "scale down"))
383 mem->scale_down = param->i;
384 mem->scale_down_exists = EINA_TRUE;
386 else if (!strcmp(param->name, "fill outside"))
388 mem->fill_outside = param->i;
389 mem->fill_outside_exists = EINA_TRUE;
391 else if (!strcmp(param->name, "prescale"))
393 mem->prescale_size = param->i;
394 mem->prescale_size_exists = EINA_TRUE;
396 mem->file = eina_stringshare_add(param->s);
397 else if (!strcmp(param->name, "smooth"))
399 mem->smooth = param->i;
400 mem->smooth_exists = EINA_TRUE;
402 else if (!strcmp(param->name, "no scale"))
404 mem->no_scale = param->i;
405 mem->no_scale_exists = EINA_TRUE;
407 else if (!strcmp(param->name, "scale up"))
409 mem->scale_up = param->i;
410 mem->scale_up_exists = EINA_TRUE;
412 else if (!strcmp(param->name, "scale down"))
414 mem->scale_down = param->i;
415 mem->scale_down_exists = EINA_TRUE;
417 else if (!strcmp(param->name, "fill outside"))
419 mem->fill_outside = param->i;
420 mem->fill_outside_exists = EINA_TRUE;
422 else if (!strcmp(param->name, "prescale"))
424 mem->prescale_size = param->i;
425 mem->prescale_size_exists = EINA_TRUE;
426 >>>>>>> remotes/origin/upstream
428 else if (!strcmp(param->name, "icon"))
430 mem->icon = eina_stringshare_add(param->s);
438 external_icon_content_get(void *data __UNUSED__,
439 const Evas_Object *obj __UNUSED__,
440 const char *content __UNUSED__)
447 external_icon_params_free(void *params)
449 Elm_Params_Icon *mem = params;
452 eina_stringshare_del(mem->file);
454 if (param_icon->file)
455 eina_stringshare_del(param_icon->file);
459 eina_stringshare_del(mem->icon);
463 static Edje_External_Param_Info external_icon_params[] = {
464 DEFINE_EXTERNAL_COMMON_PARAMS,
465 EDJE_EXTERNAL_PARAM_INFO_STRING("icon"),
466 EDJE_EXTERNAL_PARAM_INFO_STRING("file"),
467 EDJE_EXTERNAL_PARAM_INFO_BOOL("smooth"),
468 EDJE_EXTERNAL_PARAM_INFO_BOOL("no scale"),
469 EDJE_EXTERNAL_PARAM_INFO_BOOL("scale up"),
470 EDJE_EXTERNAL_PARAM_INFO_BOOL("scale down"),
471 EDJE_EXTERNAL_PARAM_INFO_BOOL("fill outside"),
472 EDJE_EXTERNAL_PARAM_INFO_INT("prescale"),
473 EDJE_EXTERNAL_PARAM_INFO_SENTINEL
476 DEFINE_EXTERNAL_ICON_ADD(icon, "icon");
477 DEFINE_EXTERNAL_TYPE_SIMPLE(icon, "Icon");