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
, *erect
;
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
);
26 /* this is just an invisible rect to catch all mouse down events in the area */
27 erect
= evas_object_rectangle_add(evas
);
28 evas_object_move(erect
, x
, y
);
29 evas_object_resize(erect
, SCREEN_WIDTH
, LIST_LOGO_HEIGHT
);
30 evas_object_color_set(erect
, 0, 0, 0, 0);
31 evas_object_event_callback_add(erect
, EVAS_CALLBACK_MOUSE_DOWN
, callback
, data
);
32 evas_object_data_set(erect
, "text", etext
);
34 evas_object_show(erect
);
35 evas_object_show(ebox
);
38 static void gui_list_select_item(Evas_Object
*box
) {
39 Evas_Object
*text
= evas_object_data_get(box
, "text");
40 evas_object_color_set(text
, LIST_FONT_SELECTED_COLOR
, 255);
43 static void gui_list_deselect_item(Evas_Object
*box
) {
44 Evas_Object
*text
= evas_object_data_get(box
, "text");
45 evas_object_color_set(text
, LIST_FONT_COLOR
, 255);
48 static void gui_list_show_error(const char *errstr
, va_list ap
) {
49 static Evas_Object
*etext
;
53 Evas_Object
*ebox
= evas_object_box_add(evas
);
54 evas_object_box_align_set(ebox
, 0.5, 0.5);
55 evas_object_box_padding_set(ebox
, 10, 10);
56 evas_object_move(ebox
, 0, SCREEN_HEIGHT
- LIST_LOGO_HEIGHT
);
57 evas_object_resize(ebox
, SCREEN_WIDTH
, LIST_LOGO_HEIGHT
);
59 etext
= evas_object_text_add(evas
);
60 evas_object_text_font_set(etext
, FONT
, FONT_SIZE
);
61 evas_object_color_set(etext
, LIST_FONT_COLOR
, 255);
63 evas_object_box_append(ebox
, etext
);
64 evas_object_show(ebox
);
67 vsnprintf(buf
, sizeof buf
, errstr
, ap
);
69 evas_object_text_text_set(etext
, buf
);
70 evas_object_show(etext
);
73 static void gui_list_add_item(MenuItem
*item
) {
74 static unsigned int y
;
75 gui_list_draw_item(item
->text
, item
->logo
, gui_item_clicked
, item
, 0, y
);
76 y
+= LIST_LOGO_HEIGHT
;