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 elm_gengrid_reorder_mode_set(grid, EINA_TRUE);
166 evas_object_smart_callback_add(grid, "selected", grid_selected, NULL);
167 evas_object_smart_callback_add(grid, "clicked", grid_clicked, NULL);
168 evas_object_smart_callback_add(grid, "longpressed", grid_longpress, NULL);
169 evas_object_smart_callback_add(grid, "drag,start,up", grid_drag_up, NULL);
170 evas_object_smart_callback_add(grid, "drag,start,right", grid_drag_right, NULL);
171 evas_object_smart_callback_add(grid, "drag,start,down", grid_drag_down, NULL);
172 evas_object_smart_callback_add(grid, "drag,start,left", grid_drag_left, NULL);
173 evas_object_smart_callback_add(grid, "drag,stop", grid_drag_stop, NULL);
174 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
176 gic.item_style = "default";
177 gic.func.label_get = grid_label_get;
178 gic.func.icon_get = grid_icon_get;
179 gic.func.state_get = grid_state_get;
180 gic.func.del = grid_del;
183 for (i = 0; i < 12 * 12; i++)
185 snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, img[n]);
188 ti[i].path = eina_stringshare_add(buf);
189 ti[i].item = elm_gengrid_item_append(grid, &gic, &(ti[i]), grid_sel, NULL);
191 elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
194 evas_object_show(grid);
195 elm_win_resize_object_add(win, grid);
197 evas_object_resize(win, 600, 600);
198 evas_object_show(win);
202 _before_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
205 Evas_Object *grid = data;
206 Elm_Gengrid_Item *sel;
209 sel = elm_gengrid_selected_item_get(grid);
212 snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, img[rand() % 9]);
213 ti = malloc(sizeof(*ti));
215 ti->path = eina_stringshare_add(buf);
216 ti->item = elm_gengrid_item_insert_before(grid, &gic, ti, sel, grid_sel,
221 _after_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
224 Evas_Object *grid = data;
225 Elm_Gengrid_Item *sel;
228 sel = elm_gengrid_selected_item_get(grid);
231 snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, img[rand() % 9]);
232 ti = malloc(sizeof(*ti));
234 ti->path = eina_stringshare_add(buf);
235 ti->item = elm_gengrid_item_insert_after(grid, &gic, ti, sel, grid_sel,
240 _prepend_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
243 Evas_Object *grid = data;
246 snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, img[rand() % 9]);
247 ti = malloc(sizeof(*ti));
249 ti->path = eina_stringshare_add(buf);
250 ti->item = elm_gengrid_item_prepend(grid, &gic, ti, grid_sel, NULL);
254 _append_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
257 Evas_Object *grid = data;
260 snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, img[rand() % 9]);
261 ti = malloc(sizeof(*ti));
263 ti->path = eina_stringshare_add(buf);
264 ti->item = elm_gengrid_item_append(grid, &gic, ti, grid_sel, NULL);
268 _size_changed(void *data, Evas_Object *obj, void *event_info __UNUSED__)
270 Evas_Object *grid = data;
271 int size = elm_spinner_value_get(obj);
272 elm_gengrid_item_size_set(grid, size, size);
276 test_gengrid2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
278 Evas_Object *win, *bg, *grid, *bx, *hbx, *bt, *ck;
280 win = elm_win_add(NULL, "gengrid2", ELM_WIN_BASIC);
281 elm_win_title_set(win, "GenGrid2");
282 elm_win_autodel_set(win, 1);
284 bg = elm_bg_add(win);
285 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
286 elm_win_resize_object_add(win, bg);
287 evas_object_show(bg);
289 bx = elm_box_add(win);
290 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
291 elm_win_resize_object_add(win, bx);
292 evas_object_show(bx);
294 grid = elm_gengrid_add(win);
295 elm_gengrid_item_size_set(grid, 150, 150);
296 elm_gengrid_horizontal_set(grid, EINA_FALSE);
297 elm_gengrid_multi_select_set(grid, EINA_FALSE);
298 evas_object_smart_callback_add(grid, "selected", grid_selected, NULL);
299 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
300 evas_object_size_hint_min_set(grid, 600, 500);
301 elm_box_pack_end(bx, grid);
302 evas_object_show(grid);
304 hbx = elm_box_add(win);
305 evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
306 elm_box_horizontal_set(hbx, EINA_TRUE);
307 elm_box_pack_end(bx, hbx);
308 evas_object_show(hbx);
310 bt = elm_button_add(win);
311 elm_button_label_set(bt, "Append");
312 evas_object_smart_callback_add(bt, "clicked", _append_bt_clicked, grid);
313 elm_box_pack_end(hbx, bt);
314 evas_object_show(bt);
316 bt = elm_button_add(win);
317 elm_button_label_set(bt, "Prepend");
318 evas_object_smart_callback_add(bt, "clicked", _prepend_bt_clicked, grid);
319 elm_box_pack_end(hbx, bt);
320 evas_object_show(bt);
322 bt = elm_button_add(win);
323 elm_button_label_set(bt, "Insert before");
324 evas_object_smart_callback_add(bt, "clicked", _before_bt_clicked, grid);
325 elm_box_pack_end(hbx, bt);
326 evas_object_show(bt);
328 bt = elm_button_add(win);
329 elm_button_label_set(bt, "Insert after");
330 evas_object_smart_callback_add(bt, "clicked", _after_bt_clicked, grid);
331 elm_box_pack_end(hbx, bt);
332 evas_object_show(bt);
334 bt = elm_spinner_add(win);
335 elm_spinner_min_max_set(bt, 10, 1024);
336 elm_spinner_value_set(bt, 150);
337 elm_spinner_label_format_set(bt, "Item size: %.0f");
338 evas_object_smart_callback_add(bt, "changed", _size_changed, grid);
339 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
340 elm_box_pack_end(hbx, bt);
341 evas_object_show(bt);
343 ck = elm_check_add(win);
344 elm_check_label_set(ck, "Horizontal Mode");
345 evas_object_smart_callback_add(ck, "changed", _horizontal_grid, grid);
346 elm_box_pack_end(hbx, ck);
347 evas_object_show(ck);
349 gic.item_style = "default";
350 gic.func.label_get = grid_label_get;
351 gic.func.icon_get = grid_icon_get;
352 gic.func.state_get = grid_state_get;
353 gic.func.del = grid_del;
355 evas_object_resize(win, 600, 600);
356 evas_object_show(win);