1 // gcc -o efl_ui_grid_view_example_1 efl_ui_grid_view_example_1.c `pkg-config --cflags --libs elementary`
2
3 #define EFL_BETA_API_SUPPORT 1
4
5 #include <Efl.h>
6 #include <Efl_Ui.h>
7 #include <Elementary.h>
8 #include "efl_ui_grid_view.eo.h"
9
10
11 static Efl_Model*
_make_model(Evas_Object * win)12 _make_model(Evas_Object *win)
13 {
14 Eina_Value vtext;
15 Efl_Generic_Model *model, *child;
16
17 model = efl_add(EFL_GENERIC_MODEL_CLASS, win);
18 eina_value_setup(&vtext, EINA_VALUE_TYPE_STRING);
19
20 #define IC(x) \
21 child = efl_model_child_add(model); \
22 eina_value_set(&vtext, x); \
23 efl_model_property_set(child, "title", &vtext);
24
25 IC("user-home")
26 IC("user-bookmarks")
27 IC("user-desktop")
28 IC("user-trash")
29 IC("folder")
30 IC("folder-drag-accept")
31 IC("folder-remote")
32 IC("folder-open")
33 IC("folder-home")
34 IC("folder-download")
35 IC("folder-recent")
36 IC("folder-documents")
37 IC("folder-pictures")
38 IC("folder-music")
39 IC("folder-videos")
40 IC("folder-visiting")
41 IC("network-server")
42 IC("network-workgroup")
43 IC("start-here")
44 IC("emblem-default")
45 IC("emblem-documents")
46 IC("emblem-downloads")
47 IC("emblem-favorite")
48 IC("emblem-important")
49 IC("emblem-mail")
50 IC("emblem-photos")
51 IC("emblem-readonly")
52 IC("emblem-shared")
53 IC("emblem-symbolic-link")
54 IC("emblem-unreadable")
55 IC("emblem-system")
56 IC("emblem-synchronized")
57 IC("emblem-synchronizing")
58 IC("address-book-new")
59 IC("application-exit")
60 IC("appointment-new")
61 IC("call-start")
62 IC("call-stop")
63 IC("contact-new")
64 IC("document-open")
65 IC("document-open-recent")
66 IC("document-page-setup")
67 IC("document-properties")
68 IC("document-save")
69 IC("document-save-as")
70 IC("document-send")
71 IC("document-close")
72 IC("document-new")
73 IC("document-print")
74 IC("document-print-preview")
75 IC("document-revert")
76 IC("document-export")
77 IC("document-import")
78 IC("edit-clear")
79 IC("edit-copy")
80 IC("edit-cut")
81 IC("edit-delete")
82 IC("edit-find")
83 IC("edit-find-replace")
84 IC("edit-paste")
85 IC("edit-redo")
86 IC("edit-undo")
87 IC("edit-select-all")
88 IC("folder-copy")
89 IC("folder-move")
90 IC("folder-new")
91 IC("format-indent-less")
92 IC("format-indent-more")
93 IC("format-justify-center")
94 IC("format-justify-fill")
95 IC("format-justify-left")
96 IC("format-justify-right")
97 IC("format-text-direction-ltr")
98 IC("format-text-direction-rtl")
99 IC("format-text-bold")
100 IC("format-text-italic")
101 IC("format-text-underline")
102 IC("format-text-strikethrough")
103 IC("go-home")
104 IC("go-bottom")
105 IC("go-down")
106 IC("go-first")
107 IC("go-jump")
108 IC("go-last")
109 IC("go-next")
110 IC("go-previous")
111 IC("go-top")
112 IC("go-up")
113 IC("insert-image")
114 IC("insert-link")
115 IC("insert-object")
116 IC("insert-text")
117 IC("list-add")
118 IC("list-remove")
119 IC("mail-forward")
120 IC("mail-mark-important")
121 IC("mail-mark-junk")
122 IC("mail-mark-notjunk")
123 IC("mail-mark-read")
124 IC("mail-mark-unread")
125 IC("mail-message-new")
126 IC("mail-reply-all")
127 IC("mail-reply-sender")
128 IC("mail-send")
129 IC("mail-send-receive")
130 IC("media-eject")
131 IC("media-playback-pause")
132 IC("media-playback-start")
133 IC("media-playback-stop")
134 IC("media-record")
135 IC("media-seek-backward")
136 IC("media-seek-forward")
137 IC("media-skip-backward")
138 IC("media-skip-forward")
139 IC("object-flip-horizontal")
140 IC("object-flip-vertical")
141 IC("object-rotate-left")
142 IC("object-rotate-right")
143 IC("process-stop")
144 IC("tools-check-spelling")
145 IC("view-list-compact")
146 IC("view-list-details")
147 IC("view-list-icons")
148 IC("view-fullscreen")
149 IC("view-refresh")
150 IC("view-restore")
151 IC("view-sort-ascending")
152 IC("view-sort-descending")
153 IC("view-close")
154 IC("window-close")
155 IC("window-new")
156 IC("system-run")
157 IC("system-shutdown")
158 IC("system-reboot")
159 IC("system-lock-screen")
160 IC("system-log-out")
161 IC("system-search")
162 IC("help-about")
163 IC("help-contents")
164 IC("help-faq")
165 IC("zoom-in")
166 IC("zoom-out")
167 IC("zoom-original")
168 IC("zoom-fit")
169 IC("zoom-fill")
170 IC("zoom-fit-best")
171 IC("appointment-missed")
172 IC("appointment-soon")
173 IC("audio-volume-high")
174 IC("audio-volume-low")
175 IC("audio-volume-medium")
176 IC("audio-volume-muted")
177 IC("audio-volume")
178 IC("battery-caution")
179 IC("battery-empty")
180 IC("battery-low")
181 IC("battery-good")
182 IC("battery-full")
183 IC("battery-caution-charging")
184 IC("battery-empty-charging")
185 IC("battery-low-charging")
186 IC("battery-good-charging")
187 IC("battery-full-charging")
188 IC("bluetooth-active")
189 IC("bluetooth-disabled")
190 IC("changes-allow")
191 IC("changes-prevent")
192 IC("dialog-error")
193 IC("dialog-information")
194 IC("dialog-password")
195 IC("dialog-question")
196 IC("dialog-warning")
197 IC("media-playlist-repeat")
198 IC("media-playlist-shuffle")
199 IC("network-cellular-3g")
200 IC("network-cellular-4g")
201 IC("network-cellular-edge")
202 IC("network-cellular-gprs")
203 IC("network-cellular-umts")
204 IC("network-cellular-connected")
205 IC("network-cellular-signal-excellent")
206 IC("network-cellular-signal-good")
207 IC("network-cellular-signal-none")
208 IC("network-cellular-signal-ok")
209 IC("network-cellular-signal-weak")
210 IC("network-cellular-signal-acquiring")
211 IC("network-error")
212 IC("network-offline")
213 IC("network-receive")
214 IC("network-transmit-receive")
215 IC("network-transmit")
216 IC("network-idle")
217 IC("network-vpn")
218 IC("network-vpn-acquiring")
219 IC("network-wireless-acquiring")
220 IC("network-wireless-encrypted")
221 IC("network-wireless-signal-excellent")
222 IC("network-wireless-signal-good")
223 IC("network-wireless-signal-none")
224 IC("network-wireless-signal-ok")
225 IC("network-wireless-signal-weak")
226 IC("printer-error")
227 IC("printer-printing")
228 IC("printer-warning")
229 IC("security-high")
230 IC("security-medium")
231 IC("security-low")
232 IC("software-update-available")
233 IC("software-update-urgent")
234 IC("task-due")
235 IC("task-past-due")
236 IC("user-available")
237 IC("user-away")
238 IC("user-busy")
239 IC("user-invisible")
240 IC("user-idle")
241 IC("user-offline")
242 IC("user-trash-full")
243 IC("weather-clear-night")
244 IC("weather-clear")
245 IC("weather-clouds-night")
246 IC("weather-clouds")
247 IC("weather-few-clouds-night")
248 IC("weather-few-clouds")
249 IC("weather-fog")
250 IC("weather-overcast")
251 IC("weather-severe-alert")
252 IC("weather-showers-scattered")
253 IC("weather-showers")
254 IC("weather-snow")
255 IC("weather-storm")
256 IC("mail-attachment")
257 IC("mail-unread")
258 IC("mail-read")
259 IC("mail-replied")
260 IC("mail-signed")
261 IC("mail-signed-verified")
262 IC("starred")
263 IC("non-starred")
264 IC("audio-card")
265 IC("audio-input-microphone")
266 IC("battery")
267 IC("camera")
268 IC("camera-photo")
269 IC("camera-web")
270 IC("camera-video")
271 IC("drive-harddisk")
272 IC("drive-harddisk-ieee1394")
273 IC("drive-harddisk-usb")
274 IC("drive-optical")
275 IC("drive-removable-media")
276 IC("drive-removable-media-ieee1394")
277 IC("drive-removable-media-usb")
278 IC("computer")
279 IC("computer-laptop")
280 IC("multimedia-player")
281 IC("media-optical")
282 IC("media-optical-cd")
283 IC("media-optical-audio")
284 IC("media-optical-dvd")
285 IC("media-optical-bd")
286 IC("media-flash")
287 IC("media-flash-cf")
288 IC("media-flash-ms")
289 IC("media-flash-sd")
290 IC("media-flash-sm")
291 IC("media-floppy")
292 IC("media-zip")
293 IC("media-tape")
294 IC("media-memory")
295 IC("processor")
296 IC("input-mouse")
297 IC("input-tablet")
298 IC("input-keyboard")
299 IC("input-gaming")
300 IC("pda")
301 IC("phone")
302 IC("printer")
303 IC("scanner")
304 IC("modem")
305 IC("video-display")
306 IC("network-wired")
307 IC("network-wireless")
308 IC("applications-accessories")
309 IC("applications-development")
310 IC("applications-games")
311 IC("applications-graphics")
312 IC("applications-internet")
313 IC("applications-multimedia")
314 IC("applications-office")
315 IC("applications-other")
316 IC("applications-science")
317 IC("applications-system")
318 IC("applications-utilities")
319 IC("preferences-desktop")
320 IC("preferences-system")
321 IC("preferences-other")
322 IC("preferences-color")
323 IC("preferences-profile")
324 IC("preferences-desktop-display")
325 IC("preferences-desktop-font")
326 IC("preferences-desktop-keyboard")
327 IC("preferences-desktop-locale")
328 IC("preferences-desktop-multimedia")
329 IC("preferences-desktop-screensaver")
330 IC("preferences-desktop-theme")
331 IC("preferences-desktop-wallpaper")
332 IC("system-file-manager")
333 IC("flag-ad")
334 IC("flag-af")
335 IC("flag-al")
336 IC("flag-am")
337 IC("flag-ar")
338 IC("flag-at")
339 IC("flag-au")
340 IC("flag-az")
341 IC("flag-ba")
342 IC("flag-bd")
343 IC("flag-be")
344 IC("flag-bg")
345 IC("flag-br")
346 IC("flag-bt")
347 IC("flag-bw")
348 IC("flag-by")
349 IC("flag-ca")
350 IC("flag-cd")
351 IC("flag-ch")
352 IC("flag-cm")
353 IC("flag-cn")
354 IC("flag-cz")
355 IC("flag-de")
356 IC("flag-dk")
357 IC("flag-ee")
358 IC("flag-es")
359 IC("flag-et")
360 IC("flag-fi")
361 IC("flag-fo")
362 IC("flag-fr")
363 IC("flag-gb")
364 IC("flag-ge")
365 IC("flag-gh")
366 IC("flag-gn")
367 IC("flag-gr")
368 IC("flag-hr")
369 IC("flag-hu")
370 IC("flag-ie")
371 IC("flag-il")
372 IC("flag-in")
373 IC("flag-iq")
374 IC("flag-ir")
375 IC("flag-is")
376 IC("flag-it")
377 IC("flag-jp")
378 IC("flag-ke")
379 IC("flag-kg")
380 IC("flag-kh")
381 IC("flag-kr")
382 IC("flag-ku")
383 IC("flag-kz")
384 IC("flag-la")
385 IC("flag-lk")
386 IC("flag-lt")
387 IC("flag-lv")
388 IC("flag-ma")
389 IC("flag-md")
390 IC("flag-me")
391 IC("flag-mk")
392 IC("flag-ml")
393 IC("flag-mm")
394 IC("flag-mn")
395 IC("flag-mt")
396 IC("flag-mv")
397 IC("flag-my")
398 IC("flag-ng")
399 IC("flag-nl")
400 IC("flag-no")
401 IC("flag-np")
402 IC("flag-ph")
403 IC("flag-pk")
404 IC("flag-pl")
405 IC("flag-pt")
406 IC("flag-ro")
407 IC("flag-rs")
408 IC("flag-ru")
409 IC("flag-se")
410 IC("flag-si")
411 IC("flag-sk")
412 IC("flag-sn")
413 IC("flag-sy")
414 IC("flag-th")
415 IC("flag-tj")
416 IC("flag-tm")
417 IC("flag-tr")
418 IC("flag-tw")
419 IC("flag-tz")
420 IC("flag-ua")
421 IC("flag-us")
422 IC("flag-uz")
423 IC("flag-vn")
424 IC("flag-za")
425 IC("inode-directory")
426
427 eina_value_flush(&vtext);
428 return model;
429 }
430
431 static void
_item_constructing(void * data EINA_UNUSED,const Efl_Event * ev)432 _item_constructing(void *data EINA_UNUSED, const Efl_Event *ev)
433 {
434 Efl_Gfx_Entity *item = ev->info;
435
436 if (!efl_key_data_get(item, "efl.ui.widget.factory.size_set"))
437 efl_gfx_hint_size_min_set(item, EINA_SIZE2D(100, 100));
438 }
439
440 EAPI_MAIN void
efl_main(void * data EINA_UNUSED,const Efl_Event * ev EINA_UNUSED)441 efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
442 {
443 Efl_Ui_Factory *factory, *image_factory;
444 Efl_Ui_Win *win;
445 Efl_Ui_Grid_View *grid;
446 Eo *model;
447
448 elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
449
450 win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
451 efl_ui_win_type_set(efl_added, EFL_UI_WIN_TYPE_BASIC),
452 efl_text_set(efl_added, "Efl.Ui.Grid_View example"),
453 efl_ui_win_autodel_set(efl_added, EINA_TRUE)
454 );
455
456 model = _make_model(win);
457 image_factory = efl_add(EFL_UI_LAYOUT_FACTORY_CLASS, win);
458 efl_ui_widget_factory_item_class_set(image_factory, EFL_UI_IMAGE_CLASS);
459 efl_ui_property_bind(image_factory, "icon", "title");
460
461 factory = efl_add(EFL_UI_LAYOUT_FACTORY_CLASS, win);
462 efl_ui_widget_factory_item_class_set(factory, EFL_UI_GRID_DEFAULT_ITEM_CLASS);
463 efl_ui_property_bind(factory, "efl.text", "title");
464 efl_ui_factory_bind(factory, "icon", image_factory);
465 efl_event_callback_add(factory, EFL_UI_FACTORY_EVENT_ITEM_CONSTRUCTING, _item_constructing, NULL);
466
467 grid = efl_add(EFL_UI_GRID_VIEW_CLASS, win,
468 efl_ui_collection_view_factory_set(efl_added, factory),
469 efl_ui_view_model_set(efl_added, model)
470 );
471 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
472 evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
473
474 efl_content_set(win, grid);
475 efl_gfx_entity_size_set(win, EINA_SIZE2D(320, 320));
476 }
477 EFL_MAIN()
478