Fix 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                 fmt = STR_TETH_ON_DESC_2;
326                 snprintf(str, MH_LABEL_LENGTH_MAX, fmt, TETHERING_BT_MAX_CONNECTED_STA);
327                 break;
328
329         case TETHERING_TYPE_USB:
330                 snprintf(str, MH_LABEL_LENGTH_MAX, STR_TETH_ON_DESC_3);
331                 break;
332         default:
333                 break;
334         }
335
336         label = elm_label_add(ad->main.check_popup_ly);
337         elm_object_style_set(label, "popup/default");
338         elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
339         elm_object_text_set(label, str);
340         evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
341         evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
342         evas_object_show(label);
343         elm_object_part_content_set(ad->main.check_popup_ly, "elm.swallow.content", label);
344
345         __MOBILE_AP_FUNC_EXIT__;
346 }
347
348 static void __popup_with_checkbox(mh_appdata_t *ad)
349 {
350         __MOBILE_AP_FUNC_ENTER__;
351
352         Evas_Object *popup = NULL;
353         Evas_Object *yes_button = NULL;
354         Evas_Object *cancel_button = NULL;
355         Evas_Object *layout = NULL;
356         Evas_Object *label = NULL;
357         Evas_Object *check = NULL;
358
359         popup = elm_popup_add(ad->win);
360         elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
361         evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
362         ad->popup = popup;
363         switch (ad->type) {
364         case TETHERING_TYPE_WIFI:
365                 elm_object_domain_translatable_part_text_set(popup, "title,text", PACKAGE,
366                                 "IDS_MOBILEAP_MBODY_WI_FI_TETHERING");
367                 break;
368         case TETHERING_TYPE_BT:
369                 elm_object_domain_translatable_part_text_set(popup, "title,text", PACKAGE,
370                                 "IDS_MOBILEAP_BODY_BLUETOOTH_TETHERING");
371                 break;
372         case TETHERING_TYPE_USB:
373                 elm_object_domain_translatable_part_text_set(popup, "title,text", PACKAGE,
374                                 "IDS_MOBILEAP_MBODY_USB_TETHERING");
375                 break;
376         default:
377                 break;
378         }
379
380         /* layout */
381         layout = elm_layout_add(popup);
382         elm_layout_file_set(layout, FILE_PATH_OF_EDC, "popup_checkview_layout");
383         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
384         evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, 1.0);
385         ad->main.check_popup_ly = layout;
386
387         /* check */
388         check = elm_check_add(popup);
389         elm_object_style_set(check, "popup");
390         elm_object_domain_translatable_text_set(check, PACKAGE, STR_NO_SHOW_AGAIN);
391         evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
392         evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
393         elm_object_part_content_set(layout, "elm.swallow.end", check);
394         ad->popup_checkbox = check;
395
396         /* label */
397         label = elm_label_add(layout);
398         elm_object_style_set(label, "popup/default");
399         elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
400         elm_object_text_set(label, popup_string);
401         evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
402         evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
403         evas_object_show(label);
404         elm_object_part_content_set(layout, "elm.swallow.content", label);
405
406         cancel_button = _create_button(popup,  "IDS_BR_SK_CANCEL",
407                                 "button1", __popup_no_btn_clicked_cb, ad);
408         yes_button = _create_button(popup, "IDS_ST_BUTTON_ENABLE_M_USE",
409                                 "button2", __popup_yes_btn_clicked_cb, ad);
410
411         evas_object_smart_callback_add(popup, "language,changed", __language_changed_cb, ad);
412
413         eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK,
414                         __popup_no_btn_clicked_cb, (void *)ad);
415
416         evas_object_event_callback_add(popup, EVAS_CALLBACK_MOUSE_UP,
417                         __popup_no_btn_mouse_event_cb, (void *)ad);
418         evas_object_smart_callback_add(popup, "block,clicked",
419                         __popup_block_clicked_cb, NULL);
420         evas_object_smart_callback_add(popup, "dismissed",
421                         __popup_hide_finished_cb, ad);
422
423
424         if (check && yes_button) {
425                 elm_object_focus_next_object_set(check, yes_button, ELM_FOCUS_PREVIOUS);
426                 elm_object_focus_next_object_set(yes_button, check, ELM_FOCUS_NEXT);
427                 if (cancel_button) {
428                         elm_object_focus_next_object_set(cancel_button, check, ELM_FOCUS_PREVIOUS);
429                         elm_object_focus_next_object_set(check ,cancel_button, ELM_FOCUS_NEXT);
430                 }
431         }
432
433         elm_object_content_set(popup, layout);
434         evas_object_show(popup);
435         ad->popup = popup;
436
437         __MOBILE_AP_FUNC_EXIT__;
438 }
439
440 Eina_Bool _create_popup(mh_appdata_t *ad)
441 {
442         __MOBILE_AP_FUNC_ENTER__;
443
444         Evas_Object *popup = NULL;
445         Evas_Object *cancel_button = NULL;
446         Evas_Object *yes_button = NULL;
447
448         if (ad == NULL) {
449                 ERR("The param is NULL\n");
450                 if (popup_string) {
451                         free(popup_string);
452                         popup_string = NULL;
453                 }
454                 popup_content = NULL;
455
456                 return EINA_FALSE;
457         }
458
459         if (ad->popup != NULL) {
460                 evas_object_del(ad->popup);
461                 ad->popup = NULL;
462         }
463         ad->popup_checkbox = NULL;
464         DBG("popup type : %d", popup_type);
465
466         switch (popup_type) {
467         case MH_POPUP_WIFI_ON_CHECKBOX:
468         case MH_POPUP_BT_ON_CHECKBOX:
469         case MH_POPUP_USB_ON_CHECKBOX:
470                 __popup_with_checkbox(ad);
471                 break;
472
473         case MH_POPUP_WIFI_OFF:
474                 popup = elm_popup_add(ad->win);
475                 ad->popup = popup;
476
477                 elm_object_domain_translatable_part_text_set(popup, "title,text", PACKAGE,
478                                 "IDS_MOBILEAP_MBODY_WI_FI_TETHERING");
479
480                 evas_object_size_hint_weight_set(popup,
481                                 EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
482
483                 if (popup_content == NULL)
484                         elm_object_domain_translatable_text_set(popup, PACKAGE, popup_string);
485                 else
486                         elm_object_content_set(popup, popup_content);
487
488                 cancel_button =_create_button(popup, STR_CANCEL,
489                                 "button1", __popup_no_btn_clicked_cb, ad);
490                 yes_button = _create_button(popup, STR_TURN_OFF,
491                                 "button2", __popup_yes_btn_clicked_cb, ad);
492
493                 eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK,
494                                 __popup_no_btn_clicked_cb, (void *)ad);
495                 evas_object_event_callback_add(popup, EVAS_CALLBACK_MOUSE_UP,
496                                 __popup_no_btn_mouse_event_cb, (void *)ad);
497                 evas_object_smart_callback_add(popup, "block,clicked",
498                                 __popup_block_clicked_cb, NULL);
499                 evas_object_smart_callback_add(popup, "dismissed",
500                                 __popup_hide_finished_cb, ad);
501
502                 evas_object_show(popup);
503                 break;
504
505         case MH_POPUP_TETH_ENABLING_FAILED:
506         case MH_POPUP_NO_SIM:
507         case MH_POPUP_FLIGHT_MODE:
508         case MH_POPUP_NETWORK_OUT_OF_RANGE:
509                 popup = elm_popup_add(ad->win);
510                 ad->popup = popup;
511                 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
512                                 EVAS_HINT_EXPAND);
513
514                 if (popup_content == NULL)
515                         elm_object_domain_translatable_text_set(popup, PACKAGE, popup_string);
516                 else
517                         elm_object_content_set(popup, popup_content);
518                 elm_object_domain_translatable_part_text_set(popup, "title,text", PACKAGE,
519                                 STR_NO_NET_CONN);
520                 cancel_button = _create_button(popup,  STR_CANCEL,
521                                 "button1", __popup_no_btn_clicked_cb, ad);
522
523                 eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK,
524                                 __popup_no_btn_clicked_cb, (void *)ad);
525                 evas_object_event_callback_add(popup, EVAS_CALLBACK_MOUSE_UP,
526                                 __popup_no_btn_mouse_event_cb, (void *)ad);
527                 evas_object_smart_callback_add(popup, "block,clicked",
528                                 __popup_block_clicked_cb, NULL);
529                 evas_object_smart_callback_add(popup, "dismissed",
530                                 __popup_hide_finished_cb, ad);
531
532                 evas_object_show(popup);
533                 break;
534
535         case MH_POPUP_MOBILE_DATA_OFF:
536                 popup = elm_popup_add(ad->win);
537                 ad->popup = popup;
538                 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
539                                 EVAS_HINT_EXPAND);
540
541                 if (popup_content == NULL)
542                         elm_object_domain_translatable_text_set(popup, PACKAGE, popup_string);
543                 else
544                         elm_object_content_set(popup, popup_content);
545                 elm_object_domain_translatable_part_text_set(popup, "title,text", PACKAGE,
546                                 STR_NO_NET_CONN);
547                 cancel_button = _create_button(popup,  STR_CANCEL,
548                                 "button1", __popup_no_btn_clicked_cb, ad);
549                 yes_button = _create_button(popup, STR_SETTING,
550                                 "button2", __popup_yes_btn_clicked_cb, ad);
551
552                 eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK,
553                                 __popup_no_btn_clicked_cb, (void *)ad);
554                 evas_object_event_callback_add(popup, EVAS_CALLBACK_MOUSE_UP,
555                                 __popup_no_btn_mouse_event_cb, (void *)ad);
556                 evas_object_smart_callback_add(popup, "block,clicked",
557                                 __popup_block_clicked_cb, NULL);
558                 evas_object_smart_callback_add(popup, "dismissed",
559                                 __popup_hide_finished_cb, ad);
560
561                 evas_object_show(popup);
562                 break;
563
564         case MH_POPUP_WIFI_AP_OFF:
565                 popup = elm_popup_add(ad->win);
566                 ad->popup = popup;
567                 evas_object_size_hint_weight_set(popup,
568                                 EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
569
570                 elm_object_domain_translatable_part_text_set(popup, "title,text", PACKAGE,
571                                 STR_TETH);
572                 if (popup_content == NULL)
573                         elm_object_domain_translatable_text_set(popup, PACKAGE, popup_string);
574                 else
575                         elm_object_content_set(popup, popup_content);
576
577                 cancel_button = _create_button(popup,  STR_CANCEL,
578                                 "button1", __popup_no_btn_clicked_cb, ad);
579                 yes_button = _create_button(popup, STR_ENABLE,
580                                 "button2", __popup_yes_btn_clicked_cb, ad);
581
582                 eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK,
583                                 __popup_no_btn_clicked_cb, (void *)ad);
584                 evas_object_event_callback_add(popup, EVAS_CALLBACK_MOUSE_UP,
585                                 __popup_no_btn_mouse_event_cb, (void *)ad);
586
587                 evas_object_show(popup);
588                 break;
589
590         default:
591                 ERR("Unknown popup_type : %d\n", popup_type);
592                 break;
593         }
594
595         if (cancel_button && yes_button) {
596                 elm_object_focus_next_object_set(cancel_button, yes_button, ELM_FOCUS_PREVIOUS);
597                 elm_object_focus_next_object_set(yes_button, cancel_button, ELM_FOCUS_NEXT);
598         }
599
600         if (popup_string) {
601                 free(popup_string);
602                 popup_string = NULL;
603         }
604         popup_content = NULL;
605
606         __MOBILE_AP_FUNC_EXIT__;
607
608         return EINA_TRUE;
609 }
610
611 void _destroy_popup(mh_appdata_t *ad)
612 {
613         __MOBILE_AP_FUNC_ENTER__;
614
615         if (ad == NULL) {
616                 ERR("ad is null\n");
617                 return;
618         }
619
620         if (ad->popup) {
621                 evas_object_del(ad->popup);
622                 ad->popup = NULL;
623         }
624         ad->popup_checkbox = NULL;
625
626         if (popup_string) {
627                 free(popup_string);
628                 popup_string = NULL;
629         }
630         popup_content = NULL;
631         popup_type = MH_POPUP_NONE;
632
633         __MOBILE_AP_FUNC_EXIT__;
634
635         return;
636 }