1 #ifdef HAVE_CONFIG_H
2 # include "elementary_config.h"
3 #endif
4 #include <Efl_Ui.h>
5 #include <Elementary.h>
6 
7 #define MAX_NUM_OF_CONTENT 17
8 
9 const Efl_Class *content_class[MAX_NUM_OF_CONTENT];
10 
11 
12 static void
_reset_cb(void * data,const Efl_Event * ev EINA_UNUSED)13 _reset_cb(void *data, const Efl_Event *ev EINA_UNUSED)
14 {
15    Efl_Ui_Radio_Group *radio = data;
16    Evas_Object *target;
17 
18    radio = efl_ui_selectable_last_selected_get(radio);
19    target = evas_object_data_get(radio, "data");
20 
21    efl_gfx_color_set(efl_part(target, "background"), 0, 0, 0, 0);
22    efl_file_simple_load(efl_part(target, "background"), NULL, NULL);
23 }
24 
25 static void
_color_cb(void * data,const Efl_Event * ev EINA_UNUSED)26 _color_cb(void *data, const Efl_Event *ev EINA_UNUSED)
27 {
28    Efl_Ui_Radio_Group *radio = data;
29    Evas_Object *target;
30    static Eina_Bool i;
31 
32    radio = efl_ui_selectable_last_selected_get(radio);
33    target = evas_object_data_get(radio, "data");
34    i ^= EINA_TRUE;
35    efl_gfx_color_set(efl_part(target, "background"), (i) ? 255 : 0, (i) ? 0 : 255, 0, 255);
36 }
37 
38 static void
_scale_type_cb(void * data,const Efl_Event * ev EINA_UNUSED)39 _scale_type_cb(void *data, const Efl_Event *ev EINA_UNUSED)
40 {
41    Efl_Ui_Radio_Group *radio = data;
42    Evas_Object *target;
43    Efl_Gfx_Image_Scale_Method type;
44    char buf[PATH_MAX];
45 
46    radio = efl_ui_selectable_last_selected_get(radio);
47    target = evas_object_data_get(radio, "data");
48 
49    snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
50    efl_file_simple_load(efl_part(target, "background"), buf, NULL);
51    type = efl_gfx_image_scale_method_get(efl_part(target, "background"));
52    type = (type + 1) % 6;
53    efl_gfx_image_scale_method_set(efl_part(target, "background"), type);
54 }
55 
56 static Efl_Ui_Radio_Group *
_create_box_contents(Evas_Object * box)57 _create_box_contents(Evas_Object *box)
58 {
59    Evas_Object *hbox;
60    Evas_Object *radio;
61    Evas_Object *content;
62    Efl_Ui_Radio_Group *radio_group;
63    char buf[PATH_MAX];
64    unsigned int i;
65 
66    radio_group = efl_new(EFL_UI_RADIO_GROUP_IMPL_CLASS, NULL);
67 
68    hbox = efl_add(EFL_UI_BOX_CLASS, box,
69                   efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL),
70                   efl_gfx_hint_weight_set(efl_added, 1, 1),
71                   efl_pack_end(box, efl_added));
72 
73    radio = efl_add(EFL_UI_RADIO_CLASS, hbox);
74    efl_gfx_hint_weight_set(radio, 0, 0);
75    efl_ui_radio_state_value_set(radio, 0);
76    efl_ui_radio_group_register(radio_group, radio);
77    efl_pack_end(hbox, radio);
78 
79    content = efl_add(EFL_UI_BOX_CLASS, hbox,
80                      efl_pack_end(hbox, efl_added));
81    evas_object_data_set(radio, "data", content);
82 
83    content = efl_add(EFL_UI_TEXTBOX_CLASS, content,
84                      efl_text_set(efl_added, "box"),
85                      efl_text_interactive_editable_set(efl_added, EINA_FALSE),
86                      efl_pack_end(content, efl_added));
87 
88    for (i = 0; i < MAX_NUM_OF_CONTENT; i++)
89      {
90         if (!content_class[i]) continue;
91 
92         hbox = efl_add(EFL_UI_BOX_CLASS, box,
93                        efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL),
94                        efl_pack_end(box, efl_added));
95 
96         radio = efl_add(EFL_UI_RADIO_CLASS, hbox);
97         efl_ui_radio_state_value_set(radio, i + 1);
98         efl_gfx_hint_weight_set(radio, 0, 0);
99         efl_ui_radio_group_register(radio_group, radio);
100         efl_pack_end(hbox, radio);
101 
102         content = efl_add(content_class[i], hbox,
103                           efl_pack_end(hbox, efl_added));
104 
105         if (efl_isa(content, efl_text_interface_get()))
106           efl_text_set(content, "text");
107 
108         if (efl_isa(content, EFL_UI_IMAGE_CLASS))
109           {
110              snprintf(buf, sizeof(buf), "%s/images/logo.png", elm_app_data_dir_get());
111              efl_file_simple_load(content, buf, NULL);
112           }
113 
114         evas_object_data_set(radio, "data", content);
115      }
116 
117    efl_ui_radio_group_selected_value_set(radio_group, 0);
118 
119    return radio_group;
120 }
121 
122 void
test_part_background(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)123 test_part_background(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
124 {
125    Evas_Object *win;
126    Evas_Object *scr;
127    Evas_Object *vbox, *hbox;
128    Efl_Ui_Radio_Group *radio_group;
129    Evas_Object *reset_btn, *color_btn, *scale_btn;
130 
131    content_class[0] = EFL_UI_CALENDAR_CLASS;
132    content_class[1] = EFL_UI_SLIDER_CLASS;
133    content_class[2] = EFL_UI_SLIDER_INTERVAL_CLASS;
134    content_class[3] = EFL_UI_PROGRESSBAR_CLASS;
135    content_class[4] = EFL_UI_CLOCK_CLASS;
136    content_class[5] = EFL_UI_BUTTON_CLASS;
137    content_class[6] = EFL_UI_CHECK_CLASS;
138    content_class[7] = EFL_UI_RADIO_CLASS;
139    content_class[8] = EFL_UI_TEXTBOX_CLASS;
140    content_class[9] = EFL_UI_FLIP_CLASS;
141    content_class[10] = EFL_UI_PANES_CLASS;
142    content_class[11] = EFL_UI_VIDEO_CLASS;
143    content_class[12] = EFL_UI_BG_CLASS;
144    content_class[13] = EFL_UI_IMAGE_CLASS;
145    content_class[14] = EFL_UI_IMAGE_ZOOMABLE_CLASS;
146    content_class[15] = EFL_UI_SPIN_CLASS;
147    content_class[16] = EFL_UI_SPIN_BUTTON_CLASS;
148 
149    win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
150                  efl_text_set(efl_added, "Widget Part Background"),
151                  efl_ui_win_autodel_set(efl_added, EINA_TRUE));
152 
153    vbox = efl_add(EFL_UI_BOX_CLASS, win,
154                   efl_gfx_hint_weight_set(efl_added, 1, 1),
155                   efl_content_set(win, efl_added));
156 
157    hbox = efl_add(EFL_UI_BOX_CLASS, vbox,
158                   efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL),
159                   efl_gfx_hint_weight_set(efl_added, 1.0, 0.0),
160                   efl_pack_end(vbox, efl_added));
161 
162    reset_btn = efl_add(EFL_UI_BUTTON_CLASS, hbox,
163                        efl_pack_end(hbox, efl_added),
164                        efl_text_set(efl_added, "reset"));
165    color_btn = efl_add(EFL_UI_BUTTON_CLASS, hbox,
166                        efl_pack_end(hbox, efl_added),
167                        efl_text_set(efl_added, "color"));
168    scale_btn = efl_add(EFL_UI_BUTTON_CLASS, hbox,
169                        efl_pack_end(hbox, efl_added),
170                        efl_text_set(efl_added, "scale_type"));
171 
172    scr = elm_scroller_add(vbox);
173    evas_object_show(scr);
174    evas_object_size_hint_weight_set(scr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
175    evas_object_size_hint_align_set(scr, EVAS_HINT_FILL, EVAS_HINT_FILL);
176    efl_pack_end(vbox, scr);
177 
178    vbox = efl_add(EFL_UI_BOX_CLASS, scr,
179                   efl_gfx_hint_weight_set(efl_added, 1, 1),
180                   efl_content_set(scr, efl_added));
181 
182    radio_group = _create_box_contents(vbox);
183 
184    efl_event_callback_add(reset_btn, EFL_INPUT_EVENT_CLICKED, _reset_cb, radio_group);
185    efl_event_callback_add(color_btn, EFL_INPUT_EVENT_CLICKED, _color_cb, radio_group);
186    efl_event_callback_add(scale_btn, EFL_INPUT_EVENT_CLICKED, _scale_type_cb, radio_group);
187 
188    efl_gfx_entity_size_set(win, EINA_SIZE2D(300, 200));
189 }
190