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;
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_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
75 printf("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_item_check_changed(void *data, Evas_Object *obj, void *event_info __UNUSED__)
88 ti->onoff = elm_check_state_get(obj);
89 printf("item %p onoff = %i\n", ti, ti->onoff);
93 grid_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
95 const Testitem *ti = data;
97 snprintf(buf, sizeof(buf), "Photo %s", ti->path);
102 grid_icon_get(void *data, Evas_Object *obj, const char *part)
104 const Testitem *ti = data;
105 if (!strcmp(part, "elm.swallow.icon"))
108 Evas_Object *icon = elm_bg_add(obj);
109 elm_bg_file_set(icon, ti->path, NULL);
110 evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
111 evas_object_show(icon);
114 else if (!strcmp(part, "elm.swallow.end"))
117 ck = elm_check_add(obj);
118 evas_object_propagate_events_set(ck, 0);
119 elm_check_state_set(ck, ti->onoff);
120 evas_object_smart_callback_add(ck, "changed", grid_item_check_changed, data);
121 evas_object_show(ck);
128 grid_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
134 grid_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
139 grid_sel(void *data, Evas_Object *obj, void *event_info)
141 printf("sel item data [%p] on grid obj [%p], pointer [%p]\n", data, obj, event_info);
145 test_gengrid(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
147 Evas_Object *win, *bg, *grid;
148 static Testitem ti[144];
152 win = elm_win_add(NULL, "gengrid", ELM_WIN_BASIC);
153 elm_win_title_set(win, "GenGrid");
154 elm_win_autodel_set(win, 1);
156 bg = elm_bg_add(win);
157 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
158 elm_win_resize_object_add(win, bg);
159 evas_object_show(bg);
161 grid = elm_gengrid_add(win);
162 elm_gengrid_item_size_set(grid, 150, 150);
163 elm_gengrid_horizontal_set(grid, EINA_FALSE);
164 elm_gengrid_multi_select_set(grid, EINA_TRUE);
165 evas_object_smart_callback_add(grid, "selected", grid_selected, NULL);
166 evas_object_smart_callback_add(grid, "clicked", grid_clicked, NULL);
167 evas_object_smart_callback_add(grid, "longpressed", grid_longpress, NULL);
168 evas_object_smart_callback_add(grid, "drag,start,up", grid_drag_up, NULL);
169 evas_object_smart_callback_add(grid, "drag,start,right", grid_drag_right, NULL);
170 evas_object_smart_callback_add(grid, "drag,start,down", grid_drag_down, NULL);
171 evas_object_smart_callback_add(grid, "drag,start,left", grid_drag_left, NULL);
172 evas_object_smart_callback_add(grid, "drag,stop", grid_drag_stop, NULL);
173 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
175 gic.item_style = "default";
176 gic.func.label_get = grid_label_get;
177 gic.func.icon_get = grid_icon_get;
178 gic.func.state_get = grid_state_get;
179 gic.func.del = grid_del;
182 for (i = 0; i < 12 * 12; i++)
184 snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, img[n]);
187 ti[i].path = eina_stringshare_add(buf);
188 ti[i].item = elm_gengrid_item_append(grid, &gic, &(ti[i]), grid_sel, NULL);
190 elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
193 evas_object_show(grid);
194 elm_win_resize_object_add(win, grid);
196 evas_object_resize(win, 600, 600);
197 evas_object_show(win);
201 _before_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
204 Evas_Object *grid = data;
205 Elm_Gengrid_Item *sel;
208 sel = elm_gengrid_selected_item_get(grid);
211 snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, img[rand() % 9]);
212 ti = malloc(sizeof(*ti));
214 ti->path = eina_stringshare_add(buf);
215 ti->item = elm_gengrid_item_insert_before(grid, &gic, ti, sel, grid_sel,
220 _after_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
223 Evas_Object *grid = data;
224 Elm_Gengrid_Item *sel;
227 sel = elm_gengrid_selected_item_get(grid);
230 snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, img[rand() % 9]);
231 ti = malloc(sizeof(*ti));
233 ti->path = eina_stringshare_add(buf);
234 ti->item = elm_gengrid_item_insert_after(grid, &gic, ti, sel, grid_sel,
239 _prepend_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
242 Evas_Object *grid = data;
245 snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, img[rand() % 9]);
246 ti = malloc(sizeof(*ti));
248 ti->path = eina_stringshare_add(buf);
249 ti->item = elm_gengrid_item_prepend(grid, &gic, ti, grid_sel, NULL);
253 _append_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
256 Evas_Object *grid = data;
259 snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, img[rand() % 9]);
260 ti = malloc(sizeof(*ti));
262 ti->path = eina_stringshare_add(buf);
263 ti->item = elm_gengrid_item_append(grid, &gic, ti, grid_sel, NULL);
267 _size_changed(void *data, Evas_Object *obj, void *event_info __UNUSED__)
269 Evas_Object *grid = data;
270 int size = elm_spinner_value_get(obj);
271 elm_gengrid_item_size_set(grid, size, size);
275 test_gengrid2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
277 Evas_Object *win, *bg, *grid, *bx, *hbx, *bt, *ck;
279 win = elm_win_add(NULL, "gengrid2", ELM_WIN_BASIC);
280 elm_win_title_set(win, "GenGrid2");
281 elm_win_autodel_set(win, 1);
283 bg = elm_bg_add(win);
284 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
285 elm_win_resize_object_add(win, bg);
286 evas_object_show(bg);
288 bx = elm_box_add(win);
289 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
290 elm_win_resize_object_add(win, bx);
291 evas_object_show(bx);
293 grid = elm_gengrid_add(win);
294 elm_gengrid_item_size_set(grid, 150, 150);
295 elm_gengrid_horizontal_set(grid, EINA_FALSE);
296 elm_gengrid_multi_select_set(grid, EINA_FALSE);
297 evas_object_smart_callback_add(grid, "selected", grid_selected, NULL);
298 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
299 evas_object_size_hint_min_set(grid, 600, 500);
300 elm_box_pack_end(bx, grid);
301 evas_object_show(grid);
303 hbx = elm_box_add(win);
304 evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
305 elm_box_horizontal_set(hbx, EINA_TRUE);
306 elm_box_pack_end(bx, hbx);
307 evas_object_show(hbx);
309 bt = elm_button_add(win);
310 elm_button_label_set(bt, "Append");
311 evas_object_smart_callback_add(bt, "clicked", _append_bt_clicked, grid);
312 elm_box_pack_end(hbx, bt);
313 evas_object_show(bt);
315 bt = elm_button_add(win);
316 elm_button_label_set(bt, "Prepend");
317 evas_object_smart_callback_add(bt, "clicked", _prepend_bt_clicked, grid);
318 elm_box_pack_end(hbx, bt);
319 evas_object_show(bt);
321 bt = elm_button_add(win);
322 elm_button_label_set(bt, "Insert before");
323 evas_object_smart_callback_add(bt, "clicked", _before_bt_clicked, grid);
324 elm_box_pack_end(hbx, bt);
325 evas_object_show(bt);
327 bt = elm_button_add(win);
328 elm_button_label_set(bt, "Insert after");
329 evas_object_smart_callback_add(bt, "clicked", _after_bt_clicked, grid);
330 elm_box_pack_end(hbx, bt);
331 evas_object_show(bt);
333 bt = elm_spinner_add(win);
334 elm_spinner_min_max_set(bt, 10, 1024);
335 elm_spinner_value_set(bt, 150);
336 elm_spinner_label_format_set(bt, "Item size: %.0f");
337 evas_object_smart_callback_add(bt, "changed", _size_changed, grid);
338 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
339 elm_box_pack_end(hbx, bt);
340 evas_object_show(bt);
342 ck = elm_check_add(win);
343 elm_check_label_set(ck, "Horizontal Mode");
344 evas_object_smart_callback_add(ck, "changed", _horizontal_grid, grid);
345 elm_box_pack_end(hbx, ck);
346 evas_object_show(ck);
348 gic.item_style = "default";
349 gic.func.label_get = grid_label_get;
350 gic.func.icon_get = grid_icon_get;
351 gic.func.state_get = grid_state_get;
352 gic.func.del = grid_del;
354 evas_object_resize(win, 600, 600);
355 evas_object_show(win);