1 #include <Elementary.h>
3 # include "elementary_config.h"
5 #ifndef ELM_LIB_QUICKLAUNCH
6 typedef struct _Testitem
8 Elm_Gengrid_Item *item;
14 static const char *img[9] =
27 static Elm_Gengrid_Item_Class gic, ggic;
30 _horizontal_grid(void *data, Evas_Object *obj, void *event_info __UNUSED__)
32 Evas_Object *grid = data;
33 elm_gengrid_horizontal_set(grid, elm_check_state_get(obj));
37 grid_drag_up(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
39 printf("Drag up: %p\n", event_info);
43 grid_drag_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
45 printf("Drag right: %p\n", event_info);
49 grid_drag_down(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
51 printf("Drag down: %p\n", event_info);
55 grid_drag_left(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
57 printf("Drag left: %p\n", event_info);
61 grid_drag_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
63 printf("Drag stop: %p\n", event_info);
67 grid_selected(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
69 printf("Selected: %p\n", event_info);
73 grid_double_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
75 printf("Double clicked: %p\n", event_info);
79 grid_longpress(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
81 printf("longpress %p\n", event_info);
85 grid_moved(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
87 printf("moved %p\n", event_info);
91 grid_item_check_changed(void *data, Evas_Object *obj, void *event_info __UNUSED__)
94 ti->onoff = elm_check_state_get(obj);
95 printf("item %p onoff = %i\n", ti, ti->onoff);
99 grid_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
101 const Testitem *ti = data;
103 snprintf(buf, sizeof(buf), "Photo %s", ti->path);
108 grid_icon_get(void *data, Evas_Object *obj, const char *part)
110 const Testitem *ti = data;
111 if (!strcmp(part, "elm.swallow.icon"))
114 Evas_Object *icon = elm_bg_add(obj);
115 elm_bg_file_set(icon, ti->path, NULL);
116 evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
117 evas_object_show(icon);
120 else if (!strcmp(part, "elm.swallow.end"))
123 ck = elm_check_add(obj);
124 evas_object_propagate_events_set(ck, 0);
125 elm_check_state_set(ck, ti->onoff);
126 evas_object_smart_callback_add(ck, "changed", grid_item_check_changed, data);
127 evas_object_show(ck);
134 grid_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
140 grid_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
145 grid_sel(void *data, Evas_Object *obj, void *event_info)
147 printf("sel item data [%p] on grid obj [%p], pointer [%p]\n", data, obj, event_info);
151 test_gengrid(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
153 Evas_Object *win, *bg, *grid;
154 static Testitem ti[144];
158 win = elm_win_add(NULL, "gengrid", ELM_WIN_BASIC);
159 elm_win_title_set(win, "GenGrid");
160 elm_win_autodel_set(win, EINA_TRUE);
162 bg = elm_bg_add(win);
163 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
164 elm_win_resize_object_add(win, bg);
165 evas_object_show(bg);
167 grid = elm_gengrid_add(win);
168 elm_gengrid_item_size_set(grid, 150, 150);
169 elm_gengrid_horizontal_set(grid, EINA_FALSE);
170 elm_gengrid_multi_select_set(grid, EINA_TRUE);
171 elm_gengrid_reorder_mode_set(grid, EINA_TRUE);
172 evas_object_smart_callback_add(grid, "selected", grid_selected, NULL);
173 evas_object_smart_callback_add(grid, "clicked,double", grid_double_clicked, NULL);
174 evas_object_smart_callback_add(grid, "longpressed", grid_longpress, NULL);
175 evas_object_smart_callback_add(grid, "moved", grid_moved, NULL);
176 evas_object_smart_callback_add(grid, "drag,start,up", grid_drag_up, NULL);
177 evas_object_smart_callback_add(grid, "drag,start,right", grid_drag_right, NULL);
178 evas_object_smart_callback_add(grid, "drag,start,down", grid_drag_down, NULL);
179 evas_object_smart_callback_add(grid, "drag,start,left", grid_drag_left, NULL);
180 evas_object_smart_callback_add(grid, "drag,stop", grid_drag_stop, NULL);
181 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
183 gic.item_style = "default";
184 gic.func.label_get = grid_label_get;
185 gic.func.icon_get = grid_icon_get;
186 gic.func.state_get = grid_state_get;
187 gic.func.del = grid_del;
190 for (i = 0; i < 12 * 12; i++)
192 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]);
195 ti[i].path = eina_stringshare_add(buf);
196 ti[i].item = elm_gengrid_item_append(grid, &gic, &(ti[i]), grid_sel, NULL);
198 elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
201 evas_object_show(grid);
202 elm_win_resize_object_add(win, grid);
204 evas_object_resize(win, 600, 600);
205 evas_object_show(win);
209 _before_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
212 Evas_Object *grid = data;
213 Elm_Gengrid_Item *sel;
216 sel = elm_gengrid_selected_item_get(grid);
219 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[rand() % 9]);
220 ti = malloc(sizeof(*ti));
222 ti->path = eina_stringshare_add(buf);
223 ti->item = elm_gengrid_item_insert_before(grid, &gic, ti, sel, grid_sel,
228 _after_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
231 Evas_Object *grid = data;
232 Elm_Gengrid_Item *sel;
235 sel = elm_gengrid_selected_item_get(grid);
238 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[rand() % 9]);
239 ti = malloc(sizeof(*ti));
241 ti->path = eina_stringshare_add(buf);
242 ti->item = elm_gengrid_item_insert_after(grid, &gic, ti, sel, grid_sel,
247 _delete_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
249 Evas_Object *grid = data;
250 Eina_List *l, *l2, *l3;
251 Elm_Gengrid_Item *it;
253 l = (Eina_List*)elm_gengrid_selected_items_get(grid);
255 EINA_LIST_FOREACH_SAFE(l, l2, l3, it)
256 elm_gengrid_item_del(it);
260 _prepend_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
263 Evas_Object *grid = data;
266 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[rand() % 9]);
267 ti = malloc(sizeof(*ti));
269 ti->path = eina_stringshare_add(buf);
270 ti->item = elm_gengrid_item_prepend(grid, &gic, ti, grid_sel, NULL);
274 _append_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
277 Evas_Object *grid = data;
280 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[rand() % 9]);
281 ti = malloc(sizeof(*ti));
283 ti->path = eina_stringshare_add(buf);
284 ti->item = elm_gengrid_item_append(grid, &gic, ti, grid_sel, NULL);
288 _size_changed(void *data, Evas_Object *obj, void *event_info __UNUSED__)
290 Evas_Object *grid = data;
291 int size = elm_spinner_value_get(obj);
292 elm_gengrid_item_size_set(grid, size, size);
296 test_gengrid2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
298 Evas_Object *win, *bg, *grid, *bx, *hbx, *bt, *ck;
300 win = elm_win_add(NULL, "gengrid2", ELM_WIN_BASIC);
301 elm_win_title_set(win, "GenGrid2");
302 elm_win_autodel_set(win, EINA_TRUE);
304 bg = elm_bg_add(win);
305 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
306 elm_win_resize_object_add(win, bg);
307 evas_object_show(bg);
309 bx = elm_box_add(win);
310 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
311 elm_win_resize_object_add(win, bx);
312 evas_object_show(bx);
314 grid = elm_gengrid_add(win);
315 elm_gengrid_item_size_set(grid, 150, 150);
316 elm_gengrid_horizontal_set(grid, EINA_FALSE);
317 elm_gengrid_multi_select_set(grid, EINA_FALSE);
318 evas_object_smart_callback_add(grid, "selected", grid_selected, NULL);
319 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
320 evas_object_size_hint_min_set(grid, 600, 500);
321 elm_box_pack_end(bx, grid);
322 evas_object_show(grid);
324 hbx = elm_box_add(win);
325 evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
326 elm_box_horizontal_set(hbx, EINA_TRUE);
327 elm_box_pack_end(bx, hbx);
328 evas_object_show(hbx);
330 bt = elm_button_add(win);
331 elm_object_text_set(bt, "Append");
332 evas_object_smart_callback_add(bt, "clicked", _append_bt_clicked, grid);
333 elm_box_pack_end(hbx, bt);
334 evas_object_show(bt);
336 bt = elm_button_add(win);
337 elm_object_text_set(bt, "Prepend");
338 evas_object_smart_callback_add(bt, "clicked", _prepend_bt_clicked, grid);
339 elm_box_pack_end(hbx, bt);
340 evas_object_show(bt);
342 bt = elm_button_add(win);
343 elm_object_text_set(bt, "Insert before");
344 evas_object_smart_callback_add(bt, "clicked", _before_bt_clicked, grid);
345 elm_box_pack_end(hbx, bt);
346 evas_object_show(bt);
348 bt = elm_button_add(win);
349 elm_object_text_set(bt, "Insert after");
350 evas_object_smart_callback_add(bt, "clicked", _after_bt_clicked, grid);
351 elm_box_pack_end(hbx, bt);
352 evas_object_show(bt);
354 bt = elm_button_add(win);
355 elm_object_text_set(bt, "Delete");
356 evas_object_smart_callback_add(bt, "clicked", _delete_bt_clicked, grid);
357 elm_box_pack_end(hbx, bt);
358 evas_object_show(bt);
360 bt = elm_spinner_add(win);
361 elm_spinner_min_max_set(bt, 10, 1024);
362 elm_spinner_value_set(bt, 150);
363 elm_spinner_label_format_set(bt, "Item size: %.0f");
364 evas_object_smart_callback_add(bt, "changed", _size_changed, grid);
365 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
366 elm_box_pack_end(hbx, bt);
367 evas_object_show(bt);
369 ck = elm_check_add(win);
370 elm_object_text_set(ck, "Horizontal Mode");
371 evas_object_smart_callback_add(ck, "changed", _horizontal_grid, grid);
372 elm_box_pack_end(hbx, ck);
373 evas_object_show(ck);
375 gic.item_style = "default";
376 gic.func.label_get = grid_label_get;
377 gic.func.icon_get = grid_icon_get;
378 gic.func.state_get = grid_state_get;
379 gic.func.del = grid_del;
381 evas_object_resize(win, 600, 600);
382 evas_object_show(win);
386 test_gengrid3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
388 Evas_Object *win, *bg, *grid;
389 static Testitem ti[144];
393 win = elm_win_add(NULL, "gengrid_group", ELM_WIN_BASIC);
394 elm_win_title_set(win, "GenGrid Group");
395 elm_win_autodel_set(win, EINA_TRUE);
397 bg = elm_bg_add(win);
398 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
399 elm_win_resize_object_add(win, bg);
400 evas_object_show(bg);
402 grid = elm_gengrid_add(win);
403 elm_gengrid_item_size_set(grid, 150, 150);
404 elm_gengrid_group_item_size_set(grid, 31, 31);
405 //elm_gengrid_horizontal_set(grid, EINA_TRUE);
406 elm_gengrid_horizontal_set(grid, EINA_FALSE);
407 elm_gengrid_multi_select_set(grid, EINA_TRUE);
408 elm_gengrid_reorder_mode_set(grid, EINA_TRUE);
409 evas_object_smart_callback_add(grid, "selected", grid_selected, NULL);
410 evas_object_smart_callback_add(grid, "clicked,double", grid_double_clicked, NULL);
411 evas_object_smart_callback_add(grid, "longpressed", grid_longpress, NULL);
412 evas_object_smart_callback_add(grid, "moved", grid_moved, NULL);
413 evas_object_smart_callback_add(grid, "drag,start,up", grid_drag_up, NULL);
414 evas_object_smart_callback_add(grid, "drag,start,right", grid_drag_right, NULL);
415 evas_object_smart_callback_add(grid, "drag,start,down", grid_drag_down, NULL);
416 evas_object_smart_callback_add(grid, "drag,start,left", grid_drag_left, NULL);
417 evas_object_smart_callback_add(grid, "drag,stop", grid_drag_stop, NULL);
418 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
420 gic.item_style = "default";
421 gic.func.label_get = grid_label_get;
422 gic.func.icon_get = grid_icon_get;
423 gic.func.state_get = grid_state_get;
424 gic.func.del = grid_del;
426 ggic.item_style = "group_index";
427 ggic.func.label_get = grid_label_get;
428 ggic.func.icon_get = NULL;
429 ggic.func.state_get = NULL;
430 ggic.func.del = NULL;
434 for (i = 0; i < 12 * 12; i++)
436 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]);
439 ti[i].path = eina_stringshare_add(buf);
440 if (i == 0 || i == 18 || i == 53 || i == 100)
441 //if (i == 0 || i == 18)
442 ti[i].item = elm_gengrid_item_append(grid, &ggic, &(ti[i]), grid_sel, NULL);
444 ti[i].item = elm_gengrid_item_append(grid, &gic, &(ti[i]), grid_sel, NULL);
446 elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
449 evas_object_show(grid);
450 elm_win_resize_object_add(win, grid);
452 evas_object_resize(win, 600, 600);
453 evas_object_show(win);