Refactor GUI code, add grid layout by Dave Ball
[qi-bootmenu.git] / gui-list.c
blob6c6b60784023b07c8ca49b0e1488d762cd25f832
1 #define LIST_LOGO_WIDTH 100
2 #define LIST_LOGO_HEIGHT 80
4 static void gui_list_draw_item(const char *text, const char *logo, void(*callback)(void*, Evas*, Evas_Object*, void *),
5 void *data, int x, int y) {
7 Evas_Object *ebox, *elogo, *etext;
9 elogo = evas_object_image_add(evas);
10 evas_object_image_file_set(elogo, logo, NULL);
11 evas_object_image_fill_set(elogo, 0, 0, LIST_LOGO_WIDTH, LIST_LOGO_HEIGHT);
12 evas_object_resize(elogo, LIST_LOGO_WIDTH, LIST_LOGO_HEIGHT);
13 evas_object_show(elogo);
15 etext = evas_object_text_add(evas);
16 evas_object_text_font_set(etext, FONT, FONT_SIZE);
17 evas_object_text_text_set(etext, text);
18 evas_object_show(etext);
20 ebox = evas_object_box_add(evas);
21 evas_object_box_align_set(ebox, 0, 0.5);
22 evas_object_box_padding_set(ebox, 10, 10);
23 evas_object_move(ebox, x, y);
24 evas_object_resize(ebox, SCREEN_WIDTH, LIST_LOGO_HEIGHT);
25 evas_object_box_append(ebox, elogo);
26 evas_object_box_append(ebox, etext);
27 evas_object_event_callback_add(ebox, EVAS_CALLBACK_MOUSE_UP, callback, data);
29 evas_object_show(ebox);
32 static void gui_list_select_item(Evas_Object *item) {
33 Evas_Object *eline;
34 Evas_Coord x, y, w, h;
35 evas_object_geometry_get(item, &x, &y, &w, &h);
36 eline = evas_object_line_add(evas);
37 evas_object_line_xy_set(eline, x, y, x+w, y);
38 evas_object_show(eline);
39 eline = evas_object_line_add(evas);
40 evas_object_line_xy_set(eline, x, y, x, y+h);
41 evas_object_show(eline);
42 eline = evas_object_line_add(evas);
43 evas_object_line_xy_set(eline, x+w, y, x+w, y+h);
44 evas_object_show(eline);
45 eline = evas_object_line_add(evas);
46 evas_object_line_xy_set(eline, x, y+h, x+w, y+h);
47 evas_object_show(eline);
50 static void gui_list(Eina_List *systems) {
51 Eina_List *l;
52 int i, y = 0;
53 BootItem *s;
55 EINA_LIST_FOREACH(systems, l, s) {
56 gui_list_draw_item(s->dev, s->logo, bootitem_clicked, s, 0, y);
57 y += LIST_LOGO_HEIGHT;
59 /* add pre defined menu entries */
60 for (i = 0; i < countof(menu); i++) {
61 gui_list_draw_item(menu[i].text, menu[i].logo, menu[i].callback, NULL, 0, y);
62 y += LIST_LOGO_HEIGHT;