1 #include <Elementary.h>
2 #ifndef ELM_LIB_QUICKLAUNCH
3 typedef struct _Testitem
5 Elm_Gengrid_Item *item;
11 static Elm_Gengrid_Item_Class gic;
14 grid_drag_up(void *data, Evas_Object *obj, void *event_info)
16 printf("Drag up: %p\n", event_info);
20 grid_drag_right(void *data, Evas_Object *obj, void *event_info)
22 printf("Drag right: %p\n", event_info);
26 grid_drag_down(void *data, Evas_Object *obj, void *event_info)
28 printf("Drag down: %p\n", event_info);
32 grid_drag_left(void *data, Evas_Object *obj, void *event_info)
34 printf("Drag left: %p\n", event_info);
38 grid_drag_stop(void *data, Evas_Object *obj, void *event_info)
40 printf("Drag stop: %p\n", event_info);
44 grid_selected(void *data, Evas_Object *obj, void *event_info)
46 printf("Selected: %p\n", event_info);
50 grid_clicked(void *data, Evas_Object *obj, void *event_info)
52 printf("Clicked: %p\n", event_info);
56 grid_longpress(void *data, Evas_Object *obj, void *event_info)
58 printf("longpress %p\n", event_info);
62 grid_item_check_changed(void *data, Evas_Object *obj, void *event_info)
65 ti->onoff = elm_check_state_get(obj);
66 printf("item %p onoff = %i\n", ti, ti->onoff);
70 grid_label_get(const void *data, Evas_Object *obj, const char *part)
72 const Testitem *ti = data;
74 snprintf(buf, sizeof(buf), "Photo %s", ti->path);
79 grid_icon_get(const void *data, Evas_Object *obj, const char *part)
81 const Testitem *ti = data;
82 if (!strcmp(part, "elm.swallow.icon"))
85 Evas_Object *icon = elm_bg_add(obj);
86 elm_bg_file_set(icon, ti->path, NULL);
87 evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
88 evas_object_show(icon);
91 else if (!strcmp(part, "elm.swallow.end"))
94 ck = elm_check_add(obj);
95 evas_object_propagate_events_set(ck, 0);
96 elm_check_state_set(ck, ti->onoff);
97 evas_object_smart_callback_add(ck, "changed", grid_item_check_changed, data);
105 grid_state_get(const void *data, Evas_Object *obj, const char *part)
111 grid_del(const void *data, Evas_Object *obj)
116 grid_sel(void *data, Evas_Object *obj, void *event_info)
118 printf("sel item data [%p] on grid obj [%p], pointer [%p]\n", data, obj, event_info);
122 test_gengrid(void *data, Evas_Object *obj, void *event_info)
124 Evas_Object *win, *bg, *grid;
125 static Testitem ti[144];
141 win = elm_win_add(NULL, "grid", ELM_WIN_BASIC);
142 elm_win_title_set(win, "Grid");
143 elm_win_autodel_set(win, 1);
145 bg = elm_bg_add(win);
146 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
147 elm_win_resize_object_add(win, bg);
148 evas_object_show(bg);
150 grid = elm_gengrid_add(win);
151 elm_gengrid_item_size_set(grid, 150, 150);
152 elm_gengrid_horizontal_set(grid, EINA_FALSE);
153 elm_gengrid_multi_select_set(grid, EINA_TRUE);
154 evas_object_smart_callback_add(grid, "selected", grid_selected, NULL);
155 evas_object_smart_callback_add(grid, "clicked", grid_clicked, NULL);
156 evas_object_smart_callback_add(grid, "longpressed", grid_longpress, NULL);
157 evas_object_smart_callback_add(grid, "drag,start,up", grid_drag_up, NULL);
158 evas_object_smart_callback_add(grid, "drag,start,right", grid_drag_right, NULL);
159 evas_object_smart_callback_add(grid, "drag,start,down", grid_drag_down, NULL);
160 evas_object_smart_callback_add(grid, "drag,start,left", grid_drag_left, NULL);
161 evas_object_smart_callback_add(grid, "drag,stop", grid_drag_stop, NULL);
162 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
164 gic.item_style = "default";
165 gic.func.label_get = grid_label_get;
166 gic.func.icon_get = grid_icon_get;
167 gic.func.state_get = grid_state_get;
168 gic.func.del = grid_del;
171 for (i = 0; i < 12 * 12; i++)
173 snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, img[n]);
176 ti[i].path = eina_stringshare_add(buf);
177 ti[i].item = elm_gengrid_item_append(grid, &gic, &(ti[i]), grid_sel, NULL);
179 elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
182 evas_object_show(grid);
183 elm_win_resize_object_add(win, grid);
185 evas_object_resize(win, 600, 600);
186 evas_object_show(win);