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