apply FSL(Flora Software License)
[apps/core/preloaded/settings.git] / setting-network / src / setting-network-main.c
1 /*
2   * Copyright 2012  Samsung Electronics Co., Ltd
3   *
4   * Licensed under the Flora License, Version 1.0 (the "License");
5   * you may not use this file except in compliance with the License.
6   * You may obtain a copy of the License at
7   *
8   *     http://www.tizenopensource.org/license
9   *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16
17
18 #include <setting-network-main.h>
19
20 static int setting_network_main_create(void *cb);
21 static int setting_network_main_destroy(void *cb);
22 static int setting_network_main_update(void *cb);
23 static int setting_network_main_cleanup(void *cb);
24
25 setting_view setting_view_network_main = {
26         .create = setting_network_main_create,
27         .destroy = setting_network_main_destroy,
28         .update = setting_network_main_update,
29         .cleanup = setting_network_main_cleanup,
30 };
31
32 static void setting_network_main_item_Gendial_mouse_up_cb(void *data,
33                                                           Evas_Object *obj,
34                                                           void *event_info);
35 static void setting_network_main_click_softkey_help_cb(void *data,
36                                                        Evas_Object *obj,
37                                                        void *event_info);
38 static void setting_network_main_click_softkey_back_cb(void *data,
39                                                        Evas_Object *obj,
40                                                        void *event_info);
41 static void setting_network_main_chk_btn_cb(void *data, Evas_Object *obj,
42                                             void *event_info);
43 static void setting_network_use_packet_resp_cb(void *data, Evas_Object *obj,
44                                                void *event_info);
45
46 /* ***************************************************
47  *
48  *basic func
49  *
50  ***************************************************/
51 static void __ask_create_gsm_resp_cb(void *data, Evas_Object *obj,
52                                            void *event_info)
53 {
54         SETTING_TRACE_BEGIN;
55         
56         SettingNetworkUG *ad = (SettingNetworkUG *) data;
57         ret_if(NULL == data);
58         int response_type = btn_type(obj);
59         bool rollback_flag = FALSE;
60         if (POPUP_RESPONSE_OK == response_type) {
61                 int tapi_ret = TAPI_API_INVALID_INPUT;
62                 int request_id;
63                 
64                 //async: TAPI_EVENT_NETWORK_SETNWBAND_CNF
65                 tapi_ret =
66                     tel_set_network_band(TAPI_NETWORK_BAND_MODE_ONLY,
67                                          TAPI_NETWORK_BAND_TYPE_GSM_850_1900,
68                                          &request_id);
69                 if (tapi_ret != TAPI_API_SUCCESS) {
70                         SETTING_TRACE_DEBUG
71                             ("%s*** [ERR] tel_set_network_band. tapi_ret=%d ***%s",
72                              SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
73                         rollback_flag = TRUE;
74
75                 }
76
77         } else if (POPUP_RESPONSE_CANCEL == response_type) {
78                 rollback_flag = TRUE;
79         }
80         if (rollback_flag)
81         {
82                 //rollback
83                 int err;
84                 int value = TAPI_NETWORK_BAND_TYPE_ANY;
85                 setting_get_int_slp_key(ad->data_net_mode->int_slp_setting_binded,
86                                         &(value), &err);
87                 /** @todo check 'err' variable for exception handling */
88                 elm_radio_value_set(ad->data_net_mode->rgd, value);
89         }
90         evas_object_del(ad->pop_gsm);
91         ad->pop_gsm = NULL;
92
93 }
94 void __network_sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
95 {
96         SETTING_TRACE_BEGIN;
97         /* error check */
98         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
99         ret_if(NULL == data);
100         SettingNetworkUG *ad = (SettingNetworkUG *) data;
101         Elm_Object_Item *subitem = (Elm_Object_Item *) event_info;
102         elm_genlist_item_selected_set(subitem, 0);
103         Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subitem);
104         if (data_subItem->chk_status == elm_radio_value_get(ad->data_net_mode->rgd))
105         {
106                 return;
107         }
108         elm_radio_value_set(ad->data_net_mode->rgd, data_subItem->chk_status);
109
110         int tapi_ret = TAPI_API_INVALID_INPUT;
111         int request_id = 0;
112         TelNetworkBand_t band = TAPI_NETWORK_BAND_TYPE_ANY;
113
114         switch (data_subItem->chk_status) {
115
116         case TAPI_NETWORK_BAND_TYPE_ANY:
117                 band = TAPI_NETWORK_BAND_TYPE_ANY;
118                 break;
119
120         case TAPI_NETWORK_BAND_TYPE_GSM_900_1800:
121                 band = TAPI_NETWORK_BAND_TYPE_GSM_900_1800;
122                 break;
123
124         case TAPI_NETWORK_BAND_TYPE_GSM_850_1900:
125                 ad->pop_gsm = setting_create_popup_with_btn(ad,
126                                                   ad->win_get,
127                                                   _("This band may not operate<br>outside the USA or Canada"),
128                                                   NULL,
129                                                   __ask_create_gsm_resp_cb,
130                                                   0, 2, _("IDS_COM_SK_YES"),_("IDS_COM_SK_NO"));
131                 return;
132
133         case TAPI_NETWORK_BAND_TYPE_WCDMA:
134                 setting_network_popup_create(ad,
135                                              _("UTMS mode works inside <br>3G coverage area only"),
136                                              FALSE);
137                 band = TAPI_NETWORK_BAND_TYPE_WCDMA;
138                 break;
139         default:
140                 SETTING_TRACE("Unknown Tel-Net band type");
141                 break;
142         }
143
144         //async: TAPI_EVENT_NETWORK_SETNWBAND_CNF
145         tapi_ret =
146             tel_set_network_band(TAPI_NETWORK_BAND_MODE_ONLY, band,
147                                  &request_id);
148         if (tapi_ret != TAPI_API_SUCCESS) {
149                 SETTING_TRACE_DEBUG
150                     ("%s*** [ERR] tel_set_network_band. tapi_ret=%d ***%s",
151                      SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
152
153                 //rollback
154                 int err;
155                 int value = TAPI_NETWORK_BAND_TYPE_ANY;
156                 setting_get_int_slp_key(ad->data_net_mode->int_slp_setting_binded,
157                                         &(value), &err);
158                 /** @todo check 'err' variable for exception handling */
159                 elm_radio_value_set(ad->data_net_mode->rgd, value);
160                 return;
161         }
162 }
163
164
165 static void
166 __setting_network_main_exp_cb(void *data, Evas_Object *obj, void *event_info)
167 {
168         ret_if(NULL == data || NULL == event_info);
169         SETTING_TRACE_BEGIN;
170         SettingNetworkUG *ad = (SettingNetworkUG *) data;
171         Elm_Object_Item *parentItem = event_info;       /* parent item */
172         Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);      /* parent data */
173         Evas_Object *scroller = elm_object_item_widget_get(parentItem);
174
175         Evas_Object *rgd;
176         if (data_parentItem == ad->data_net_mode) {
177                 rgd = elm_radio_add(scroller);
178                 elm_radio_value_set(rgd, -1);
179
180                 setting_create_Gendial_exp_sub_field(scroller,
181                                                      &(ad->itc_1icon_1text_sub),
182                                                      __network_sub_list_sel_cb, 
183                                                      ad, parentItem,
184                                                      SWALLOW_Type_1RADIO, rgd,
185                                                      TAPI_NETWORK_BAND_TYPE_ANY,
186                                                      "IDS_COM_BODY_AUTOMATIC", NULL);
187
188                 setting_create_Gendial_exp_sub_field(scroller,
189                                                      &(ad->itc_1icon_1text_sub),
190                                                      __network_sub_list_sel_cb, 
191                                                      ad, parentItem,
192                                                      SWALLOW_Type_1RADIO, rgd,
193                                                      TAPI_NETWORK_BAND_TYPE_GSM_900_1800,
194                                                      STR_SETTING_GSM_900_1800, NULL);
195
196                 setting_create_Gendial_exp_sub_field(scroller,
197                                                      &(ad->itc_1icon_1text_sub),
198                                                      __network_sub_list_sel_cb, 
199                                                      ad, parentItem,
200                                                      SWALLOW_Type_1RADIO, rgd,
201                                                      TAPI_NETWORK_BAND_TYPE_GSM_850_1900,
202                                                      STR_SETTING_GSM_850_1900, NULL);
203
204                 setting_create_Gendial_exp_sub_field(scroller,
205                                                      &(ad->itc_1icon_1text_sub),
206                                                      __network_sub_list_sel_cb, 
207                                                      ad, parentItem,
208                                                      SWALLOW_Type_1RADIO, rgd,
209                                                      TAPI_NETWORK_BAND_TYPE_WCDMA,
210                                                      STR_SETTING_UMTS, NULL);
211
212                 data_parentItem->rgd = rgd;
213                 setting_update_chk_status(rgd, data_parentItem->int_slp_setting_binded);
214
215         }
216 }
217
218
219 #define Data_packet_Desc _("IDS_ST_BODY_MOBILE_DATA_WILL_BE_USED_IF_YOU_DOWNLOAD_OR_UPLOAD_DATA_WITHOUT_WI_FI_CONNECTION")
220 static int setting_network_main_create(void *cb)
221 {
222         SETTING_TRACE_BEGIN;
223         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
224
225         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
226
227         int value = 0;
228         int k = -1;
229
230         Evas_Object *scroller;
231
232         int tapi_ret;
233         int request_id = 0;
234
235         ad->ly_main =
236             setting_create_layout_navi_bar_genlist(ad->win_main_layout,
237                                                    ad->win_get,
238                                                    _("IDS_ST_BODY_NETWORK"),
239                                                    dgettext("sys_string",
240                                                             "IDS_COM_BODY_BACK"),
241                                                    dgettext("sys_string",
242                                                             "IDS_COM_BODY_HELP"),
243                                                    setting_network_main_click_softkey_back_cb,
244                                                    setting_network_main_click_softkey_help_cb,
245                                                    ad, &scroller,
246                                                    &ad->navi_bar);
247         
248         setting_enable_expandable_genlist(scroller, ad,
249                                           __setting_network_main_exp_cb, NULL);
250         Elm_Object_Item *item = NULL;;
251
252         item =
253             elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
254                                     ELM_GENLIST_ITEM_NONE, NULL, NULL);
255         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
256
257         int value_use_packet;
258         int err_use_packet;
259         setting_get_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
260                                  &value_use_packet, &err_use_packet);
261         /** @todo check 'err_use_packet' variable for exception handling */
262         // Under emulator environment, it fails to control data network connections
263         if (!isEmulBin()) {
264                 ad->data_use_packet =
265                     setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
266                                              setting_network_main_item_Gendial_mouse_up_cb,
267                                              ad, SWALLOW_Type_1TOGGLE, NULL,
268                                              NULL, value_use_packet,
269                                              KeyStr_UsePacketData, NULL,
270                                              setting_network_main_chk_btn_cb);
271                 if (ad->data_use_packet) {
272                         ad->data_use_packet->userdata = ad;
273                 } else {
274                         SETTING_TRACE_ERROR("ad->data_use_packet is NULL");
275                 }
276
277                 setting_create_Gendial_field_def(scroller, &(ad->itc_bg_1icon), NULL,
278                                          ad, SWALLOW_Type_LAYOUT_SPECIALIZTION,
279                                          NULL, NULL, 0, Data_packet_Desc, NULL,
280                                          NULL);
281         }
282
283         char *sub_des = NULL;
284         /*  NO flight mode - default */
285         tapi_ret = tel_get_network_selection_mode(&request_id);
286         if (tapi_ret != TAPI_API_SUCCESS) {
287                 SETTING_TRACE
288                         ("%s*** [ERR] tel_get_network_selection_mode. tapi_ret=%d ***%s",
289                          SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
290                 sub_des = _("IDS_COM_BODY_AUTOMATIC");
291         }
292
293         k = vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &value);
294         if (-1 != k) {
295                 switch (value) {
296                 case TAPI_NETWORK_SELECTIONMODE_AUTOMATIC:
297                         {
298                                 sub_des = _("IDS_COM_BODY_AUTOMATIC");
299                                 break;
300                         }
301                 case TAPI_NETWORK_SELECTIONMODE_MANUAL:
302                         {
303                                 sub_des = _("IDS_COM_BODY_MANUAL");
304                                 break;
305                         }
306                 default:
307                         {
308                                 break;
309                         }
310                 }
311         }
312         ad->sel_net = value;
313         const char *pa_net_name = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
314         SETTING_TRACE("pa_net_name:%s", pa_net_name);
315         if (NULL == pa_net_name) {
316                 pa_net_name = "IDS_ST_BODY_NOSERVICE";
317         } 
318         
319         char sel_network_desc[MAX_COMMON_BUFFER_LEN] = { 0, };
320         snprintf(sel_network_desc, MAX_COMMON_BUFFER_LEN, 
321                  "%s. %s", sub_des, _(pa_net_name));
322         FREE(pa_net_name);
323
324         ad->data_sel_net = setting_create_Gendial_field_def(scroller,
325                                                  &(ad->itc_2text_2),
326                                                  setting_network_main_item_Gendial_mouse_up_cb,
327                                                  ad, SWALLOW_Type_INVALID,
328                                                  NULL, NULL, 0,
329                                                  "IDS_ST_BODY_SELECT_NETWORK",
330                                                  sel_network_desc, NULL);
331         if (ad->data_sel_net) {
332                 ad->data_sel_net->userdata = ad;
333         } else {
334                 SETTING_TRACE_ERROR("ad->data_sel_net is NULL");
335         }
336
337         tapi_ret = tel_get_network_band(&request_id);
338         if (tapi_ret != TAPI_API_SUCCESS) {
339                 SETTING_TRACE
340                     ("%s*** [ERR] tel_get_network_band. tapi_ret=%d ***%s",
341                      SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
342                 sub_des = _("IDS_COM_BODY_AUTOMATIC");
343         }
344
345         k = vconf_get_int(VCONFKEY_SETAPPL_NETWORK_MODE_INT, &value);
346         if (-1 != k) {
347                 SETTING_TRACE("value:%d", value);
348                 switch (value) {
349                 case TAPI_NETWORK_BAND_TYPE_ANY:
350                         sub_des = _("IDS_COM_BODY_AUTOMATIC");
351                         break;
352                 case TAPI_NETWORK_BAND_TYPE_GSM_900_1800:
353                         sub_des = _(STR_SETTING_GSM_900_1800);
354                         break;
355                 case TAPI_NETWORK_BAND_TYPE_GSM_850_1900:
356                         sub_des = _(STR_SETTING_GSM_850_1900);
357                         break;
358                 case TAPI_NETWORK_BAND_TYPE_WCDMA:
359                         sub_des = _(STR_SETTING_UMTS);
360                         break;
361                 default:
362                         break;
363                 }
364         }
365
366         ad->data_net_mode =
367             setting_create_Gendial_exp_parent_field(scroller,
368                                                     &(ad->itc_2text_3_parent),
369                                                     NULL, NULL,
370                                                     SWALLOW_Type_INVALID,
371                                                     "IDS_ST_BODY_NETWORK_MODE",
372                                                     sub_des);
373         if (ad->data_net_mode) {
374                 ad->data_net_mode->int_slp_setting_binded =
375                         INT_SLP_SETTING_NETWORK_MODE;
376                 ad->data_net_mode->userdata = ad;
377         } else {
378                 SETTING_TRACE_ERROR("ad->data_back is NULL");
379         }
380
381         setting_create_Gendial_field_def(scroller, &(ad->itc_1text),
382                                          setting_network_main_item_Gendial_mouse_up_cb,
383                                          ad, SWALLOW_Type_INVALID, NULL, NULL,
384                                          0, "IDS_ST_BODY_INTERNET_CONNECTION",
385                                          NULL, NULL);
386 #ifdef ENABLED_PREFERRED_NETWORKS
387         setting_create_Gendial_field_def(scroller, &(ad->itc_1text),
388                                          setting_network_main_item_Gendial_mouse_up_cb,
389                                          ad, SWALLOW_Type_INVALID, NULL, NULL,
390                                          0, "IDS_ST_BODY_PREFERRED_NETWORKS",
391                                          NULL, NULL);
392 #endif
393 #ifdef ENABLED_2G3G_NETWORK
394         /*  create 3g connection option */
395         setting_create_Gendial_field_def(scroller, &(ad->itc_1text),
396                                          setting_network_main_item_Gendial_mouse_up_cb,
397                                          ad, SWALLOW_Type_INVALID, NULL, NULL,
398                                          0, "2G/3G Connection", NULL, NULL);
399
400         /* add blank rectangle */
401 #endif
402         setting_view_network_main.is_create = 1;
403         return SETTING_RETURN_SUCCESS;
404 }
405
406 static int setting_network_main_destroy(void *cb)
407 {
408         /* error check */
409         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
410
411         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
412
413         if (ad->ly_main != NULL) {
414                 evas_object_del(ad->ly_main);
415         }
416         ad->data_sel_net = NULL;//reset NULL after genlis destoryed with ly_main.
417
418         setting_view_network_main.is_create = 0;
419         return SETTING_RETURN_SUCCESS;
420 }
421
422 static int setting_network_main_update(void *cb)
423 {
424         SETTING_TRACE_BEGIN;
425         /* error check */
426         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
427
428         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
429
430         if (ad->ly_main != NULL) {
431
432                 evas_object_show(ad->ly_main);
433         }
434         SETTING_TRACE_END;
435
436         return SETTING_RETURN_SUCCESS;
437 }
438
439 static int setting_network_main_cleanup(void *cb)
440 {
441         return SETTING_RETURN_SUCCESS;
442 }
443
444 /* ***************************************************
445  *
446  *general func
447  *
448  ***************************************************/
449
450 /* ***************************************************
451  *
452  *call back func
453  *
454  ***************************************************/
455
456 static void
457 setting_network_main_click_softkey_help_cb(void *data, Evas_Object *obj,
458                                            void *event_info)
459 {
460         SETTING_TRACE_BEGIN;
461         /* error check */
462         retm_if(data == NULL, "Data parameter is NULL");
463
464         SettingNetworkUG *ad = (SettingNetworkUG *) data;
465         setting_view_change(&setting_view_network_main,
466                             &setting_view_network_main_help, ad);
467 }
468
469 static void
470 setting_network_main_click_softkey_back_cb(void *data, Evas_Object *obj,
471                                            void *event_info)
472 {
473         SETTING_TRACE_BEGIN;
474         /* error check */
475         retm_if(data == NULL, "Data parameter is NULL");
476
477         SettingNetworkUG *ad = (SettingNetworkUG *) data;
478         /* Send destroy request */
479         ug_destroy_me(ad->ug);
480 }
481
482 static void
483 setting_network_main_item_Gendial_mouse_up_cb(void *data, Evas_Object *obj,
484                                               void *event_info)
485 {
486         SETTING_TRACE_BEGIN;
487         /* error check */
488         setting_retm_if(data == NULL, "Data parameter is NULL");
489         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
490         elm_genlist_item_selected_set(item, 0);
491         Setting_GenGroupItem_Data *list_item =
492             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
493
494         SettingNetworkUG *ad = (SettingNetworkUG *) data;
495
496         SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
497         int ret;
498
499         if (!safeStrCmp("IDS_ST_BODY_SELECT_NETWORK", list_item->keyStr)) {
500                 ret =
501                     setting_view_change(&setting_view_network_main,
502                                         &setting_view_network_select_network,
503                                         ad);
504         } else
505             if (!safeStrCmp
506                 ("IDS_ST_BODY_INTERNET_CONNECTION", list_item->keyStr)) {
507
508                 ad->con_type = NET_SERVICE_INTERNET;
509                 ret =
510                     setting_view_change(&setting_view_network_main,
511                                         &setting_view_network_connection_create,
512                                         ad);
513         }
514 #ifdef ENABLED_PREFERRED_NETWORKS       
515         else if (!safeStrCmp("IDS_ST_BODY_PREFERRED_NETWORKS", 
516                                 list_item->keyStr)) {
517                                 
518                 int value = -1;
519                 int err = -1;
520                 ret =
521                     setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value,
522                                             &err);
523                         /** @todo check 'err' variable for exception handling */
524                 SETTING_TRACE("INT_SLP_SETTING_SIM_SLOT value:%d", value);
525                 switch (value) {
526                 case VCONFKEY_TELEPHONY_SIM_INSERTED:
527                         /* To Recreate the view in order to search the perferred network again. */
528                         /* ret = setting_view_destroy(&setting_view_network_preferred_network, ad); */
529                         ret =
530                             setting_view_change(&setting_view_network_main,
531                                                 &setting_view_network_preferred_network,
532                                                 ad);
533
534                         break;
535
536                 case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
537
538                         setting_create_popup_without_title(NULL, ad->win_get,
539                                                           _
540                                                           ("IDS_ST_SECURITY_BODY_NOIMSI"));
541                         SETTING_TRACE_DEBUG
542                             ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
543                              SETTING_FONT_RED, value, SETTING_FONT_BLACK);
544                         return;
545
546                         break;
547
548                 case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
549                 case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
550
551                         setting_create_popup_without_title(NULL, ad->win_get,
552                                                           _
553                                                           ("IDS_COM_BODY_INVALID_SIM_CARD"));
554                         SETTING_TRACE_DEBUG
555                             ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
556                              SETTING_FONT_RED, value, SETTING_FONT_BLACK);
557                         return;
558
559                         break;
560                 default:
561                         SETTING_TRACE("Unknown SIM information from vconf");
562                         break;
563                 }
564         }
565 #endif
566 #ifdef ENABLED_2G3G_NETWORK
567         else if (!safeStrCmp("2G/3G Connection", list_item->keyStr)) {
568                 ret =
569                     setting_view_change(&setting_view_network_main,
570                                         &setting_view_network_3gcon, ad);
571         }
572 #endif
573         else if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
574                 int old_status = elm_check_state_get(list_item->eo_check);
575                 /* new status */
576                 list_item->chk_status = !old_status;
577                 elm_check_state_set(list_item->eo_check, list_item->chk_status);
578                 int err = 0;
579                 if (!list_item->chk_status) {
580                         setting_set_bool_slp_key
581                             (BOOL_SLP_SETTING_USE_PACKET_DATA,
582                              SETTING_ON_OFF_BTN_OFF, &err);
583                         /** @todo check 'err' variable for exception handling */
584                 } else {
585                         ad->popup =
586                             setting_create_popup_with_btn(ad, ad->win_get,
587                                                  _("Data packet through 3G network will be consumed, if you use data download or upload without Wi-Fi connection.Continue?"),
588                                                  NULL,
589                                                  setting_network_use_packet_resp_cb,
590                                                  0, 2, _("IDS_COM_SK_YES"),_("IDS_COM_SK_NO"));
591                 }
592         }
593 }
594
595 static void
596 setting_network_main_chk_btn_cb(void *data, Evas_Object *obj, void *event_info)
597 {
598         SETTING_TRACE_BEGIN;
599         /* error check */
600         retm_if(data == NULL, "Data parameter is NULL");
601         SettingNetworkUG *ad = NULL;
602         Setting_GenGroupItem_Data *list_item =
603             (Setting_GenGroupItem_Data *) data;
604         ad = list_item->userdata;
605         list_item->chk_status = elm_check_state_get(obj);       /*  for genlist update status */
606
607         if (obj == ad->data_use_packet->eo_check) {
608                 int err;
609                 /* int value; */
610                 if (list_item->chk_status) {
611                         ad->popup =
612                             setting_create_popup_with_btn(ad, ad->win_get,
613                                                  _("Data packet through 3G network will be consumed, if you use data download or upload without Wi-Fi connection.Continue?"),
614                                                  NULL,
615                                                  setting_network_use_packet_resp_cb,
616                                                  0, 2, _("IDS_COM_SK_YES"),_("IDS_COM_SK_NO"));
617                 } else {
618                         setting_set_bool_slp_key
619                             (BOOL_SLP_SETTING_USE_PACKET_DATA,
620                              SETTING_ON_OFF_BTN_OFF, &err);
621                         /** @todo check 'err' variable for exception handling */
622                         elm_check_state_set(ad->data_use_packet->eo_check, 0);
623                         ad->data_use_packet->chk_status = 0;
624                 }
625         }
626 }
627
628 static void
629 setting_network_use_packet_resp_cb(void *data, Evas_Object *obj,
630                                    void *event_info)
631 {
632         SETTING_TRACE_BEGIN;
633         retm_if(data == NULL, "Data parameter is NULL");
634
635         SettingNetworkUG *ad = (SettingNetworkUG *) data;
636         int err;                /* error check   */
637         int response_type = btn_type(obj);
638         if (POPUP_RESPONSE_OK == response_type) {
639                 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
640                                          SETTING_ON_OFF_BTN_ON, &err);
641                 /** @todo check 'err' variable for exception handling */
642                 elm_check_state_set(ad->data_use_packet->eo_check, 1);
643                 ad->data_use_packet->chk_status = 1;
644         } else if (POPUP_RESPONSE_CANCEL == response_type) {
645                 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
646                                          SETTING_ON_OFF_BTN_OFF, &err);
647                 /** @todo check 'err' variable for exception handling */
648                 elm_check_state_set(ad->data_use_packet->eo_check, 0);
649                 ad->data_use_packet->chk_status = 0;
650         }
651         if (ad->popup)
652         {
653                 evas_object_del(ad->popup);
654                 ad->popup = NULL;
655         }
656
657 }