5 typedef struct _Elm_Params_Gengrid
7 Eina_Bool item_size_x_exists;
9 Eina_Bool item_size_y_exists;
11 Eina_Bool align_x_exists;
13 Eina_Bool align_y_exists;
15 Eina_Bool always_select_exists;
16 Eina_Bool always_select : 1;
17 Eina_Bool no_select_exists;
19 Eina_Bool multi_select_exists;
20 Eina_Bool multi_select : 1;
21 Eina_Bool h_bounce_exists;
22 Eina_Bool h_bounce : 1;
23 Eina_Bool v_bounce_exists;
24 Eina_Bool v_bounce : 1;
25 Eina_Bool horizontal_exists;
29 static Eina_Bool horizontal_bk;
32 external_gengrid_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__)
34 const Elm_Params_Gengrid *p;
36 if (to_params) p = to_params;
37 else if (from_params) p = from_params;
40 if (p->item_size_x_exists && p->item_size_y_exists)
41 elm_gengrid_item_size_set(obj, p->item_size_x, p->item_size_y);
42 else if (p->item_size_x_exists || p->item_size_y_exists)
45 elm_gengrid_item_size_get(obj, &w, &h);
46 if (p->item_size_x_exists)
47 elm_gengrid_item_size_set(obj, p->item_size_x, h);
49 elm_gengrid_item_size_set(obj, w, p->item_size_y);
51 if (p->align_x_exists && p->align_y_exists)
52 elm_gengrid_align_set(obj, p->align_x, p->align_y);
53 else if (p->align_x_exists || p->align_y_exists)
56 elm_gengrid_align_get(obj, &x, &y);
57 if (p->align_x_exists)
58 elm_gengrid_align_set(obj, p->align_x, y);
60 elm_gengrid_align_set(obj, x, p->align_y);
62 if (p->always_select_exists)
63 elm_gengrid_always_select_mode_set(obj, p->always_select);
64 if (p->no_select_exists)
65 elm_gengrid_no_select_mode_set(obj, p->no_select);
66 if (p->multi_select_exists)
67 elm_gengrid_multi_select_set(obj, p->multi_select);
68 if (p->h_bounce_exists && p->v_bounce_exists)
69 elm_gengrid_bounce_set(obj, p->h_bounce, p->v_bounce);
70 else if (p->h_bounce_exists || p->v_bounce_exists)
73 elm_gengrid_bounce_get(obj, &h, &v);
74 if (p->h_bounce_exists)
75 elm_gengrid_bounce_set(obj, p->h_bounce, v);
77 elm_gengrid_bounce_set(obj, h, p->v_bounce);
79 if (p->horizontal_exists)
81 elm_gengrid_horizontal_set(obj, p->horizontal);
82 horizontal_bk = p->horizontal;
87 external_gengrid_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param)
89 if (!strcmp(param->name, "item size x")
90 && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
93 elm_gengrid_item_size_get(obj, &w, &h);
94 elm_gengrid_item_size_set(obj, param->i, h);
97 else if (!strcmp(param->name, "item size y")
98 && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
101 elm_gengrid_item_size_get(obj, &w, &h);
102 elm_gengrid_item_size_set(obj, w, param->i);
105 else if (!strcmp(param->name, "align x")
106 && param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
109 elm_gengrid_align_get(obj, &x, &y);
110 elm_gengrid_align_set(obj, param->d, y);
113 else if (!strcmp(param->name, "align y")
114 && param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
117 elm_gengrid_align_get(obj, &x, &y);
118 elm_gengrid_align_set(obj, x, param->d);
121 else if (!strcmp(param->name, "always select")
122 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
124 elm_gengrid_always_select_mode_set(obj, param->i);
127 else if (!strcmp(param->name, "no select")
128 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
130 elm_gengrid_no_select_mode_set(obj, param->i);
133 else if (!strcmp(param->name, "multi select")
134 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
136 elm_gengrid_multi_select_set(obj, param->i);
139 else if (!strcmp(param->name, "h bounce")
140 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
143 elm_gengrid_bounce_get(obj, &h, &v);
144 elm_gengrid_item_size_set(obj, param->i, v);
147 else if (!strcmp(param->name, "v bounce")
148 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
151 elm_gengrid_bounce_get(obj, &h, &v);
152 elm_gengrid_item_size_set(obj, h, param->i);
155 else if (!strcmp(param->name, "horizontal")
156 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
158 elm_gengrid_horizontal_set(obj, param->i);
159 horizontal_bk = param->i;
163 ERR("unknown parameter '%s' of type '%s'",
164 param->name, edje_external_param_type_str(param->type));
170 external_gengrid_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param)
172 if (!strcmp(param->name, "item size x")
173 && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
176 elm_gengrid_item_size_get(obj, &x, &y);
180 else if (!strcmp(param->name, "item size y")
181 && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
184 elm_gengrid_item_size_get(obj, &x, &y);
188 else if (!strcmp(param->name, "align x")
189 && param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
192 elm_gengrid_align_get(obj, &x, &y);
196 else if (!strcmp(param->name, "align y")
197 && param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
200 elm_gengrid_align_get(obj, &x, &y);
204 else if (!strcmp(param->name, "always select")
205 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
207 param->i = elm_gengrid_always_select_mode_get(obj);
210 else if (!strcmp(param->name, "no select")
211 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
213 param->i = elm_gengrid_no_select_mode_get(obj);
216 else if (!strcmp(param->name, "multi select")
217 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
219 param->i = elm_gengrid_multi_select_get(obj);
222 else if (!strcmp(param->name, "horizontal")
223 && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
225 param->i = horizontal_bk;
229 ERR("unknown parameter '%s' of type '%s'",
230 param->name, edje_external_param_type_str(param->type));
236 external_gengrid_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const Eina_List *params)
238 Elm_Params_Gengrid *mem;
239 Edje_External_Param *param;
242 mem = calloc(1, sizeof(Elm_Params_Gengrid));
246 EINA_LIST_FOREACH(params, l, param)
248 if (!strcmp(param->name, "item size x"))
250 mem->item_size_x = param->i;
251 mem->item_size_x_exists = EINA_TRUE;
253 else if (!strcmp(param->name, "item size y"))
255 mem->item_size_y = param->i;
256 mem->item_size_y_exists = EINA_TRUE;
258 else if (!strcmp(param->name, "align x"))
260 mem->align_x = param->d;
261 mem->align_x_exists = EINA_TRUE;
263 else if (!strcmp(param->name, "align y"))
265 mem->align_y = param->d;
266 mem->align_y_exists = EINA_TRUE;
268 else if (!strcmp(param->name, "always select"))
270 mem->always_select = param->i;
271 mem->always_select_exists = EINA_TRUE;
273 else if (!strcmp(param->name, "no_select"))
275 mem->no_select = param->i;
276 mem->no_select_exists = EINA_TRUE;
278 else if (!strcmp(param->name, "multi select"))
280 mem->multi_select = param->i;
281 mem->multi_select_exists = EINA_TRUE;
283 else if (!strcmp(param->name, "h bounce"))
285 mem->h_bounce = param->i;
286 mem->h_bounce_exists = EINA_TRUE;
288 else if (!strcmp(param->name, "v bounce"))
290 mem->v_bounce = param->i;
291 mem->v_bounce_exists = EINA_TRUE;
293 else if (!strcmp(param->name, "horizontal"))
295 mem->horizontal = param->i;
296 horizontal_bk = param->i;
297 mem->horizontal_exists = EINA_TRUE;
304 static Evas_Object *external_gengrid_content_get(void *data __UNUSED__,
305 const Evas_Object *obj, const char *content)
312 external_gengrid_params_free(void *params)
314 Elm_Params_Gengrid *mem = params;
319 static Edje_External_Param_Info external_gengrid_params[] = {
320 EDJE_EXTERNAL_PARAM_INFO_INT("item size x"),
321 EDJE_EXTERNAL_PARAM_INFO_INT("item size y"),
322 EDJE_EXTERNAL_PARAM_INFO_DOUBLE("align x"),
323 EDJE_EXTERNAL_PARAM_INFO_DOUBLE("align y"),
324 EDJE_EXTERNAL_PARAM_INFO_BOOL("always select"),
325 EDJE_EXTERNAL_PARAM_INFO_BOOL("no select"),
326 EDJE_EXTERNAL_PARAM_INFO_BOOL("multi select"),
327 EDJE_EXTERNAL_PARAM_INFO_BOOL("h bounce"),
328 EDJE_EXTERNAL_PARAM_INFO_BOOL("v bounce"),
329 EDJE_EXTERNAL_PARAM_INFO_BOOL("hirizontal"),
330 EDJE_EXTERNAL_PARAM_INFO_SENTINEL
333 DEFINE_EXTERNAL_ICON_ADD(gengrid, "gengrid");
334 DEFINE_EXTERNAL_TYPE_SIMPLE(gengrid, "Gengrid");