Remove build warnings
[apps/native/ug-mobile-ap.git] / src / mh_popup.c
1 /*
2 * ug-mobile-ap
3 *
4 * Copyright 2012  Samsung Electronics Co., Ltd
5
6 * Licensed under the Flora License, Version 1.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9
10 * http://www.tizenopensource.org/license
11
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *
18 */
19
20 #include <efl_extension.h>
21 #include <app_control_internal.h>
22
23 #include "mh_common_utility.h"
24 #include "mobile_hotspot.h"
25 #include "mh_popup.h"
26 #include "mh_string.h"
27
28 static mh_popup_type_e popup_type = MH_POPUP_NONE;
29 static Evas_Object *popup_content = NULL;
30 static char *popup_string = NULL;
31
32 static void __launch_network_app(void)
33 {
34         int ret = APP_CONTROL_ERROR_NONE;
35         app_control_h app_control;
36
37         app_control_create(&app_control);
38         if(ret != APP_CONTROL_ERROR_NONE) {
39                 ERR("app_control_create failed");
40                 return;
41         }
42         app_control_set_operation(app_control, APP_CONTROL_OPERATION_DEFAULT);
43         app_control_set_launch_mode(app_control, APP_CONTROL_LAUNCH_MODE_GROUP);
44         app_control_set_app_id(app_control, "setting-network-efl");
45
46         ret = app_control_send_launch_request(app_control, NULL, NULL);
47         if(ret == APP_CONTROL_ERROR_NONE) {
48                 DBG("Launch network ug successful");
49         } else {
50                 ERR("Fail to launch network ug");
51         }
52
53         app_control_destroy(app_control);
54 }
55
56 static void __handle_popup_resp(void *data, bool response)
57 {
58         __MOBILE_AP_FUNC_ENTER__;
59
60         if (data == NULL) {
61                 ERR("The param is NULL\n");
62                 return;
63         }
64
65         mh_appdata_t *ad = (mh_appdata_t *)data;
66         int ret = 0;
67         Eina_Bool state = 0;
68
69         if (ad->popup_checkbox) {
70                 state = elm_check_state_get(ad->popup_checkbox);
71                 evas_object_del(ad->popup_checkbox);
72                 ad->popup_checkbox = NULL;
73                 DBG("Checkbox status is = %d\n", state);
74         }
75         if (ad->popup) {
76                 evas_object_del(ad->popup);
77                 ad->popup = NULL;
78         }
79
80         if (response == true) {
81                 switch (popup_type) {
82                 case MH_POPUP_WIFI_ON_CHECKBOX:
83                         if(state) {
84                                 _set_checkbox_status(TETHERING_TYPE_WIFI, 1);
85                         }
86                         ad->is_wifi_teth_enabling = false;
87                         ret = tethering_enable(ad->handle, TETHERING_TYPE_WIFI);
88                         if (ret != TETHERING_ERROR_NONE) {
89                                 ERR("wifi tethering on is failed : %d\n", ret);
90                                 _update_wifi_item(ad, MH_STATE_NONE);
91                         }
92                         _wifi_tethering_checkbox_popup_status_set(false);
93                         _send_signal_qp(QP_SIGNAL_PROGRESS_ON);
94                         break;
95
96                 case MH_POPUP_BT_ON_CHECKBOX:
97                         if(state) {
98                                 _set_checkbox_status(TETHERING_TYPE_BT, 1);
99                         }
100                         ad->is_bt_teth_enabling = false;
101                         ret = tethering_enable(ad->handle, TETHERING_TYPE_BT);
102                         if (ret != TETHERING_ERROR_NONE) {
103                                 ERR("Error enable bt tethering : %d\n", ret);
104                                 _update_bt_item(ad, MH_STATE_NONE);
105                         }
106                         break;
107
108                 case MH_POPUP_USB_ON_CHECKBOX:
109                         if(state) {
110                                 _set_checkbox_status(TETHERING_TYPE_USB, 1);
111                         }
112                         if (_get_vconf_usb_state() != VCONFKEY_SYSMAN_USB_AVAILABLE) {
113                                 _update_tethering_item(ad, MH_STATE_NONE);
114                                 break;
115                         }
116                         ad->is_usb_teth_enabling = false;
117                         ret = tethering_enable(ad->handle, TETHERING_TYPE_USB);
118                         if (ret != TETHERING_ERROR_NONE) {
119                                 ERR("Error enable usb tethering : %d\n", ret);
120                                 _update_usb_item(ad, MH_STATE_NONE);
121                         }
122                         break;
123
124                 case MH_POPUP_WIFI_AP_OFF:
125                         ret = tethering_disable(ad->handle, TETHERING_TYPE_RESERVED);
126                         if (ret != TETHERING_ERROR_NONE) {
127                                 ERR("MobileAP off is failed : %d\n", ret);
128                         }
129                         break;
130
131                 case MH_POPUP_WIFI_OFF:
132                         ret = tethering_disable(ad->handle, TETHERING_TYPE_WIFI);
133                         if (ret != TETHERING_ERROR_NONE) {
134                                 ERR("wifi tethering off is failed : %d\n", ret);
135                                 _update_wifi_item(ad, MH_STATE_NONE);
136                         }
137                         _send_signal_qp(QP_SIGNAL_PROGRESS_OFF);
138                         break;
139
140                 case MH_POPUP_MOBILE_DATA_OFF:
141                         __launch_network_app();
142                         _update_tethering_enabling_item(ad, ad->type, MH_STATE_NONE);
143                         break;
144
145                 default:
146                         ERR("Unknown popup_type : %d\n", popup_type);
147                         break;
148                 }
149         } else {
150                 switch (popup_type) {
151                 case MH_POPUP_WIFI_ON_CHECKBOX:
152                         _update_tethering_enabling_item(ad, TETHERING_TYPE_WIFI, MH_STATE_NONE);
153                         _send_signal_qp(QP_SIGNAL_PROGRESS_RESET);
154                         _wifi_tethering_checkbox_popup_status_set(false);
155                         break;
156
157                 case MH_POPUP_BT_ON_CHECKBOX:
158                         _update_tethering_enabling_item(ad, TETHERING_TYPE_BT, MH_STATE_NONE);
159                         break;
160
161                 case MH_POPUP_USB_ON_CHECKBOX:
162                         _update_tethering_enabling_item(ad,TETHERING_TYPE_USB, MH_STATE_NONE);
163                         break;
164
165                 case MH_POPUP_WIFI_AP_OFF:
166                         if (ad->setup.genlist)
167                                 elm_naviframe_item_pop(ad->naviframe);
168                         elm_naviframe_item_pop(ad->naviframe);
169                         break;
170
171                 case MH_POPUP_WIFI_OFF:
172                         _update_tethering_enabling_item(ad, TETHERING_TYPE_WIFI, MH_STATE_NONE);
173                         _send_signal_qp(QP_SIGNAL_PROGRESS_RESET);
174                         break;
175
176                 case MH_POPUP_MOBILE_DATA_OFF:
177                         _update_tethering_enabling_item(ad, ad->type, MH_STATE_NONE);
178                         break;
179                 default:
180                         ERR("Unknown popup_type : %d\n", popup_type);
181                         break;
182                 }
183         }
184
185         __MOBILE_AP_FUNC_EXIT__;
186 }
187
188 void _teth_on(mh_appdata_t *ad)
189 {
190         __handle_popup_resp(ad, true);
191 }
192
193 static void __popup_yes_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
194 {
195         if (data == NULL || obj == NULL) {
196                 ERR("The param is NULL\n");
197                 return;
198         }
199
200         __handle_popup_resp(data, true);
201 }
202
203 static void __popup_no_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
204 {
205         if (data == NULL || obj == NULL) {
206                 ERR("The param is NULL\n");
207                 return;
208         }
209
210         __handle_popup_resp(data, false);
211 }
212
213 static void __popup_no_btn_mouse_event_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
214 {
215         if (data == NULL || obj == NULL) {
216                 ERR("The param is NULL\n");
217                 return;
218         }
219
220         Evas_Event_Mouse_Up *ev = event_info;
221
222         if (ev->button == 3) {
223                 __handle_popup_resp(data, false);
224         }
225 }
226
227 static void __popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
228 {
229         if (obj == NULL) {
230                 ERR("The param is NULL\n");
231                 return;
232         }
233
234         elm_popup_dismiss(obj);
235 }
236
237 static void __popup_hide_finished_cb(void *data, Evas_Object *obj, void *event_info)
238 {
239         if (data == NULL) {
240                 ERR("The param is NULL\n");
241                 return;
242         }
243
244         __handle_popup_resp(data, false);
245 }
246
247 void _prepare_popup_with_content(int type, Evas_Object *obj)
248 {
249         __MOBILE_AP_FUNC_ENTER__;
250
251         if (obj == NULL) {
252                 ERR("param is NULL\n");
253                 return;
254         }
255
256         popup_type = type;
257
258         if (popup_content)
259                 evas_object_del(popup_content);
260         popup_content = obj;
261
262         if (popup_string) {
263                 free(popup_string);
264                 popup_string = NULL;
265         }
266
267         __MOBILE_AP_FUNC_EXIT__;
268 }
269
270 void _prepare_popup(int type, const char *str)
271 {
272         __MOBILE_AP_FUNC_ENTER__;
273
274         if (str == NULL) {
275                 ERR("param is NULL\n");
276                 return;
277         }
278         popup_type = type;
279
280         popup_content = NULL;
281
282         if (popup_string)
283                 free(popup_string);
284
285         popup_string = strndup(str, MH_LABEL_LENGTH_MAX);
286         if (popup_string == NULL)
287                 ERR("strndup is failed\n");
288
289         __MOBILE_AP_FUNC_EXIT__;
290 }
291
292 void _prepare_popup_type(int type)
293 {
294         popup_type = type;
295 }
296
297 static void __language_changed_cb(void *data, Evas_Object *obj, void *event_info)
298 {
299         __MOBILE_AP_FUNC_ENTER__;
300
301         mh_appdata_t *ad = (mh_appdata_t *)data;
302         Evas_Object *label = NULL;
303         bool wifi_state = false;
304         char *fmt = NULL;
305         char str[MH_LABEL_LENGTH_MAX];
306
307         if (ad->type < TETHERING_TYPE_USB || ad->type > TETHERING_TYPE_BT ) {
308                 ERR("Invalid Tethering type\n");
309                 return;
310         }
311
312         switch(ad->type) {
313         case TETHERING_TYPE_WIFI:
314                 wifi_is_activated(&wifi_state);
315                 _set_vconf_prev_wifi_state(wifi_state);
316                 if (wifi_state == true || _is_wifi_direct_on() == true) {
317                         fmt = STR_TETH_ON_DESC_1;
318                 } else {
319                         fmt = STR_TETH_ON_DESC_2;
320                 }
321                 snprintf(str, MH_LABEL_LENGTH_MAX, fmt, TETHERING_WIFI_MAX_CONNECTED_STA);
322                 break;
323
324         case TETHERING_TYPE_BT:
325                 snprintf(str, MH_LABEL_LENGTH_MAX, STR_TETH_ON_DESC_2, TETHERING_BT_MAX_CONNECTED_STA);
326                 break;
327
328         case TETHERING_TYPE_USB:
329                 snprintf(str, MH_LABEL_LENGTH_MAX, STR_TETH_ON_DESC_3);
330                 break;
331         default:
332                 break;
333         }
334
335         label = elm_label_add(ad->main.check_popup_ly);
336         elm_object_style_set(label, "popup/default");
337         elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
338         elm_object_text_set(label, str);
339         evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
340         evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
341         evas_object_show(label);
342         elm_object_part_content_set(ad->main.check_popup_ly, "elm.swallow.content", label);
343
344         __MOBILE_AP_FUNC_EXIT__;
345 }
346
347 static void __popup_with_checkbox(mh_appdata_t *ad)
348 {
349         __MOBILE_AP_FUNC_ENTER__;
350
351         Evas_Object *popup = NULL;
352         Evas_Object *yes_button = NULL;
353         Evas_Object *cancel_button = NULL;
354         Evas_Object *layout = NULL;
355         Evas_Object *label = NULL;
356         Evas_Object *check = NULL;
357
358         popup = elm_popup_add(ad->win);
359         elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
360         evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
361         ad->popup = popup;
362         switch (ad->type) {
363         case TETHERING_TYPE_WIFI:
364                 elm_object_domain_translatable_part_text_set(popup, "title,text", PACKAGE,
365                                 "IDS_MOBILEAP_MBODY_WI_FI_TETHERING");
366                 break;
367         case TETHERING_TYPE_BT:
368                 elm_object_domain_translatable_part_text_set(popup, "title,text", PACKAGE,
369                                 "IDS_MOBILEAP_BODY_BLUETOOTH_TETHERING");
370                 break;
371         case TETHERING_TYPE_USB:
372                 elm_object_domain_translatable_part_text_set(popup, "title,text", PACKAGE,
373                                 "IDS_MOBILEAP_MBODY_USB_TETHERING");
374                 break;
375         default:
376                 break;
377         }
378
379         /* layout */
380         layout = elm_layout_add(popup);
381         elm_layout_file_set(layout, FILE_PATH_OF_EDC, "popup_checkview_layout");
382         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
383         evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, 1.0);
384         ad->main.check_popup_ly = layout;
385
386         /* check */
387         check = elm_check_add(popup);
388         elm_object_style_set(check, "popup");
389         elm_object_domain_translatable_text_set(check, PACKAGE, STR_NO_SHOW_AGAIN);
390         evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
391         evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
392         elm_object_part_content_set(layout, "elm.swallow.end", check);
393         ad->popup_checkbox = check;
394
395         /* label */
396         label = elm_label_add(layout);
397         elm_object_style_set(label, "popup/default");
398         elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
399         elm_object_text_set(label, popup_string);
400         evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
401         evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
402         evas_object_show(label);
403         elm_object_part_content_set(layout, "elm.swallow.content", label);
404
405         cancel_button = _create_button(popup,  "IDS_BR_SK_CANCEL",
406                                 "button1", __popup_no_btn_clicked_cb, ad);
407         yes_button = _create_button(popup, "IDS_ST_BUTTON_ENABLE_M_USE",
408                                 "button2", __popup_yes_btn_clicked_cb, ad);
409
410         evas_object_smart_callback_add(popup, "language,changed", __language_changed_cb, ad);
411
412         eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK,
413                         __popup_no_btn_clicked_cb, (void *)ad);
414
415         evas_object_event_callback_add(popup, EVAS_CALLBACK_MOUSE_UP,
416                         __popup_no_btn_mouse_event_cb, (void *)ad);
417         evas_object_smart_callback_add(popup, "block,clicked",
418                         __popup_block_clicked_cb, NULL);
419         evas_object_smart_callback_add(popup, "dismissed",
420                         __popup_hide_finished_cb, ad);
421
422
423         if (check && yes_button) {
424                 elm_object_focus_next_object_set(check, yes_button, ELM_FOCUS_PREVIOUS);
425                 elm_object_focus_next_object_set(yes_button, check, ELM_FOCUS_NEXT);
426                 if (cancel_button) {
427                         elm_object_focus_next_object_set(cancel_button, check, ELM_FOCUS_PREVIOUS);
428                         elm_object_focus_next_object_set(check ,cancel_button, ELM_FOCUS_NEXT);
429                 }
430         }
431
432         elm_object_content_set(popup, layout);
433         evas_object_show(popup);
434         ad->popup = popup;
435
436         __MOBILE_AP_FUNC_EXIT__;
437 }
438
439 Eina_Bool _create_popup(mh_appdata_t *ad)
440 {
441         __MOBILE_AP_FUNC_ENTER__;
442
443         Evas_Object *popup = NULL;
444         Evas_Object *cancel_button = NULL;
445         Evas_Object *yes_button = NULL;
446
447         if (ad == NULL) {
448                 ERR("The param is NULL\n");
449                 if (popup_string) {
450                         free(popup_string);
451                         popup_string = NULL;
452                 }
453                 popup_content = NULL;
454
455                 return EINA_FALSE;
456         }
457
458         if (ad->popup != NULL) {
459                 evas_object_del(ad->popup);
460                 ad->popup = NULL;
461         }
462         ad->popup_checkbox = NULL;
463         DBG("popup type : %d", popup_type);
464
465         switch (popup_type) {
466         case MH_POPUP_WIFI_ON_CHECKBOX:
467         case MH_POPUP_BT_ON_CHECKBOX:
468         case MH_POPUP_USB_ON_CHECKBOX:
469                 __popup_with_checkbox(ad);
470                 break;
471
472         case MH_POPUP_WIFI_OFF:
473                 popup = elm_popup_add(ad->win);
474                 ad->popup = popup;
475
476                 elm_object_domain_translatable_part_text_set(popup, "title,text", PACKAGE,
477                                 "IDS_MOBILEAP_MBODY_WI_FI_TETHERING");
478
479                 evas_object_size_hint_weight_set(popup,
480                                 EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
481
482                 if (popup_content == NULL)
483                         elm_object_domain_translatable_text_set(popup, PACKAGE, popup_string);
484                 else
485                         elm_object_content_set(popup, popup_content);
486
487                 cancel_button =_create_button(popup, STR_CANCEL,
488                                 "button1", __popup_no_btn_clicked_cb, ad);
489                 yes_button = _create_button(popup, STR_TURN_OFF,
490                                 "button2", __popup_yes_btn_clicked_cb, ad);
491
492                 eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK,
493                                 __popup_no_btn_clicked_cb, (void *)ad);
494                 evas_object_event_callback_add(popup, EVAS_CALLBACK_MOUSE_UP,
495                                 __popup_no_btn_mouse_event_cb, (void *)ad);
496                 evas_object_smart_callback_add(popup, "block,clicked",
497                                 __popup_block_clicked_cb, NULL);
498                 evas_object_smart_callback_add(popup, "dismissed",
499                                 __popup_hide_finished_cb, ad);
500
501                 evas_object_show(popup);
502                 break;
503
504         case MH_POPUP_TETH_ENABLING_FAILED:
505         case MH_POPUP_NO_SIM:
506         case MH_POPUP_FLIGHT_MODE:
507         case MH_POPUP_NETWORK_OUT_OF_RANGE:
508                 popup = elm_popup_add(ad->win);
509                 ad->popup = popup;
510                 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
511                                 EVAS_HINT_EXPAND);
512
513                 if (popup_content == NULL)
514                         elm_object_domain_translatable_text_set(popup, PACKAGE, popup_string);
515                 else
516                         elm_object_content_set(popup, popup_content);
517                 elm_object_domain_translatable_part_text_set(popup, "title,text", PACKAGE,
518                                 STR_NO_NET_CONN);
519                 cancel_button = _create_button(popup,  STR_CANCEL,
520                                 "button1", __popup_no_btn_clicked_cb, ad);
521
522                 eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK,
523                                 __popup_no_btn_clicked_cb, (void *)ad);
524                 evas_object_event_callback_add(popup, EVAS_CALLBACK_MOUSE_UP,
525                                 __popup_no_btn_mouse_event_cb, (void *)ad);
526                 evas_object_smart_callback_add(popup, "block,clicked",
527                                 __popup_block_clicked_cb, NULL);
528                 evas_object_smart_callback_add(popup, "dismissed",
529                                 __popup_hide_finished_cb, ad);
530
531                 evas_object_show(popup);
532                 break;
533
534         case MH_POPUP_MOBILE_DATA_OFF:
535                 popup = elm_popup_add(ad->win);
536                 ad->popup = popup;
537                 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
538                                 EVAS_HINT_EXPAND);
539
540                 if (popup_content == NULL)
541                         elm_object_domain_translatable_text_set(popup, PACKAGE, popup_string);
542                 else
543                         elm_object_content_set(popup, popup_content);
544                 elm_object_domain_translatable_part_text_set(popup, "title,text", PACKAGE,
545                                 STR_NO_NET_CONN);
546                 cancel_button = _create_button(popup,  STR_CANCEL,
547                                 "button1", __popup_no_btn_clicked_cb, ad);
548                 yes_button = _create_button(popup, STR_SETTING,
549                                 "button2", __popup_yes_btn_clicked_cb, ad);
550
551                 eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK,
552                                 __popup_no_btn_clicked_cb, (void *)ad);
553                 evas_object_event_callback_add(popup, EVAS_CALLBACK_MOUSE_UP,
554                                 __popup_no_btn_mouse_event_cb, (void *)ad);
555                 evas_object_smart_callback_add(popup, "block,clicked",
556                                 __popup_block_clicked_cb, NULL);
557                 evas_object_smart_callback_add(popup, "dismissed",
558                                 __popup_hide_finished_cb, ad);
559
560                 evas_object_show(popup);
561                 break;
562
563         case MH_POPUP_WIFI_AP_OFF:
564                 popup = elm_popup_add(ad->win);
565                 ad->popup = popup;
566                 evas_object_size_hint_weight_set(popup,
567                                 EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
568
569                 elm_object_domain_translatable_part_text_set(popup, "title,text", PACKAGE,
570                                 STR_TETH);
571                 if (popup_content == NULL)
572                         elm_object_domain_translatable_text_set(popup, PACKAGE, popup_string);
573                 else
574                         elm_object_content_set(popup, popup_content);
575
576                 cancel_button = _create_button(popup,  STR_CANCEL,
577                                 "button1", __popup_no_btn_clicked_cb, ad);
578                 yes_button = _create_button(popup, STR_ENABLE,
579                                 "button2", __popup_yes_btn_clicked_cb, ad);
580
581                 eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK,
582                                 __popup_no_btn_clicked_cb, (void *)ad);
583                 evas_object_event_callback_add(popup, EVAS_CALLBACK_MOUSE_UP,
584                                 __popup_no_btn_mouse_event_cb, (void *)ad);
585
586                 evas_object_show(popup);
587                 break;
588
589         default:
590                 ERR("Unknown popup_type : %d\n", popup_type);
591                 break;
592         }
593
594         if (cancel_button && yes_button) {
595                 elm_object_focus_next_object_set(cancel_button, yes_button, ELM_FOCUS_PREVIOUS);
596                 elm_object_focus_next_object_set(yes_button, cancel_button, ELM_FOCUS_NEXT);
597         }
598
599         if (popup_string) {
600                 free(popup_string);
601                 popup_string = NULL;
602         }
603         popup_content = NULL;
604
605         __MOBILE_AP_FUNC_EXIT__;
606
607         return EINA_TRUE;
608 }
609
610 void _destroy_popup(mh_appdata_t *ad)
611 {
612         __MOBILE_AP_FUNC_ENTER__;
613
614         if (ad == NULL) {
615                 ERR("ad is null\n");
616                 return;
617         }
618
619         if (ad->popup) {
620                 evas_object_del(ad->popup);
621                 ad->popup = NULL;
622         }
623         ad->popup_checkbox = NULL;
624
625         if (popup_string) {
626                 free(popup_string);
627                 popup_string = NULL;
628         }
629         popup_content = NULL;
630         popup_type = MH_POPUP_NONE;
631
632         __MOBILE_AP_FUNC_EXIT__;
633
634         return;
635 }