1 #define GRID_LOGO_WIDTH 200
2 #define GRID_LOGO_HEIGHT 180
4 static void gui_grid_draw_item(const char *logo
, void(*callback
)(void*, Evas
*, Evas_Object
*, void *),
5 void *data
, int x
, int y
) {
7 Evas_Object
*elogo
= evas_object_image_add(evas
);
8 evas_object_image_file_set(elogo
, logo
, NULL
);
9 evas_object_image_fill_set(elogo
, 0, 0, GRID_LOGO_WIDTH
, GRID_LOGO_HEIGHT
);
10 evas_object_move(elogo
, x
, y
);
11 evas_object_resize(elogo
, GRID_LOGO_WIDTH
, GRID_LOGO_HEIGHT
);
12 evas_object_show(elogo
);
14 evas_object_event_callback_add(elogo
, EVAS_CALLBACK_MOUSE_UP
, callback
, data
);
17 static void gui_grid(Eina_List
*systems
) {
18 /* Divide the screen into 6ths */
20 eline
= evas_object_line_add(evas
);
21 evas_object_line_xy_set(eline
, SCREEN_WIDTH
/2, 0, SCREEN_WIDTH
/2, SCREEN_HEIGHT
);
22 evas_object_show(eline
);
23 eline
= evas_object_line_add(evas
);
24 evas_object_line_xy_set(eline
, 0, SCREEN_HEIGHT
/3, SCREEN_WIDTH
, SCREEN_HEIGHT
/3);
25 evas_object_show(eline
);
26 eline
= evas_object_line_add(evas
);
27 evas_object_line_xy_set(eline
, 0, 2*(SCREEN_HEIGHT
/3), SCREEN_WIDTH
, 2*(SCREEN_HEIGHT
/3) );
28 evas_object_show(eline
);
34 EINA_LIST_FOREACH(systems
, l
, s
) {
35 x
= (i
%2 == 0) ? 20 : 260;
36 y
= 16 + ((SCREEN_HEIGHT
/3) * (i
/2));
37 gui_grid_draw_item(s
->logo
, bootitem_clicked
, s
, x
, y
);
41 for (i
= 0; i
< countof(menu
); i
++) {
42 x
= ((5-i
)%2 == 0) ? 20 : 260;
43 y
= 16 + ((SCREEN_HEIGHT
/3) * ((5-i
)/2));
44 gui_grid_draw_item(menu
[i
].logo
, menu
[i
].callback
, NULL
, x
, y
);