1 static void gui_list_draw_item(const char *text
, const char *logo
, void(*callback
)(void*, Evas
*, Evas_Object
*, void *),
2 void *data
, int x
, int y
) {
4 Evas_Object
*ebox
, *elogo
, *etext
;
6 elogo
= evas_object_image_add(evas
);
7 evas_object_image_file_set(elogo
, logo
, NULL
);
8 evas_object_image_fill_set(elogo
, 0, 0, LIST_LOGO_WIDTH
, LIST_LOGO_HEIGHT
);
9 evas_object_resize(elogo
, LIST_LOGO_WIDTH
, LIST_LOGO_HEIGHT
);
10 evas_object_show(elogo
);
12 etext
= evas_object_text_add(evas
);
13 evas_object_text_font_set(etext
, FONT
, FONT_SIZE
);
14 evas_object_text_text_set(etext
, text
);
15 evas_object_color_set(etext
, LIST_FONT_COLOR
, 255);
16 evas_object_show(etext
);
18 ebox
= evas_object_box_add(evas
);
19 evas_object_box_align_set(ebox
, 0, 0.5);
20 evas_object_box_padding_set(ebox
, 10, 10);
21 evas_object_move(ebox
, x
, y
);
22 evas_object_resize(ebox
, SCREEN_WIDTH
, LIST_LOGO_HEIGHT
);
23 evas_object_box_append(ebox
, elogo
);
24 evas_object_box_append(ebox
, etext
);
25 evas_object_event_callback_add(ebox
, EVAS_CALLBACK_MOUSE_UP
, callback
, data
);
26 evas_object_data_set(ebox
, "text", etext
);
28 evas_object_show(ebox
);
31 static void gui_list_select_item(Evas_Object
*box
) {
32 Evas_Object
*text
= evas_object_data_get(box
, "text");
33 evas_object_color_set(text
, LIST_FONT_SELECTED_COLOR
, 255);
36 static void gui_list_show_error(const char *errstr
, va_list ap
) {
37 static Evas_Object
*etext
;
41 Evas_Object
*ebox
= evas_object_box_add(evas
);
42 evas_object_box_align_set(ebox
, 0.5, 0.5);
43 evas_object_box_padding_set(ebox
, 10, 10);
44 evas_object_move(ebox
, 0, SCREEN_HEIGHT
- LIST_LOGO_HEIGHT
);
45 evas_object_resize(ebox
, SCREEN_WIDTH
, LIST_LOGO_HEIGHT
);
47 etext
= evas_object_text_add(evas
);
48 evas_object_text_font_set(etext
, FONT
, FONT_SIZE
);
49 evas_object_color_set(etext
, LIST_FONT_COLOR
, 255);
51 evas_object_box_append(ebox
, etext
);
52 evas_object_show(ebox
);
55 vsnprintf(buf
, sizeof buf
, errstr
, ap
);
57 evas_object_text_text_set(etext
, buf
);
58 evas_object_show(etext
);
61 static void gui_list(Eina_List
*systems
) {
63 unsigned int i
, y
= 0;
66 EINA_LIST_FOREACH(systems
, l
, s
) {
67 if (!strcmp(menu
[0].data
, s
->dev
))
69 gui_list_draw_item(s
->dev
, s
->logo
, gui_bootitem_clicked
, s
, 0, y
);
70 y
+= LIST_LOGO_HEIGHT
;
72 /* add pre defined menu entries */
73 for (i
= 0; i
< countof(menu
); i
++) {
76 gui_list_draw_item(menu
[i
].text
, menu
[i
].logo
, menu
[i
].callback
, menu
[i
].data
, 0, y
);
77 y
+= LIST_LOGO_HEIGHT
;