summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSungtaek Hong <sth253.hong@samsung.com>2017-12-05 10:41:20 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2017-12-06 17:35:21 +0900
commit94d4f913139423c0d81bcb643f9c91b21f8eb0c0 (patch)
treee8c05bb7cdb50359d9dcf36d7d889dbb0e01fa2b
parent645a5897f0638033c2b275c6a806e69c6f7ecde3 (diff)
efl_ui_popup_alert: refactor popup_alert_part
Summary: remove redundant logic for button part. Test Plan: Run elementary_test->Efl.Ui.Popup_alert Reviewers: jpeg, Jaehyun_Cho, woohyun Reviewed By: Jaehyun_Cho Subscribers: cedric, Blackmole, herb Differential Revision: https://phab.enlightenment.org/D5577
-rw-r--r--src/lib/elementary/efl_ui_popup_alert.c191
1 files changed, 72 insertions, 119 deletions
diff --git a/src/lib/elementary/efl_ui_popup_alert.c b/src/lib/elementary/efl_ui_popup_alert.c
index 4fb26326d8..e242a312e3 100644
--- a/src/lib/elementary/efl_ui_popup_alert.c
+++ b/src/lib/elementary/efl_ui_popup_alert.c
@@ -18,6 +18,11 @@ static const char PART_NAME_BUTTON_LAYOUT[EFL_UI_POPUP_ALERT_BUTTON_COUNT][15] =
18 "button_layout2", 18 "button_layout2",
19 "button_layout3"}; 19 "button_layout3"};
20 20
21static const char BUTTON_SWALLOW_NAME[EFL_UI_POPUP_ALERT_BUTTON_COUNT][20] =
22 {"elm.swallow.button1",
23 "elm.swallow.button2",
24 "elm.swallow.button3"};
25
21EOLIAN static void 26EOLIAN static void
22_efl_ui_popup_alert_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Popup_Alert_Data *pd EINA_UNUSED) 27_efl_ui_popup_alert_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Popup_Alert_Data *pd EINA_UNUSED)
23{ 28{
@@ -37,19 +42,19 @@ _efl_ui_popup_alert_text_set(Eo *obj, Efl_Ui_Popup_Alert_Data *pd, const char *p
37{ 42{
38 if (eina_streq(part, "title") || eina_streq(part, "elm.text.title")) 43 if (eina_streq(part, "title") || eina_streq(part, "elm.text.title"))
39 { 44 {
40 if (pd->title_text) 45 Eina_Bool changed = eina_stringshare_replace(&pd->title_text, label);
46 if (changed)
41 { 47 {
42 eina_stringshare_del(pd->title_text); 48 efl_text_set(efl_part(efl_super(obj, MY_CLASS), "title"), label);
43 pd->title_text = NULL; 49 if (label)
50 elm_layout_signal_emit(obj, "elm,title,show", "elm");
51 else
52 elm_layout_signal_emit(obj, "elm,title,hide", "elm");
53
54 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
55 edje_object_message_signal_process(wd->resize_obj);
56 elm_layout_sizing_eval(obj);
44 } 57 }
45
46 pd->title_text = eina_stringshare_add(label);
47 efl_text_set(efl_part(efl_super(obj, MY_CLASS), "elm.text.title"), label);
48 elm_layout_signal_emit(obj, "elm,title,show", "elm");
49
50 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
51 edje_object_message_signal_process(wd->resize_obj);
52 elm_layout_sizing_eval(obj);
53 } 58 }
54 else 59 else
55 efl_text_set(efl_part(efl_super(obj, MY_CLASS), part), label); 60 efl_text_set(efl_part(efl_super(obj, MY_CLASS), part), label);
@@ -72,8 +77,7 @@ _efl_ui_popup_alert_text_get(Eo *obj EINA_UNUSED, Efl_Ui_Popup_Alert_Data *pd, c
72} 77}
73 78
74static void 79static void
75_positive_button_clicked_cb(void *data, Eo *obj EINA_UNUSED, 80_positive_button_clicked_cb(void *data, const Efl_Event *ev EINA_UNUSED)
76 void *event_info EINA_UNUSED)
77{ 81{
78 Eo *popup_obj = data; 82 Eo *popup_obj = data;
79 83
@@ -84,8 +88,7 @@ _positive_button_clicked_cb(void *data, Eo *obj EINA_UNUSED,
84} 88}
85 89
86static void 90static void
87_negative_button_clicked_cb(void *data, Eo *obj EINA_UNUSED, 91_negative_button_clicked_cb(void *data, const Efl_Event *ev EINA_UNUSED)
88 void *event_info EINA_UNUSED)
89{ 92{
90 Eo *popup_obj = data; 93 Eo *popup_obj = data;
91 94
@@ -96,8 +99,7 @@ _negative_button_clicked_cb(void *data, Eo *obj EINA_UNUSED,
96} 99}
97 100
98static void 101static void
99_user_button_clicked_cb(void *data, Eo *obj EINA_UNUSED, 102_user_button_clicked_cb(void *data, const Efl_Event *ev EINA_UNUSED)
100 void *event_info EINA_UNUSED)
101{ 103{
102 Eo *popup_obj = data; 104 Eo *popup_obj = data;
103 105
@@ -110,117 +112,73 @@ _user_button_clicked_cb(void *data, Eo *obj EINA_UNUSED,
110EOLIAN static void 112EOLIAN static void
111_efl_ui_popup_alert_button_set(Eo *obj, Efl_Ui_Popup_Alert_Data *pd, Efl_Ui_Popup_Alert_Button type, const char *text) 113_efl_ui_popup_alert_button_set(Eo *obj, Efl_Ui_Popup_Alert_Data *pd, Efl_Ui_Popup_Alert_Button type, const char *text)
112{ 114{
113 if (pd->button[type]) 115 int i;
114 { 116 Eo *cur_content;
115 efl_del(pd->button[type]);
116 pd->button[type] = NULL;
117 }
118 pd->button[type] = efl_add(EFL_UI_BUTTON_CLASS, obj,
119 elm_widget_element_update(obj, efl_added, PART_NAME_BUTTON),
120 efl_text_set(efl_added, text));
121 117
122 switch (type) 118 if ((type < EFL_UI_POPUP_ALERT_BUTTON_POSITIVE) || (type > EFL_UI_POPUP_ALERT_BUTTON_USER))
123 { 119 {
124 case EFL_UI_POPUP_ALERT_BUTTON_POSITIVE: 120 ERR("Wrong type (%d) is passed!", type);
125 evas_object_smart_callback_add(pd->button[type], "clicked", 121 return;
126 _positive_button_clicked_cb,
127 obj);
128 break;
129 case EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE:
130 evas_object_smart_callback_add(pd->button[type], "clicked",
131 _negative_button_clicked_cb,
132 obj);
133 break;
134 case EFL_UI_POPUP_ALERT_BUTTON_USER:
135 evas_object_smart_callback_add(pd->button[type], "clicked",
136 _user_button_clicked_cb,
137 obj);
138 break;
139 default:
140 break;
141 } 122 }
142 123 if (!pd->button[type])
143 Eo *cur_content = efl_content_unset(efl_part(obj, "buttons"));
144 if (cur_content)
145 { 124 {
146 efl_content_unset(efl_part(cur_content, "elm.swallow.button1")); 125 pd->button[type] = efl_add(EFL_UI_BUTTON_CLASS, obj,
147 efl_content_unset(efl_part(cur_content, "elm.swallow.button2")); 126 elm_widget_element_update(obj, efl_added,
148 efl_content_unset(efl_part(cur_content, "elm.swallow.button3")); 127 PART_NAME_BUTTON));
149 efl_del(cur_content); 128 switch (type)
129 {
130 case EFL_UI_POPUP_ALERT_BUTTON_POSITIVE:
131 efl_event_callback_add(pd->button[type], EFL_UI_EVENT_CLICKED,
132 _positive_button_clicked_cb, obj);
133 break;
134 case EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE:
135 efl_event_callback_add(pd->button[type], EFL_UI_EVENT_CLICKED,
136 _negative_button_clicked_cb, obj);
137 break;
138 case EFL_UI_POPUP_ALERT_BUTTON_USER:
139 efl_event_callback_add(pd->button[type], EFL_UI_EVENT_CLICKED,
140 _user_button_clicked_cb, obj);
141 break;
142 default:
143 break;
144 }
150 } 145 }
146 efl_text_set(pd->button[type], text);
151 147
152 if (pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE] 148 cur_content = efl_content_get(efl_part(obj, "buttons"));
153 && pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE] 149 if (cur_content)
154 && pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER])
155 {
156 pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_3]
157 = efl_add(EFL_UI_LAYOUT_CLASS, obj,
158 elm_widget_element_update(obj, efl_added,
159 PART_NAME_BUTTON_LAYOUT[EFL_UI_POPUP_ALERT_BUTTON_3]));
160 efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_3], "elm.swallow.button1"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER]);
161 efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_3], "elm.swallow.button2"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE]);
162 efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_3], "elm.swallow.button3"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE]);
163 efl_content_set(efl_part(obj, "buttons"), pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_3]);
164 }
165 else if (pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE]
166 && pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE])
167 {
168 pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2]
169 = efl_add(EFL_UI_LAYOUT_CLASS, obj,
170 elm_widget_element_update(obj, efl_added,
171 PART_NAME_BUTTON_LAYOUT[EFL_UI_POPUP_ALERT_BUTTON_2]));
172 efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2], "elm.swallow.button1"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE]);
173 efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2], "elm.swallow.button2"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE]);
174 efl_content_set(efl_part(obj, "buttons"), pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2]);
175 }
176 else if (pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE]
177 && pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER])
178 { 150 {
179 pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2] 151 for (i = 0; i < EFL_UI_POPUP_ALERT_BUTTON_COUNT; i++)
180 = efl_add(EFL_UI_LAYOUT_CLASS, obj, 152 efl_content_unset(efl_part(cur_content, BUTTON_SWALLOW_NAME[i]));
181 elm_widget_element_update(obj, efl_added,
182 PART_NAME_BUTTON_LAYOUT[EFL_UI_POPUP_ALERT_BUTTON_2]));
183 efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2], "elm.swallow.button1"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER]);
184 efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2], "elm.swallow.button2"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE]);
185 efl_content_set(efl_part(obj, "buttons"), pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2]);
186 } 153 }
187 else if (pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE] 154 else
188 && pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER])
189 { 155 {
190 pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2] 156 cur_content = efl_add(EFL_UI_LAYOUT_CLASS, obj,
191 = efl_add(EFL_UI_LAYOUT_CLASS, obj, 157 efl_content_set(efl_part(obj, "buttons"), efl_added));
192 elm_widget_element_update(obj, efl_added,
193 PART_NAME_BUTTON_LAYOUT[EFL_UI_POPUP_ALERT_BUTTON_2]));
194 efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2], "elm.swallow.button1"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER]);
195 efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2], "elm.swallow.button2"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE]);
196 efl_content_set(efl_part(obj, "buttons"), pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2]);
197 } 158 }
198 else if (pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE]) 159
160 int btn_count = !!pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE] +
161 !!pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE] +
162 !!pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER];
163 elm_widget_element_update(obj, cur_content, PART_NAME_BUTTON_LAYOUT[btn_count - 1]);
164
165 i = 0;
166 if (pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER])
199 { 167 {
200 pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1] 168 efl_content_set(efl_part(cur_content, BUTTON_SWALLOW_NAME[i]),
201 = efl_add(EFL_UI_LAYOUT_CLASS, obj, 169 pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER]);
202 elm_widget_element_update(obj, efl_added, 170 i++;
203 PART_NAME_BUTTON_LAYOUT[EFL_UI_POPUP_ALERT_BUTTON_1]));
204 efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1], "elm.swallow.button1"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE]);
205 efl_content_set(efl_part(obj, "buttons"), pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1]);
206 } 171 }
207 else if (pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE]) 172 if (pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE])
208 { 173 {
209 pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1] 174 efl_content_set(efl_part(cur_content, BUTTON_SWALLOW_NAME[i]),
210 = efl_add(EFL_UI_LAYOUT_CLASS, obj, 175 pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE]);
211 elm_widget_element_update(obj, efl_added, 176 i++;
212 PART_NAME_BUTTON_LAYOUT[EFL_UI_POPUP_ALERT_BUTTON_1]));
213 efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1], "elm.swallow.button1"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE]);
214 efl_content_set(efl_part(obj, "buttons"), pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1]);
215 } 177 }
216 else if (pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER]) 178 if (pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE])
217 { 179 {
218 pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1] 180 efl_content_set(efl_part(cur_content, BUTTON_SWALLOW_NAME[i]),
219 = efl_add(EFL_UI_LAYOUT_CLASS, obj, 181 pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE]);
220 elm_widget_element_update(obj, efl_added,
221 PART_NAME_BUTTON_LAYOUT[EFL_UI_POPUP_ALERT_BUTTON_1]));
222 efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1], "elm.swallow.button1"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER]);
223 efl_content_set(efl_part(obj, "buttons"), pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1]);
224 } 182 }
225 183
226 elm_layout_signal_emit(obj, "elm,buttons,show", "elm"); 184 elm_layout_signal_emit(obj, "elm,buttons,show", "elm");
@@ -246,12 +204,7 @@ _efl_ui_popup_alert_efl_object_constructor(Eo *obj,
246EOLIAN static void 204EOLIAN static void
247_efl_ui_popup_alert_efl_object_destructor(Eo *obj, Efl_Ui_Popup_Alert_Data *pd) 205_efl_ui_popup_alert_efl_object_destructor(Eo *obj, Efl_Ui_Popup_Alert_Data *pd)
248{ 206{
249 if (pd->title_text) 207 ELM_SAFE_FREE(pd->title_text, eina_stringshare_del);
250 {
251 eina_stringshare_del(pd->title_text);
252 pd->title_text = NULL;
253 }
254
255 efl_destructor(efl_super(obj, MY_CLASS)); 208 efl_destructor(efl_super(obj, MY_CLASS));
256} 209}
257 210