RSA code sync
[apps/core/preloaded/settings.git] / setting-network / src / setting-network-main.c
1 /*
2  * setting
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
5  *
6  * Contact: MyoungJune Park <mj2004.park@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 #include <setting-network-main.h>
22
23 #define MOBILE_DATA_WITHOUT_WIFI_STR                    "IDS_ST_BODY_MOBILE_DATA_WILL_BE_USED_IF_YOU_DOWNLOAD_OR_UPLOAD_DATA_WITHOUT_WI_FI_CONNECTION"
24 #define UMTS_MODE_WORK_OUTSIDE_STR                                      "IDS_ST_BODY_UMTS_MODE_ONLY_WORKS_INSIDE_3G_COVERAGE_AREA"
25 #define BAND_OPERATE_OUTSIDE_USA_CANADA_STR             "IDS_ST_BODY_THIS_BAND_MAY_NOT_WORK_OUTSIDE_THE_USA_AND_CANADA"
26
27 static int setting_network_main_create(void *cb);
28 static int setting_network_main_destroy(void *cb);
29 static int setting_network_main_update(void *cb);
30 static int setting_network_main_cleanup(void *cb);
31
32 setting_view setting_view_network_main = {
33         .create = setting_network_main_create,
34         .destroy = setting_network_main_destroy,
35         .update = setting_network_main_update,
36         .cleanup = setting_network_main_cleanup,
37 };
38
39 static void setting_network_main_item_Gendial_mouse_up_cb(void *data,
40                                                           Evas_Object *obj,
41                                                           void *event_info);
42 static void setting_network_main_click_softkey_help_cb(void *data,
43                                                        Evas_Object *obj,
44                                                        void *event_info);
45 static void setting_network_main_click_softkey_back_cb(void *data,
46                                                        Evas_Object *obj,
47                                                        void *event_info);
48 static void setting_network_main_chk_btn_cb(void *data, Evas_Object *obj,
49                                             void *event_info);
50 static void setting_network_use_packet_resp_cb(void *data, Evas_Object *obj,
51                                                void *event_info);
52 static void __setting_network_data_roaming_resp_cb(void *data, Evas_Object *obj,
53                                              void *event_info);
54
55
56 /* ***************************************************
57  *
58  *basic func
59  *
60  ***************************************************/
61 void __network_sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
62 {
63         SETTING_TRACE_BEGIN;
64         /* error check */
65         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
66         ret_if(NULL == data);
67         SettingNetworkUG *ad = (SettingNetworkUG *) data;
68         Elm_Object_Item *subitem = (Elm_Object_Item *) event_info;
69         elm_genlist_item_selected_set(subitem, 0);
70         Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subitem);
71         SETTING_TRACE("data_subItem->chk_status:%d", data_subItem->chk_status);
72         SETTING_TRACE("elm_radio_value_get(ad->data_net_mode->rgd):%d", elm_radio_value_get(ad->data_net_mode->rgd));
73         if (data_subItem->chk_status == elm_radio_value_get(ad->data_net_mode->rgd))
74         {
75                 return;
76         }
77         elm_radio_value_set(ad->data_net_mode->rgd, data_subItem->chk_status);
78
79         ad->net_mode = data_subItem->chk_status;
80         int tapi_ret = tel_set_network_mode(ad->handle, data_subItem->chk_status, setting_tapi_set_band_cb, ad);
81         if (tapi_ret != TAPI_API_SUCCESS) {
82                 SETTING_TRACE_DEBUG
83                     ("%s*** [ERR] tel_set_network_mode. tapi_ret=%d ***%s",
84                      SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
85                 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(Invok_API_Failed_Desc), NULL, POPUP_INTERVAL, FALSE, FALSE);
86                 //rollback
87                 int err;
88                 setting_get_int_slp_key(ad->data_net_mode->int_slp_setting_binded,
89                                         &(ad->net_mode), &err);
90                 /** @todo check 'err' variable for exception handling */
91                 elm_radio_value_set(ad->data_net_mode->rgd, ad->net_mode);
92                 return;
93         }
94
95         //it will be deleted in callback set by tel_set_network_mode(that is setting_tapi_set_band_cb.)
96         ad->network_ug_pop = setting_create_popup_without_btn(ad, ad->win_get, NULL,
97                                          _("IDS_COM_POP_PROCESSING"), NULL,
98                                          0.0, TRUE, TRUE);
99 }
100
101
102 static void
103 __setting_network_main_exp_cb(void *data, Evas_Object *obj, void *event_info)
104 {
105         ret_if(NULL == data || NULL == event_info);
106         SETTING_TRACE_BEGIN;
107         SettingNetworkUG *ad = (SettingNetworkUG *) data;
108         Elm_Object_Item *parentItem = event_info;       /* parent item */
109         Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);      /* parent data */
110         Evas_Object *scroller = elm_object_item_widget_get(parentItem);
111
112         Evas_Object *rgd;
113         if (data_parentItem == ad->data_net_mode) {
114                 rgd = elm_radio_add(scroller);
115                 elm_radio_value_set(rgd, -1);
116
117                 setting_create_Gendial_exp_sub_field(scroller,
118                                                      &itc_1icon_1text_sub,
119                                                      __network_sub_list_sel_cb,
120                                                      ad, parentItem,
121                                                      SWALLOW_Type_1RADIO, rgd,
122                                                      TAPI_NETWORK_MODE_AUTO,
123                                                      Keystr_NetBrand_Auto, NULL);
124
125                 setting_create_Gendial_exp_sub_field(scroller,
126                                                      &itc_1icon_1text_sub,
127                                                      __network_sub_list_sel_cb,
128                                                      ad, parentItem,
129                                                      SWALLOW_Type_1RADIO, rgd,
130                                                      TAPI_NETWORK_MODE_GSM,
131                                                      Keystr_NetBrand_GSM, NULL);
132
133                 setting_create_Gendial_exp_sub_field(scroller,
134                                                      &itc_1icon_1text_sub,
135                                                      __network_sub_list_sel_cb,
136                                                      ad, parentItem,
137                                                      SWALLOW_Type_1RADIO, rgd,
138                                                      TAPI_NETWORK_MODE_WCDMA,
139                                                      Keystr_NetBrand_WCDMA, NULL);
140
141                 data_parentItem->rgd = rgd;
142                 setting_update_chk_status(rgd, data_parentItem->int_slp_setting_binded);
143
144         }
145 }
146
147 #define __switch_radio_state(cur_data, dst_state, dst_key) do { \
148         if (cur_data)\
149         {\
150                 old_status = cur_data->chk_status;\
151                 cur_data->chk_status = dst_state;\
152                 elm_radio_state_value_set(cur_data->eo_check, cur_data->chk_status);\
153                 if (sel_mode == old_status)\
154                 {\
155                         sel_item_data = cur_data;\
156                 }\
157                 \
158                 G_FREE(cur_data->keyStr);\
159                 cur_data->keyStr = g_strdup(dst_key);\
160                 elm_genlist_item_fields_update(cur_data->item, "*", ELM_GENLIST_ITEM_FIELD_TEXT);\
161         }\
162 } while (0);
163
164 static void __3g_change_cb(keynode_t *key, void *data)
165 {
166         SETTING_TRACE_BEGIN;
167         ret_if(NULL == data);
168         SettingNetworkUG *ad = data;
169         int status = vconf_keynode_get_bool(key);
170         char *vconf_name = vconf_keynode_get_name(key);
171         SETTING_TRACE("vconf_name:%s, status:%d", vconf_name, status);
172
173         if (!safeStrCmp(vconf_name, VCONFKEY_3G_ENABLE)) {
174                 if(ad->data_use_packet)
175                 {
176                         ad->data_use_packet->chk_status = status;
177                         elm_check_state_set(ad->data_use_packet->eo_check, ad->data_use_packet->chk_status);
178                 }
179         }
180 }
181 static void __data_roaming_change_cb(keynode_t *key, void *data)
182 {
183         SETTING_TRACE_BEGIN;
184         ret_if(NULL == data);
185         SettingNetworkUG *ad = data;
186         int status = vconf_keynode_get_bool(key);
187         char *vconf_name = vconf_keynode_get_name(key);
188         SETTING_TRACE("vconf_name:%s, status:%d", vconf_name, status);
189
190         if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL) && ad->data_roaming) {
191                 ad->data_roaming->chk_status = status;
192                 elm_check_state_set(ad->data_roaming->eo_check, ad->data_roaming->chk_status);
193                 if (status)
194                 {
195                         int value = 0;
196                         int err = 0;
197                         setting_get_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA, &value, &err);
198                         setting_retm_if(err != 0, "get vconf failed");
199                         if (!value) {
200                                 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
201                                                          SETTING_ON_OFF_BTN_ON, &err);
202                         }
203                 }
204         }
205 }
206
207 static int setting_network_main_create(void *cb)
208 {
209         SETTING_TRACE_BEGIN;
210         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
211
212         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
213         /*  ***BEGIN***  Fixed the problem of word twinkle  SAMSUNG 2010/7/21 add */
214         int value = 0;
215         int k = -1;
216         /*  ****END****  Fixed the problem of word twinkle  SAMSUNG 2010/7/21 add */
217
218         Evas_Object *scroller;
219
220         ad->ly_main =
221             setting_create_layout_navi_bar_genlist(ad->win_main_layout,
222                                                    ad->win_get,
223                                                    _("IDS_ST_BODY_NETWORK"),
224                                                    dgettext("sys_string",
225                                                             "IDS_COM_BODY_BACK"),
226                                                    NULL,//_("IDS_COM_BODY_HELP"),
227                                                    setting_network_main_click_softkey_back_cb,
228                                                    setting_network_main_click_softkey_help_cb,
229                                                    ad, &scroller,
230                                                    &ad->navi_bar);
231
232         setting_enable_expandable_genlist(scroller, ad,
233                                           __setting_network_main_exp_cb, NULL);
234
235         Elm_Object_Item *item = NULL;;
236
237         item =
238             elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
239                                     ELM_GENLIST_ITEM_NONE, NULL, NULL);
240         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
241
242         int value_use_packet;
243         int err_use_packet;
244         setting_get_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
245                                  &value_use_packet, &err_use_packet);
246         /** @todo check 'err_use_packet' variable for exception handling */
247         ad->data_use_packet =
248             setting_create_Gendial_field_def(scroller, &itc_1text_1icon,
249                                              setting_network_main_item_Gendial_mouse_up_cb,
250                                              ad, SWALLOW_Type_1TOGGLE, NULL,
251                                              NULL, value_use_packet,
252                                              KeyStr_UsePacketData, NULL,
253                                              setting_network_main_chk_btn_cb);
254         if (ad->data_use_packet) {
255                 ad->data_use_packet->userdata = ad;
256         } else {
257                 SETTING_TRACE_ERROR("ad->data_use_packet is NULL");
258         }
259
260         setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL,
261                                          ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
262                                          NULL, NULL, 0, Data_packet_Desc, NULL,
263                                          NULL);
264         elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
265                                          ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
266
267         /* data roaming */
268         int value_data_roaming = 0;
269         int err_data_roaming = 0;
270         setting_get_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
271                                  &value_data_roaming, &err_data_roaming);
272         if (err_data_roaming != 0) {
273                 SETTING_TRACE_ERROR("get vconf failed");
274         }
275         ad->data_roaming = setting_create_Gendial_field_def(scroller, &itc_1text_1icon,
276                                                             setting_network_main_item_Gendial_mouse_up_cb,
277                                                             ad, SWALLOW_Type_1TOGGLE, NULL,
278                                                             NULL, value_data_roaming,
279                                                             KeyStr_DataRoaming, NULL,
280                                                             setting_network_main_chk_btn_cb);
281         if (ad->data_roaming) {
282                 ad->data_roaming->userdata = ad;
283         } else {
284                 SETTING_TRACE_ERROR("ad->data_roaming is NULL");
285         }
286
287         setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL,
288                                          ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
289                                          NULL, NULL, 0, SETTING_NETWORK_DATA_ROMING_DESC, NULL,
290                                          NULL);
291         elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
292                                          ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
293
294
295         /* (void)setting_create_Gendial_field_titleItem(scroller, &(ad->itc_group_item), speciliztion, NULL); */
296
297         /*  Don't need to check flight mode,if flight mode is on, thw whole Network function will be disable*/
298         /*  ***BEGIN***  Fixed the problem of word twinkle  SAMSUNG 2010/7/21 add */
299         ad->sel_net = TAPI_NETWORK_SELECTIONMODE_AUTOMATIC;
300         ad->sel_act = TAPI_NETWORK_SYSTEM_NO_SRV;
301         vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &ad->sel_net);
302         vconf_get_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, &ad->sel_act);
303
304         FREE(ad->sel_network);
305         //ad->sel_network = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
306         ad->sel_network = get_pa_select_network();
307         SETTING_TRACE("pa_sel_net_name:%s", ad->sel_network);
308         if (isEmptyStr(ad->sel_network)) {
309             ad->sel_network = strndup(Keystr_UNKNOWN_NETWORK, strlen(Keystr_UNKNOWN_NETWORK)+1);
310         }
311         SETTING_TRACE("pa_net_name:%s", ad->sel_network);
312         SETTING_TRACE("old act:%d", ad->sel_act);
313         SETTING_TRACE("old network mode:%d", ad->sel_net);
314
315         char sel_network_desc[MAX_COMMON_BUFFER_LEN] = { 0, };
316         if (TAPI_NETWORK_SELECTIONMODE_MANUAL == value) {
317                 snprintf(sel_network_desc, MAX_COMMON_BUFFER_LEN,
318                          "%s, %s (%s)", _("IDS_COM_BODY_MANUAL"), _(ad->sel_network),
319                          setting_network_get_act_str(ad->sel_act));
320         }
321         else{
322                 snprintf(sel_network_desc, MAX_COMMON_BUFFER_LEN,
323                          "%s, %s", _("IDS_COM_BODY_AUTOMATIC"), _(ad->sel_network));
324         }
325
326         ad->data_sel_net = setting_create_Gendial_field_def(scroller,
327                                      &itc_2text_3,
328                                      setting_network_main_item_Gendial_mouse_up_cb,
329                                      ad, SWALLOW_Type_INVALID,
330                                      NULL, NULL, 0,
331                                      "IDS_ST_BODY_SELECT_NETWORK",
332                                      sel_network_desc, NULL);
333         if (ad->data_sel_net) {
334                 ad->data_sel_net->userdata = ad;
335         } else {
336                 SETTING_TRACE_ERROR("ad->data_sel_net is NULL");
337         }
338         /*  ***BEGIN***  Fixed the problem of word twinkle  SAMSUNG 2010/7/21 add */
339         /* hide NETWORK MODE in Emulator*/
340         char *sub_des = NULL;
341         value = TAPI_NETWORK_MODE_AUTO;
342         k = vconf_get_int(VCONFKEY_SETAPPL_NETWORK_MODE_INT, &value);
343         if (-1 != k) {
344                 SETTING_TRACE("VCONFKEY_SETAPPL_NETWORK_MODE_INT value:%d", value);
345                 switch (value) {
346                 case TAPI_NETWORK_MODE_AUTO:
347                 case TAPI_NETWORK_MODE_LTE|TAPI_NETWORK_MODE_GSM|TAPI_NETWORK_MODE_WCDMA:
348                 {
349                         sub_des = _(Keystr_NetBrand_Auto);
350                         break;
351                 }
352
353                 case TAPI_NETWORK_MODE_GSM:
354                         sub_des = _(Keystr_NetBrand_GSM);
355                         break;
356                 case TAPI_NETWORK_MODE_WCDMA:
357                         sub_des = _(Keystr_NetBrand_WCDMA);
358                         break;
359                 case TAPI_NETWORK_MODE_LTE|TAPI_NETWORK_MODE_WCDMA:
360                         sub_des = _(Keystr_NetBrand_LTE_WCDMA);
361                         break;
362                 case TAPI_NETWORK_MODE_GSM|TAPI_NETWORK_MODE_WCDMA:
363                         sub_des = _(Keystr_NetBrand_Auto_WCDMA_GSM);
364                         break;
365                 default:
366                         break;
367                 }
368         }
369
370         ad->data_net_mode =
371             setting_create_Gendial_exp_parent_field(scroller,
372                                                     &itc_2text_3_parent,
373                                                     NULL, NULL,
374                                                     SWALLOW_Type_INVALID,
375                                                     "IDS_ST_BODY_NETWORK_MODE",
376                                                     sub_des);
377         if (ad->data_net_mode) {
378                 ad->data_net_mode->int_slp_setting_binded =
379                         INT_SLP_SETTING_NETWORK_MODE;
380                 ad->data_net_mode->userdata = ad;
381         } else {
382                 SETTING_TRACE_ERROR("ad->data_back is NULL");
383         }
384
385         setting_create_Gendial_field_def(scroller, &itc_1text,
386                                          setting_network_main_item_Gendial_mouse_up_cb,
387                                          ad, SWALLOW_Type_INVALID, NULL, NULL,
388                                          0, CONNECTION_DSC,
389                                          NULL, NULL);
390
391         item = elm_genlist_item_append(scroller, &itc_bottom_seperator, NULL, NULL,
392                                     ELM_GENLIST_ITEM_NONE, NULL, NULL);
393         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
394
395         vconf_notify_key_changed(VCONFKEY_3G_ENABLE, __3g_change_cb, ad);
396         vconf_notify_key_changed(VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL, __data_roaming_change_cb, ad);
397
398         setting_view_network_main.is_create = 1;
399         setting_view_update(&setting_view_network_main, ad);
400         return SETTING_RETURN_SUCCESS;
401 }
402
403 static int setting_network_main_destroy(void *cb)
404 {
405         /* error check */
406         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
407
408         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
409         vconf_ignore_key_changed(VCONFKEY_3G_ENABLE, __3g_change_cb);
410         vconf_ignore_key_changed(VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL, __data_roaming_change_cb);
411
412         if (ad->ly_main != NULL) {
413                 evas_object_del(ad->ly_main);
414         }
415         if(ad->network_ug_pop)
416         {
417                 evas_object_del(ad->network_ug_pop);
418                 ad->network_ug_pop = NULL;
419         }
420         ad->data_sel_net = NULL;//reset NULL after genlis destoryed with ly_main.
421
422         setting_view_network_main.is_create = 0;
423         return SETTING_RETURN_SUCCESS;
424 }
425
426 static int setting_network_main_update(void *cb)
427 {
428         SETTING_TRACE_BEGIN;
429         /* error check */
430         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
431
432         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
433
434         if (ad->ly_main != NULL) {
435
436                 evas_object_show(ad->ly_main);
437         }
438         SETTING_TRACE_END;
439
440         return SETTING_RETURN_SUCCESS;
441 }
442
443 static int setting_network_main_cleanup(void *cb)
444 {
445         /* error check */
446         /* retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER); */
447
448         /* SettingNetworkUG *ad = (SettingNetworkUG *)cb; */
449
450         /* all the view in view stack shared the ad->ly_main, it cannot be hided!!! */
451         /* if(ad->ly_main != NULL) */
452         /* { */
453         /* evas_object_hide(ad->ly_main); */
454         /* } */
455
456         return SETTING_RETURN_SUCCESS;
457 }
458
459 /* ***************************************************
460  *
461  *general func
462  *
463  ***************************************************/
464
465 /* ***************************************************
466  *
467  *call back func
468  *
469  ***************************************************/
470
471 static void
472 setting_network_main_click_softkey_help_cb(void *data, Evas_Object *obj,
473                                            void *event_info)
474 {
475         SETTING_TRACE_BEGIN;
476         /* error check */
477         retm_if(data == NULL, "Data parameter is NULL");
478
479         SettingNetworkUG *ad = (SettingNetworkUG *) data;
480         setting_view_change(&setting_view_network_main,
481                             &setting_view_network_main_help, ad);
482 }
483
484 static void
485 setting_network_main_click_softkey_back_cb(void *data, Evas_Object *obj,
486                                            void *event_info)
487 {
488         SETTING_TRACE_BEGIN;
489         /* error check */
490         retm_if(data == NULL, "Data parameter is NULL");
491
492         SettingNetworkUG *ad = (SettingNetworkUG *) data;
493         /* Send destroy request */
494         ug_destroy_me(ad->ug);
495 }
496
497 static void
498 setting_network_main_item_Gendial_mouse_up_cb(void *data, Evas_Object *obj,
499                                               void *event_info)
500 {
501         SETTING_TRACE_BEGIN;
502         /* error check */
503         setting_retm_if(data == NULL, "Data parameter is NULL");
504         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
505         elm_genlist_item_selected_set(item, 0);
506         Setting_GenGroupItem_Data *list_item =
507             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
508
509         SettingNetworkUG *ad = (SettingNetworkUG *) data;
510
511         SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
512         int ret;
513
514         if (!safeStrCmp("IDS_ST_BODY_SELECT_NETWORK", list_item->keyStr)) {
515                 ret =
516                     setting_view_change(&setting_view_network_main,
517                                         &setting_view_network_select_network,
518                                         ad);
519         }
520         else if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
521                 int old_status = elm_check_state_get(list_item->eo_check);
522                 /* new status */
523                 list_item->chk_status = !old_status;
524                 elm_check_state_set(list_item->eo_check, list_item->chk_status);
525                 if (!list_item->chk_status) {
526                         ad->popup =
527                             setting_create_popup_with_btn(ad, ad->win_get,
528                                                  NULL, _(SETTING_NETWORK_USE_PACKET_DATA_OFF_DESC),
529                                                  setting_network_use_packet_resp_cb,
530                                                  0, 2, _("IDS_COM_SK_YES"),_("IDS_COM_SK_NO"));
531                 } else {
532                         ad->popup =
533                             setting_create_popup_with_btn(ad, ad->win_get,
534                                                  NULL, _(SETTING_NETWORK_USE_PACKET_DATA_ON_DESC),
535                                                  setting_network_use_packet_resp_cb,
536                                                  0, 1, _("IDS_COM_SK_OK"));
537                 }
538
539         } else if (!safeStrCmp(KeyStr_DataRoaming, list_item->keyStr)) {
540                 int old_status = elm_check_state_get(list_item->eo_check);
541                 /* new status */
542                 list_item->chk_status = !old_status;
543                 elm_check_state_set(list_item->eo_check, list_item->chk_status);
544
545                 char *notify_str = NULL;
546                 if (!list_item->chk_status) {
547                         notify_str = SETTING_NETWORK_DATA_ROMING_OFF_DESC;
548                         ad->popup = setting_create_popup_with_btn(ad, ad->win_get,
549                                                           NULL, notify_str,
550                                                           __setting_network_data_roaming_resp_cb, 0,
551                                                           1, _("IDS_COM_SK_OK"));
552                 } else {
553                         int err = 0;
554                         setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
555                                                  SETTING_ON_OFF_BTN_ON, &err);
556                 }
557         } else if(!safeStrCmp(CONNECTION_DSC, list_item->keyStr)) {
558                 ret = setting_view_change(&setting_view_network_main,
559                                         &setting_view_network_con, ad);
560         }
561 }
562
563 static void
564 setting_network_main_chk_btn_cb(void *data, Evas_Object *obj, void *event_info)
565 {
566         SETTING_TRACE_BEGIN;
567         /* error check */
568         retm_if(data == NULL, "Data parameter is NULL");
569         SettingNetworkUG *ad = NULL;
570         Setting_GenGroupItem_Data *list_item =
571             (Setting_GenGroupItem_Data *) data;
572         ad = list_item->userdata;
573         list_item->chk_status = elm_check_state_get(obj);       /*  for genlist update status */
574
575         if (obj == ad->data_use_packet->eo_check) {
576                 if (!list_item->chk_status) {
577                         ad->popup =
578                             setting_create_popup_with_btn(ad, ad->win_get,
579                                                  NULL, _(SETTING_NETWORK_USE_PACKET_DATA_OFF_DESC),
580                                                  setting_network_use_packet_resp_cb,
581                                                  0, 2, _("IDS_COM_SK_YES"),_("IDS_COM_SK_NO"));
582                 } else {
583                         ad->popup =
584                             setting_create_popup_with_btn(ad, ad->win_get,
585                                                  NULL, _(SETTING_NETWORK_USE_PACKET_DATA_ON_DESC),
586                                                  setting_network_use_packet_resp_cb,
587                                                  0, 1, _("IDS_COM_SK_OK"));
588                 }
589         }else if (obj == ad->data_roaming->eo_check) {
590                 char *notify_str = NULL;
591                 if (!list_item->chk_status) {
592                         notify_str = SETTING_NETWORK_DATA_ROMING_OFF_DESC;
593                         ad->popup = setting_create_popup_with_btn(ad, ad->win_get,
594                                                           NULL, notify_str,
595                                                           __setting_network_data_roaming_resp_cb, 0,
596                                                           1, _("IDS_COM_SK_OK"));
597                 } else {
598                         int err = 0;
599                         setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
600                                                  SETTING_ON_OFF_BTN_ON, &err);
601                 }
602         }
603 }
604
605 static void
606 setting_network_use_packet_resp_cb(void *data, Evas_Object *obj,
607                                    void *event_info)
608 {
609         SETTING_TRACE_BEGIN;
610         retm_if(data == NULL, "Data parameter is NULL");
611
612         SettingNetworkUG *ad = (SettingNetworkUG *) data;
613         int err = 0;            /* error check   */
614         int response_type = btn_type(obj);
615
616         int value = 0;
617         setting_get_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA, &value, &err);
618         setting_retm_if(err != 0, "get vconf failed");
619         SETTING_TRACE("value = %d", value);
620         if (POPUP_RESPONSE_OK == response_type) {
621                 if (value == 0) {
622                         setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
623                                                  SETTING_ON_OFF_BTN_ON, &err);
624                         setting_retm_if(err != 0, "set vconf failed");
625
626                         elm_check_state_set(ad->data_use_packet->eo_check, 1);
627                         ad->data_use_packet->chk_status = 1;
628
629                         /* if called by other apps, destroy ug */
630                         if (!safeStrCmp(ad->view_type_string, "DATA_ROAMING")) {
631                                 if (ad->popup) {
632                                         evas_object_del(ad->popup);
633                                         ad->popup = NULL;
634                                 }
635                                 ug_destroy_me(ad->ug);
636                                 return;
637                         }
638                 } else {
639                         setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
640                                                  SETTING_ON_OFF_BTN_OFF, &err);
641                         setting_retm_if(err != 0, "set vconf failed");
642
643                         elm_check_state_set(ad->data_use_packet->eo_check, 0);
644                         ad->data_use_packet->chk_status = 0;
645
646                         /* should set data_roming as same as status of use_packet_data */
647                         int data_roaming_value = 0;
648                         setting_get_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING, &data_roaming_value, &err);
649                         setting_retm_if(err != 0, "get vconf failed");
650                         if (data_roaming_value) {
651                                 setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
652                                                          SETTING_ON_OFF_BTN_OFF, &err);
653                                 setting_retm_if(err != 0, "set vconf failed");
654
655                                 elm_check_state_set(ad->data_roaming->eo_check, 0);
656                                 ad->data_roaming->chk_status = 0;
657                         }
658                 }
659         } else if (POPUP_RESPONSE_CANCEL == response_type) {
660                 /* rollback */
661                 if (value == 1) {
662                         setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
663                                                  SETTING_ON_OFF_BTN_ON, &err);
664                         setting_retm_if(err != 0, "set vconf failed");
665                         elm_check_state_set(ad->data_use_packet->eo_check, 1);
666                         ad->data_use_packet->chk_status = 1;
667                 }
668         }
669         if (ad->popup)
670         {
671                 evas_object_del(ad->popup);
672                 ad->popup = NULL;
673         }
674
675 }
676
677 static void __setting_network_data_roaming_resp_cb(void *data, Evas_Object *obj,
678                                              void *event_info)
679 {
680         SETTING_TRACE_BEGIN;
681         retm_if(data == NULL, "Data parameter is NULL");
682
683         SettingNetworkUG *ad = (SettingNetworkUG *) data;
684         int response_type = btn_type(obj);
685         SETTING_TRACE("elm_object_parent_widget_get(obj):%p", elm_object_parent_widget_get(obj));
686         SETTING_TRACE("obj:%p", obj);
687         if (POPUP_RESPONSE_OK == response_type) {
688                 int value = 0;
689                 int err = 0;
690                 setting_get_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING, &value, &err);
691
692                 if (value == 0) {
693                         setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
694                                                  SETTING_ON_OFF_BTN_ON, &err);
695                         setting_retm_if(err != 0, "set vconf failed");
696
697                         elm_check_state_set(ad->data_roaming->eo_check, 1);
698                         ad->data_roaming->chk_status = 1;
699
700                         /* if called by other apps, destroy ug */
701                         if (!safeStrCmp(ad->view_type_string, "DATA_ROAMING")) {
702                                 if (ad->popup)
703                                 {
704                                         evas_object_del(ad->popup);
705                                         ad->popup = NULL;
706                                 }
707                                 ug_destroy_me(ad->ug);
708                                 return;
709                         }
710                 } else {
711                         setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
712                                                  SETTING_ON_OFF_BTN_OFF, &err);
713                         setting_retm_if(err != 0, "set vconf failed");
714
715                         elm_check_state_set(ad->data_roaming->eo_check, 0);
716                         ad->data_roaming->chk_status = 0;
717                 }
718         }
719
720         if (ad->popup)
721         {
722                 evas_object_del(ad->popup);
723                 ad->popup = NULL;
724         }
725 }
726