1 #include <Elementary.h>
3 # include "elementary_config.h"
5 #ifndef ELM_LIB_QUICKLAUNCH
6 typedef struct _Testitem
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_text_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_content_get(void *data, Evas_Object *obj, const char *part)
110 const Testitem *ti = data;
111 if (!strcmp(part, "elm.swallow.icon"))
113 Evas_Object *icon = elm_bg_add(obj);
114 elm_bg_file_set(icon, ti->path, NULL);
115 evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
116 evas_object_show(icon);
119 else if (!strcmp(part, "elm.swallow.end"))
122 ck = elm_check_add(obj);
123 evas_object_propagate_events_set(ck, 0);
124 elm_check_state_set(ck, ti->onoff);
125 evas_object_smart_callback_add(ck, "changed", grid_item_check_changed, data);
126 evas_object_show(ck);
133 grid_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
139 grid_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
144 grid_sel(void *data, Evas_Object *obj, void *event_info)
146 printf("sel item data [%p] on grid obj [%p], pointer [%p]\n", data, obj, event_info);
150 test_gengrid(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
152 Evas_Object *win, *bg, *grid;
153 static Testitem ti[144];
157 win = elm_win_add(NULL, "gengrid", ELM_WIN_BASIC);
158 elm_win_title_set(win, "GenGrid");
159 elm_win_autodel_set(win, EINA_TRUE);
161 bg = elm_bg_add(win);
162 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
163 elm_win_resize_object_add(win, bg);
164 evas_object_show(bg);
166 grid = elm_gengrid_add(win);
167 elm_gengrid_item_size_set(grid, 150, 150);
168 elm_gengrid_horizontal_set(grid, EINA_FALSE);
169 elm_gengrid_multi_select_set(grid, EINA_TRUE);
170 elm_gengrid_reorder_mode_set(grid, EINA_TRUE);
171 evas_object_smart_callback_add(grid, "selected", grid_selected, NULL);
172 evas_object_smart_callback_add(grid, "clicked,double", grid_double_clicked, NULL);
173 evas_object_smart_callback_add(grid, "longpressed", grid_longpress, NULL);
174 evas_object_smart_callback_add(grid, "moved", grid_moved, NULL);
175 evas_object_smart_callback_add(grid, "drag,start,up", grid_drag_up, NULL);
176 evas_object_smart_callback_add(grid, "drag,start,right", grid_drag_right, NULL);
177 evas_object_smart_callback_add(grid, "drag,start,down", grid_drag_down, NULL);
178 evas_object_smart_callback_add(grid, "drag,start,left", grid_drag_left, NULL);
179 evas_object_smart_callback_add(grid, "drag,stop", grid_drag_stop, NULL);
180 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
182 gic.item_style = "default";
183 gic.func.text_get = grid_text_get;
184 gic.func.content_get = grid_content_get;
185 gic.func.state_get = grid_state_get;
186 gic.func.del = grid_del;
189 for (i = 0; i < 12 * 12; i++)
191 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]);
194 ti[i].path = eina_stringshare_add(buf);
195 ti[i].item = elm_gengrid_item_append(grid, &gic, &(ti[i]), grid_sel, NULL);
197 elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
200 evas_object_show(grid);
201 elm_win_resize_object_add(win, grid);
203 evas_object_resize(win, 600, 600);
204 evas_object_show(win);
208 _before_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
211 Evas_Object *grid = data;
212 Elm_Object_Item *sel;
215 sel = elm_gengrid_selected_item_get(grid);
218 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[rand() % 9]);
219 ti = malloc(sizeof(*ti));
221 ti->path = eina_stringshare_add(buf);
222 ti->item = elm_gengrid_item_insert_before(grid, &gic, ti, sel, grid_sel,
227 _after_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
230 Evas_Object *grid = data;
231 Elm_Object_Item *sel;
234 sel = elm_gengrid_selected_item_get(grid);
237 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[rand() % 9]);
238 ti = malloc(sizeof(*ti));
240 ti->path = eina_stringshare_add(buf);
241 ti->item = elm_gengrid_item_insert_after(grid, &gic, ti, sel, grid_sel,
246 _delete_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
248 Evas_Object *grid = data;
249 Eina_List *l, *l2, *l3;
250 Elm_Object_Item *gg_it;
252 l = (Eina_List*)elm_gengrid_selected_items_get(grid);
254 EINA_LIST_FOREACH_SAFE(l, l2, l3, gg_it)
255 elm_object_item_del(gg_it);
259 _prepend_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
262 Evas_Object *grid = data;
265 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[rand() % 9]);
266 ti = malloc(sizeof(*ti));
268 ti->path = eina_stringshare_add(buf);
269 ti->item = elm_gengrid_item_prepend(grid, &gic, ti, grid_sel, NULL);
273 _append_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
276 Evas_Object *grid = data;
279 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[rand() % 9]);
280 ti = malloc(sizeof(*ti));
282 ti->path = eina_stringshare_add(buf);
283 ti->item = elm_gengrid_item_append(grid, &gic, ti, grid_sel, NULL);
287 _size_changed(void *data, Evas_Object *obj, void *event_info __UNUSED__)
289 Evas_Object *grid = data;
290 int size = elm_spinner_value_get(obj);
291 elm_gengrid_item_size_set(grid, size, size);
295 test_gengrid2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
297 Evas_Object *win, *bg, *grid, *bx, *hbx, *bt, *ck;
299 win = elm_win_add(NULL, "gengrid2", ELM_WIN_BASIC);
300 elm_win_title_set(win, "GenGrid2");
301 elm_win_autodel_set(win, EINA_TRUE);
303 bg = elm_bg_add(win);
304 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
305 elm_win_resize_object_add(win, bg);
306 evas_object_show(bg);
308 bx = elm_box_add(win);
309 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
310 elm_win_resize_object_add(win, bx);
311 evas_object_show(bx);
313 grid = elm_gengrid_add(win);
314 elm_gengrid_item_size_set(grid, 150, 150);
315 elm_gengrid_horizontal_set(grid, EINA_FALSE);
316 elm_gengrid_multi_select_set(grid, EINA_FALSE);
317 evas_object_smart_callback_add(grid, "selected", grid_selected, NULL);
318 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
319 evas_object_size_hint_min_set(grid, 600, 500);
320 elm_box_pack_end(bx, grid);
321 evas_object_show(grid);
323 hbx = elm_box_add(win);
324 evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
325 elm_box_horizontal_set(hbx, EINA_TRUE);
326 elm_box_pack_end(bx, hbx);
327 evas_object_show(hbx);
329 bt = elm_button_add(win);
330 elm_object_text_set(bt, "Append");
331 evas_object_smart_callback_add(bt, "clicked", _append_bt_clicked, grid);
332 elm_box_pack_end(hbx, bt);
333 evas_object_show(bt);
335 bt = elm_button_add(win);
336 elm_object_text_set(bt, "Prepend");
337 evas_object_smart_callback_add(bt, "clicked", _prepend_bt_clicked, grid);
338 elm_box_pack_end(hbx, bt);
339 evas_object_show(bt);
341 bt = elm_button_add(win);
342 elm_object_text_set(bt, "Insert before");
343 evas_object_smart_callback_add(bt, "clicked", _before_bt_clicked, grid);
344 elm_box_pack_end(hbx, bt);
345 evas_object_show(bt);
347 bt = elm_button_add(win);
348 elm_object_text_set(bt, "Insert after");
349 evas_object_smart_callback_add(bt, "clicked", _after_bt_clicked, grid);
350 elm_box_pack_end(hbx, bt);
351 evas_object_show(bt);
353 bt = elm_button_add(win);
354 elm_object_text_set(bt, "Delete");
355 evas_object_smart_callback_add(bt, "clicked", _delete_bt_clicked, grid);
356 elm_box_pack_end(hbx, bt);
357 evas_object_show(bt);
359 bt = elm_spinner_add(win);
360 elm_spinner_min_max_set(bt, 10, 1024);
361 elm_spinner_value_set(bt, 150);
362 elm_spinner_label_format_set(bt, "Item size: %.0f");
363 evas_object_smart_callback_add(bt, "changed", _size_changed, grid);
364 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
365 elm_box_pack_end(hbx, bt);
366 evas_object_show(bt);
368 ck = elm_check_add(win);
369 elm_object_text_set(ck, "Horizontal Mode");
370 evas_object_smart_callback_add(ck, "changed", _horizontal_grid, grid);
371 elm_box_pack_end(hbx, ck);
372 evas_object_show(ck);
374 gic.item_style = "default";
375 gic.func.text_get = grid_text_get;
376 gic.func.content_get = grid_content_get;
377 gic.func.state_get = grid_state_get;
378 gic.func.del = grid_del;
380 evas_object_resize(win, 600, 600);
381 evas_object_show(win);
385 test_gengrid3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
387 Evas_Object *win, *bg, *grid;
388 static Testitem ti[144];
392 win = elm_win_add(NULL, "gengrid_group", ELM_WIN_BASIC);
393 elm_win_title_set(win, "GenGrid Group");
394 elm_win_autodel_set(win, EINA_TRUE);
396 bg = elm_bg_add(win);
397 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
398 elm_win_resize_object_add(win, bg);
399 evas_object_show(bg);
401 grid = elm_gengrid_add(win);
402 elm_gengrid_item_size_set(grid, 150, 150);
403 elm_gengrid_group_item_size_set(grid, 31, 31);
404 //elm_gengrid_horizontal_set(grid, EINA_TRUE);
405 elm_gengrid_horizontal_set(grid, EINA_FALSE);
406 elm_gengrid_multi_select_set(grid, EINA_TRUE);
407 elm_gengrid_reorder_mode_set(grid, EINA_TRUE);
408 evas_object_smart_callback_add(grid, "selected", grid_selected, NULL);
409 evas_object_smart_callback_add(grid, "clicked,double", grid_double_clicked, NULL);
410 evas_object_smart_callback_add(grid, "longpressed", grid_longpress, NULL);
411 evas_object_smart_callback_add(grid, "moved", grid_moved, NULL);
412 evas_object_smart_callback_add(grid, "drag,start,up", grid_drag_up, NULL);
413 evas_object_smart_callback_add(grid, "drag,start,right", grid_drag_right, NULL);
414 evas_object_smart_callback_add(grid, "drag,start,down", grid_drag_down, NULL);
415 evas_object_smart_callback_add(grid, "drag,start,left", grid_drag_left, NULL);
416 evas_object_smart_callback_add(grid, "drag,stop", grid_drag_stop, NULL);
417 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
419 gic.item_style = "default";
420 gic.func.text_get = grid_text_get;
421 gic.func.content_get = grid_content_get;
422 gic.func.state_get = grid_state_get;
423 gic.func.del = grid_del;
425 ggic.item_style = "group_index";
426 ggic.func.text_get = grid_text_get;
427 ggic.func.content_get = NULL;
428 ggic.func.state_get = NULL;
429 ggic.func.del = NULL;
432 for (i = 0; i < 12 * 12; i++)
434 snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]);
437 ti[i].path = eina_stringshare_add(buf);
438 if (i == 0 || i == 18 || i == 53 || i == 100)
439 //if (i == 0 || i == 18)
440 ti[i].item = elm_gengrid_item_append(grid, &ggic, &(ti[i]), grid_sel, NULL);
442 ti[i].item = elm_gengrid_item_append(grid, &gic, &(ti[i]), grid_sel, NULL);
444 elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
447 evas_object_show(grid);
448 elm_win_resize_object_add(win, grid);
450 evas_object_resize(win, 600, 600);
451 evas_object_show(win);