Adjust the margin of Help text in Setting
[apps/home/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  #if DISABLED_CODE
62 static void __ask_create_gsm_resp_cb(void *data, Evas_Object *obj,
63                                            void *event_info)
64 {
65         SETTING_TRACE_BEGIN;
66
67         SettingNetworkUG *ad = (SettingNetworkUG *) data;
68         ret_if(NULL == data);
69         int response_type = btn_type(obj);
70         bool rollback_flag = FALSE;
71         if (POPUP_RESPONSE_OK == response_type) {
72                 int tapi_ret = TAPI_API_INVALID_INPUT;
73
74                 //async: TAPI_EVENT_NETWORK_SETNWBAND_CNF
75                 tapi_ret =
76                     tel_set_network_band(ad->handle, TAPI_NETWORK_BAND_MODE_ONLY,
77                                          TAPI_NETWORK_BAND_TYPE_GSM_850_1900,
78                                          setting_tapi_set_band_cb, ad);
79                 if (tapi_ret != TAPI_API_SUCCESS) {
80                         SETTING_TRACE_DEBUG
81                             ("%s*** [ERR] tel_set_network_band. tapi_ret=%d ***%s",
82                              SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
83                         rollback_flag = TRUE;
84
85                 }
86
87         } else if (POPUP_RESPONSE_CANCEL == response_type) {
88                 rollback_flag = TRUE;
89         }
90         if (rollback_flag)
91         {
92                 //rollback
93                 int err;
94                 int value = TAPI_NETWORK_BAND_TYPE_ANY;
95                 if (ad->data_net_mode) {
96                         setting_get_int_slp_key(ad->data_net_mode->int_slp_setting_binded,
97                                                 &(value), &err);
98                         /** @todo check 'err' variable for exception handling */
99                         elm_radio_value_set(ad->data_net_mode->rgd, value);
100                 }
101         }
102         evas_object_del(ad->pop_gsm);
103         ad->pop_gsm = NULL;
104
105 }
106 #endif
107 void __network_sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
108 {
109         SETTING_TRACE_BEGIN;
110         /* error check */
111         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
112         ret_if(NULL == data);
113         SettingNetworkUG *ad = (SettingNetworkUG *) data;
114         Elm_Object_Item *subitem = (Elm_Object_Item *) event_info;
115         elm_genlist_item_selected_set(subitem, 0);
116         Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subitem);
117         if (data_subItem->chk_status == elm_radio_value_get(ad->data_net_mode->rgd))
118         {
119                 return;
120         }
121         elm_radio_value_set(ad->data_net_mode->rgd, data_subItem->chk_status);
122
123         int tapi_ret = TAPI_API_INVALID_INPUT;
124         TelNetworkBand_t band = TAPI_NETWORK_BAND_TYPE_ANY;
125
126         switch (data_subItem->chk_status) {
127
128         case TAPI_NETWORK_BAND_TYPE_ANY:
129                 band = TAPI_NETWORK_BAND_TYPE_ANY;
130                 break;
131
132         case TAPI_NETWORK_BAND_TYPE_GSM_900_1800:
133                 band = TAPI_NETWORK_BAND_TYPE_GSM_900_1800;
134                 break;
135
136         case TAPI_NETWORK_BAND_TYPE_GSM_850_1900:
137                 /*ad->pop_gsm = setting_create_popup_with_btn(ad,
138                                                   ad->win_get,
139                                                   NULL, _(BAND_OPERATE_OUTSIDE_USA_CANADA_STR),
140                                                   __ask_create_gsm_resp_cb,
141                                                   0, 2, _("IDS_COM_SK_YES"),_("IDS_COM_SK_NO"));
142                 */
143                 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(BAND_OPERATE_OUTSIDE_USA_CANADA_STR), NULL, POPUP_INTERVAL, FALSE, FALSE);
144                 return;
145
146         case TAPI_NETWORK_BAND_TYPE_WCDMA:
147                 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(UMTS_MODE_WORK_OUTSIDE_STR), NULL, POPUP_INTERVAL, FALSE, FALSE);
148                 band = TAPI_NETWORK_BAND_TYPE_WCDMA;
149                 break;
150         default:
151                 SETTING_TRACE("Unknown Tel-Net band type");
152                 break;
153         }
154
155         //async: TAPI_EVENT_NETWORK_SETNWBAND_CNF
156         tapi_ret =
157             tel_set_network_band(ad->handle, TAPI_NETWORK_BAND_MODE_ONLY, band,
158                                  setting_tapi_set_band_cb, ad);
159         if (tapi_ret != TAPI_API_SUCCESS) {
160                 SETTING_TRACE_DEBUG
161                     ("%s*** [ERR] tel_set_network_band. tapi_ret=%d ***%s",
162                      SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
163
164                 //rollback
165                 int err;
166                 int value = TAPI_NETWORK_BAND_TYPE_ANY;
167                 setting_get_int_slp_key(ad->data_net_mode->int_slp_setting_binded,
168                                         &(value), &err);
169                 /** @todo check 'err' variable for exception handling */
170                 elm_radio_value_set(ad->data_net_mode->rgd, value);
171                 return;
172         }
173 }
174
175
176 static void
177 __setting_network_main_exp_cb(void *data, Evas_Object *obj, void *event_info)
178 {
179         ret_if(NULL == data || NULL == event_info);
180         SETTING_TRACE_BEGIN;
181         SettingNetworkUG *ad = (SettingNetworkUG *) data;
182         Elm_Object_Item *parentItem = event_info;       /* parent item */
183         Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);      /* parent data */
184         Evas_Object *scroller = elm_object_item_widget_get(parentItem);
185
186         Evas_Object *rgd;
187         if (data_parentItem == ad->data_net_mode) {
188                 rgd = elm_radio_add(scroller);
189                 elm_radio_value_set(rgd, -1);
190
191                 setting_create_Gendial_exp_sub_field(scroller,
192                                                      &itc_1icon_1text_sub,
193                                                      __network_sub_list_sel_cb,
194                                                      ad, parentItem,
195                                                      SWALLOW_Type_1RADIO, rgd,
196                                                      TAPI_NETWORK_BAND_TYPE_ANY,
197                                                      "IDS_COM_BODY_AUTOMATIC", NULL);
198
199                 setting_create_Gendial_exp_sub_field(scroller,
200                                                      &itc_1icon_1text_sub,
201                                                      __network_sub_list_sel_cb,
202                                                      ad, parentItem,
203                                                      SWALLOW_Type_1RADIO, rgd,
204                                                      TAPI_NETWORK_BAND_TYPE_GSM_900_1800,
205                                                      STR_SETTING_GSM_900_1800, NULL);
206
207                 setting_create_Gendial_exp_sub_field(scroller,
208                                                      &itc_1icon_1text_sub,
209                                                      __network_sub_list_sel_cb,
210                                                      ad, parentItem,
211                                                      SWALLOW_Type_1RADIO, rgd,
212                                                      TAPI_NETWORK_BAND_TYPE_GSM_850_1900,
213                                                      STR_SETTING_GSM_850_1900, NULL);
214
215                 setting_create_Gendial_exp_sub_field(scroller,
216                                                      &itc_1icon_1text_sub,
217                                                      __network_sub_list_sel_cb,
218                                                      ad, parentItem,
219                                                      SWALLOW_Type_1RADIO, rgd,
220                                                      TAPI_NETWORK_BAND_TYPE_WCDMA,
221                                                      STR_SETTING_UMTS, NULL);
222
223                 data_parentItem->rgd = rgd;
224                 setting_update_chk_status(rgd, data_parentItem->int_slp_setting_binded);
225
226         }
227 }
228
229 static int setting_network_main_create(void *cb)
230 {
231         SETTING_TRACE_BEGIN;
232         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
233
234         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
235         /*  ***BEGIN***  Fixed the problem of word twinkle  SAMSUNG 2010/7/21 add */
236         int value = 0;
237         int k = -1;
238         /*  ****END****  Fixed the problem of word twinkle  SAMSUNG 2010/7/21 add */
239
240 #ifdef SUPPORT_MDM
241         if(ad->mdm_server_state == MDM_RESULT_SUCCESS)
242         {
243                 ad->roaming_policy_status = mdm_get_allow_roaming_data();
244                 if(ad->roaming_policy_status == MDM_STATUS_ERROR)
245                 {
246                         SETTING_TRACE_DEBUG(">>>>>> function error - mdm_get_allow_roaming_data() ");
247                 }
248                 else
249                 {
250                         SETTING_TRACE_DEBUG("function success - mdm_get_allow_roaming_data() --> %d ", ad->roaming_policy_status );
251
252                         if (ad->roaming_policy_status == MDM_ALLOWED)
253                         {
254                                 SETTING_TRACE_DEBUG(">>> MDM ALLOWED ");
255                         }
256                         else if (ad->roaming_policy_status == MDM_RESTRICTED)
257                         {
258                                 SETTING_TRACE_DEBUG(">>> MDM RESTRICTED ");
259                         }
260                 }
261         }
262 #endif
263
264         Evas_Object *scroller;
265
266         ad->ly_main =
267             setting_create_layout_navi_bar_genlist(ad->win_main_layout,
268                                                    ad->win_get,
269                                                    _("IDS_ST_BODY_NETWORK"),
270                                                    dgettext("sys_string",
271                                                             "IDS_COM_BODY_BACK"),
272                                                    NULL,//_("IDS_COM_BODY_HELP"),
273                                                    setting_network_main_click_softkey_back_cb,
274                                                    setting_network_main_click_softkey_help_cb,
275                                                    ad, &scroller,
276                                                    &ad->navi_bar);
277
278         setting_enable_expandable_genlist(scroller, ad,
279                                           __setting_network_main_exp_cb, NULL);
280         Elm_Object_Item *item = NULL;;
281
282         item =
283             elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
284                                     ELM_GENLIST_ITEM_NONE, NULL, NULL);
285         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
286
287         int value_use_packet;
288         int err_use_packet;
289         setting_get_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
290                                  &value_use_packet, &err_use_packet);
291         /** @todo check 'err_use_packet' variable for exception handling */
292         ad->data_use_packet =
293             setting_create_Gendial_field_def(scroller, &itc_1text_1icon,
294                                              setting_network_main_item_Gendial_mouse_up_cb,
295                                              ad, SWALLOW_Type_1TOGGLE, NULL,
296                                              NULL, value_use_packet,
297                                              KeyStr_UsePacketData, NULL,
298                                              setting_network_main_chk_btn_cb);
299         if (ad->data_use_packet) {
300                 ad->data_use_packet->userdata = ad;
301         } else {
302                 SETTING_TRACE_ERROR("ad->data_use_packet is NULL");
303         }
304
305         setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL,
306                                          ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
307                                          NULL, NULL, 0, Data_packet_Desc, NULL,
308                                          NULL);
309         elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
310                                          ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
311
312         /* data roaming */
313         int value_data_roaming = 0;
314         int err_data_roaming = 0;
315         setting_get_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
316                                  &value_data_roaming, &err_data_roaming);
317         if (err_data_roaming != 0) {
318                 SETTING_TRACE_ERROR("get vconf failed");
319         }
320         ad->data_roaming = setting_create_Gendial_field_def(scroller, &itc_1text_1icon,
321                                                             setting_network_main_item_Gendial_mouse_up_cb,
322                                                             ad, SWALLOW_Type_1TOGGLE, NULL,
323                                                             NULL, value_data_roaming,
324                                                             KeyStr_DataRoaming, NULL,
325                                                             setting_network_main_chk_btn_cb);
326         if (ad->data_roaming) {
327                 ad->data_roaming->userdata = ad;
328 #ifdef SUPPORT_MDM
329                 if(ad->mdm_server_state == MDM_RESULT_SUCCESS)
330                 {
331                         if (ad->roaming_policy_status == MDM_ALLOWED)
332                         {
333                                 setting_enable_genlist_item(ad->data_roaming->item);
334                         }
335                         else if (ad->roaming_policy_status == MDM_RESTRICTED)
336                         {
337                                 setting_disable_genlist_item(ad->data_roaming->item);
338                                 setting_create_popup_without_btn(ad, ad->ly_main, NULL, MDM_POLICY_DATA_ROAMING_RESTRICTED_STR,
339                                           NULL, POPUP_INTERVAL, FALSE, FALSE);
340                         }
341                 }
342 #endif
343         } else {
344                 SETTING_TRACE_ERROR("ad->data_roaming is NULL");
345         }
346
347         setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL,
348                                          ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
349                                          NULL, NULL, 0, SETTING_NETWORK_DATA_ROMING_DESC, NULL,
350                                          NULL);
351         elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
352                                          ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
353
354
355         /* (void)setting_create_Gendial_field_titleItem(scroller, &(ad->itc_group_item), speciliztion, NULL); */
356
357         /*  check flight mode */
358         int flight_mode, err;
359         setting_get_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE, &flight_mode,
360                                  &err);
361         /** @todo check 'err' variable for exception handling */
362         SETTING_TRACE("flight_mode:%d", flight_mode);
363         char *sub_des = NULL;
364         if (flight_mode == 0) {
365                 /*  ***BEGIN***  Fixed the problem of word twinkle  SAMSUNG 2010/7/21 add */
366                 ad->sel_net = TAPI_NETWORK_SELECTIONMODE_AUTOMATIC;
367                 ad->sel_act = TAPI_NETWORK_SYSTEM_NO_SRV;
368                 vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &ad->sel_net);
369                 vconf_get_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, &ad->sel_act);
370
371                 FREE(ad->sel_network);
372                 ad->sel_network = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
373                 SETTING_TRACE("pa_sel_net_name:%s", ad->sel_network);
374                 if (isEmptyStr(ad->sel_network)) {
375                     ad->sel_network = strndup("IDS_ST_BODY_NOSERVICE", strlen("IDS_ST_BODY_NOSERVICE")+1);
376                 }
377                 SETTING_TRACE("pa_net_name:%s", ad->sel_network);
378                 SETTING_TRACE("old act:%d", ad->sel_act);
379                 SETTING_TRACE("old network mode:%d", ad->sel_net);
380
381                 char sel_network_desc[MAX_COMMON_BUFFER_LEN] = { 0, };
382                 if (TAPI_NETWORK_SELECTIONMODE_MANUAL == value) {
383                         snprintf(sel_network_desc, MAX_COMMON_BUFFER_LEN,
384                                  "%s, %s (%s)", _("IDS_COM_BODY_MANUAL"), _(ad->sel_network),
385                                  setting_network_get_act_str(ad->sel_act));
386                 }
387                 else{
388                         snprintf(sel_network_desc, MAX_COMMON_BUFFER_LEN,
389                                  "%s, %s", _("IDS_COM_BODY_AUTOMATIC"), _(ad->sel_network));
390                 }
391
392                 ad->data_sel_net = setting_create_Gendial_field_def(scroller,
393                                              &itc_2text_3,
394                                              setting_network_main_item_Gendial_mouse_up_cb,
395                                              ad, SWALLOW_Type_INVALID,
396                                              NULL, NULL, 0,
397                                              "IDS_ST_BODY_SELECT_NETWORK",
398                                              sel_network_desc, NULL);
399                 if (ad->data_sel_net) {
400                         ad->data_sel_net->userdata = ad;
401                 } else {
402                         SETTING_TRACE_ERROR("ad->data_sel_net is NULL");
403                 }
404         }
405         /*  ***BEGIN***  Fixed the problem of word twinkle  SAMSUNG 2010/7/21 add */
406         /* hide NETWORK MODE in Emulator*/
407         k = vconf_get_int(VCONFKEY_SETAPPL_NETWORK_MODE_INT, &value);
408         if (-1 != k) {
409                 SETTING_TRACE("value:%d", value);
410                 switch (value) {
411                 case TAPI_NETWORK_BAND_TYPE_ANY:
412                         sub_des = _("IDS_COM_BODY_AUTOMATIC");
413                         break;
414                 case TAPI_NETWORK_BAND_TYPE_GSM_900_1800:
415                         sub_des = _(STR_SETTING_GSM_900_1800);
416                         break;
417                 case TAPI_NETWORK_BAND_TYPE_GSM_850_1900:
418                         sub_des = _(STR_SETTING_GSM_850_1900);
419                         break;
420                 case TAPI_NETWORK_BAND_TYPE_WCDMA:
421                         sub_des = _(STR_SETTING_UMTS);
422                         break;
423                 default:
424                         break;
425                 }
426         }
427
428         ad->data_net_mode =
429             setting_create_Gendial_exp_parent_field(scroller,
430                                                     &itc_2text_3_parent,
431                                                     NULL, NULL,
432                                                     SWALLOW_Type_INVALID,
433                                                     "IDS_ST_BODY_NETWORK_MODE",
434                                                     sub_des);
435         if (ad->data_net_mode) {
436                 ad->data_net_mode->int_slp_setting_binded =
437                         INT_SLP_SETTING_NETWORK_MODE;
438                 ad->data_net_mode->userdata = ad;
439         } else {
440                 SETTING_TRACE_ERROR("ad->data_back is NULL");
441         }
442
443         setting_create_Gendial_field_def(scroller, &itc_1text,
444                                          setting_network_main_item_Gendial_mouse_up_cb,
445                                          ad, SWALLOW_Type_INVALID, NULL, NULL,
446                                          0, CONNECTION_DSC,
447                                          NULL, NULL);
448 #if DISABLED_CODE
449         setting_create_Gendial_field_def(scroller, &itc_1text,
450                                          setting_network_main_item_Gendial_mouse_up_cb,
451                                          ad, SWALLOW_Type_INVALID, NULL, NULL,
452                                          0, "IDS_ST_BODY_INTERNET_CONNECTION",
453                                          NULL, NULL);
454         setting_create_Gendial_field_def(scroller, &itc_1text,
455                                          setting_network_main_item_Gendial_mouse_up_cb,
456                                          ad, SWALLOW_Type_INVALID, NULL, NULL,
457                                          0, STR_SETTING_MMS_CONNECTIONS, NULL,
458                                          NULL);
459 #ifdef ENABLED_PREFERRED_NETWORKS
460         setting_create_Gendial_field_def(scroller, &itc_1text,
461                                          setting_network_main_item_Gendial_mouse_up_cb,
462                                          ad, SWALLOW_Type_INVALID, NULL, NULL,
463                                          0, "IDS_ST_BODY_PREFERRED_NETWORKS",
464                                          NULL, NULL);
465 #endif
466 #ifdef ENABLED_2G3G_NETWORK
467         /*  create 3g connection option */
468         setting_create_Gendial_field_def(scroller, &itc_1text,
469                                          setting_network_main_item_Gendial_mouse_up_cb,
470                                          ad, SWALLOW_Type_INVALID, NULL, NULL,
471                                          0, "2G/3G Connection", NULL, NULL);
472
473         /* add blank rectangle */
474 #endif
475 #endif
476
477         item = elm_genlist_item_append(scroller, &itc_bottom_seperator, NULL, NULL,
478                                     ELM_GENLIST_ITEM_NONE, NULL, NULL);
479         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
480
481         setting_view_network_main.is_create = 1;
482         return SETTING_RETURN_SUCCESS;
483 }
484
485 static int setting_network_main_destroy(void *cb)
486 {
487         /* error check */
488         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
489
490         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
491
492         if (ad->ly_main != NULL) {
493                 evas_object_del(ad->ly_main);
494         }
495         ad->data_sel_net = NULL;//reset NULL after genlis destoryed with ly_main.
496
497         setting_view_network_main.is_create = 0;
498         return SETTING_RETURN_SUCCESS;
499 }
500
501 static int setting_network_main_update(void *cb)
502 {
503         SETTING_TRACE_BEGIN;
504         /* error check */
505         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
506
507         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
508
509         if (ad->ly_main != NULL) {
510
511                 evas_object_show(ad->ly_main);
512         }
513         SETTING_TRACE_END;
514
515         return SETTING_RETURN_SUCCESS;
516 }
517
518 static int setting_network_main_cleanup(void *cb)
519 {
520         /* error check */
521         /* retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER); */
522
523         /* SettingNetworkUG *ad = (SettingNetworkUG *)cb; */
524
525         /* all the view in view stack shared the ad->ly_main, it cannot be hided!!! */
526         /* if(ad->ly_main != NULL) */
527         /* { */
528         /* evas_object_hide(ad->ly_main); */
529         /* } */
530
531         return SETTING_RETURN_SUCCESS;
532 }
533
534 /* ***************************************************
535  *
536  *general func
537  *
538  ***************************************************/
539
540 /* ***************************************************
541  *
542  *call back func
543  *
544  ***************************************************/
545
546 static void
547 setting_network_main_click_softkey_help_cb(void *data, Evas_Object *obj,
548                                            void *event_info)
549 {
550         SETTING_TRACE_BEGIN;
551         /* error check */
552         retm_if(data == NULL, "Data parameter is NULL");
553
554         SettingNetworkUG *ad = (SettingNetworkUG *) data;
555         setting_view_change(&setting_view_network_main,
556                             &setting_view_network_main_help, ad);
557 }
558
559 static void
560 setting_network_main_click_softkey_back_cb(void *data, Evas_Object *obj,
561                                            void *event_info)
562 {
563         SETTING_TRACE_BEGIN;
564         /* error check */
565         retm_if(data == NULL, "Data parameter is NULL");
566
567         SettingNetworkUG *ad = (SettingNetworkUG *) data;
568         /* Send destroy request */
569         ug_destroy_me(ad->ug);
570 }
571
572 static void
573 setting_network_main_item_Gendial_mouse_up_cb(void *data, Evas_Object *obj,
574                                               void *event_info)
575 {
576         SETTING_TRACE_BEGIN;
577         /* error check */
578         setting_retm_if(data == NULL, "Data parameter is NULL");
579         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
580         elm_genlist_item_selected_set(item, 0);
581         Setting_GenGroupItem_Data *list_item =
582             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
583
584         SettingNetworkUG *ad = (SettingNetworkUG *) data;
585
586         SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
587         int ret;
588
589         if (!safeStrCmp("IDS_ST_BODY_SELECT_NETWORK", list_item->keyStr)) {
590                 ret =
591                     setting_view_change(&setting_view_network_main,
592                                         &setting_view_network_select_network,
593                                         ad);
594         } else
595             if (!safeStrCmp
596                 ("IDS_ST_BODY_INTERNET_CONNECTION", list_item->keyStr)) {
597
598                 ad->con_type = NET_SERVICE_INTERNET;
599                 ret =
600                     setting_view_change(&setting_view_network_main,
601                                         &setting_view_network_connection_create,
602                                         ad);
603         } else if (!safeStrCmp(STR_SETTING_MMS_CONNECTIONS, list_item->keyStr)) {
604                 ad->con_type = NET_SERVICE_MMS;
605
606                 ret =
607                     setting_view_change(&setting_view_network_main,
608                                         &setting_view_network_connection_create,
609                                         ad);
610         }
611 #ifdef ENABLED_PREFERRED_NETWORKS
612         else if (!safeStrCmp("IDS_ST_BODY_PREFERRED_NETWORKS",
613                                 list_item->keyStr)) {
614
615                 int value = -1;
616                 int err = -1;
617                 ret =
618                     setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value,
619                                             &err);
620                         /** @todo check 'err' variable for exception handling */
621                 SETTING_TRACE("INT_SLP_SETTING_SIM_SLOT value:%d", value);
622                 switch (value) {
623                 case VCONFKEY_TELEPHONY_SIM_INSERTED:
624                         /* To Recreate the view in order to search the perferred network again. */
625                         /* ret = setting_view_destroy(&setting_view_network_preferred_network, ad); */
626                         ret =
627                             setting_view_change(&setting_view_network_main,
628                                                 &setting_view_network_preferred_network,
629                                                 ad);
630
631                         break;
632
633                 case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
634
635                         setting_create_simple_popup(NULL, ad->win_get,
636                                                     NULL, _("IDS_ST_SECURITY_BODY_NOIMSI"));
637                         SETTING_TRACE_DEBUG
638                             ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
639                              SETTING_FONT_RED, value, SETTING_FONT_BLACK);
640                         return;
641
642                         break;
643
644                 case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
645                 case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
646
647                         setting_create_simple_popup(NULL, ad->win_get,
648                                                     NULL, _("IDS_COM_BODY_INVALID_SIM_CARD"));
649                         SETTING_TRACE_DEBUG
650                             ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
651                              SETTING_FONT_RED, value, SETTING_FONT_BLACK);
652                         return;
653
654                         break;
655                 default:
656                         SETTING_TRACE("Unknown SIM information from vconf");
657                         break;
658                 }
659         }
660 #endif
661 #ifdef ENABLED_2G3G_NETWORK
662         else if (!safeStrCmp("2G/3G Connection", list_item->keyStr)) {
663                 ret =
664                     setting_view_change(&setting_view_network_main,
665                                         &setting_view_network_3gcon, ad);
666         }
667 #endif
668         else if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
669                 int old_status = elm_check_state_get(list_item->eo_check);
670                 /* new status */
671                 list_item->chk_status = !old_status;
672                 elm_check_state_set(list_item->eo_check, list_item->chk_status);
673                 if (!list_item->chk_status) {
674                         ad->popup =
675                             setting_create_popup_with_btn(ad, ad->win_get,
676                                                  NULL, _(SETTING_NETWORK_USE_PACKET_DATA_OFF_DESC),
677                                                  setting_network_use_packet_resp_cb,
678                                                  0, 2, _("IDS_COM_SK_YES"),_("IDS_COM_SK_NO"));
679                 } else {
680                         ad->popup =
681                             setting_create_popup_with_btn(ad, ad->win_get,
682                                                  NULL, _(SETTING_NETWORK_USE_PACKET_DATA_ON_DESC),
683                                                  setting_network_use_packet_resp_cb,
684                                                  0, 1, _("IDS_COM_SK_OK"));
685                 }
686
687         } else if (!safeStrCmp(KeyStr_DataRoaming, list_item->keyStr)) {
688                 int old_status = elm_check_state_get(list_item->eo_check);
689                 /* new status */
690                 list_item->chk_status = !old_status;
691                 elm_check_state_set(list_item->eo_check, list_item->chk_status);
692
693                 char *notify_str = NULL;
694                 if (!list_item->chk_status) {
695                         notify_str = SETTING_NETWORK_DATA_ROMING_OFF_DESC;
696                         ad->popup = setting_create_popup_with_btn(ad, ad->win_get,
697                                                           NULL, notify_str,
698                                                           __setting_network_data_roaming_resp_cb, 0,
699                                                           1, _("IDS_COM_SK_OK"));
700                 } else {
701                         int err = 0;
702                         setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
703                                                  SETTING_ON_OFF_BTN_ON, &err);
704                         setting_retm_if(err != 0, "set vconf failed");
705
706                         /* should set use_packet_data as same as the status of data_roming */
707                         int value = 0;
708                         setting_get_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA, &value, &err);
709                         setting_retm_if(err != 0, "get vconf failed");
710                         if (!value) {
711                                 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
712                                                          SETTING_ON_OFF_BTN_ON, &err);
713                                 setting_retm_if(err != 0, "set vconf failed");
714
715                                 elm_check_state_set(ad->data_use_packet->eo_check, 1);
716                                 ad->data_use_packet->chk_status = 1;
717                         }
718                 }
719         } else if(!safeStrCmp(CONNECTION_DSC, list_item->keyStr)) {
720                 ret = setting_view_change(&setting_view_network_main,
721                                         &setting_view_network_con, ad);
722         }
723 }
724
725 static void
726 setting_network_main_chk_btn_cb(void *data, Evas_Object *obj, void *event_info)
727 {
728         SETTING_TRACE_BEGIN;
729         /* error check */
730         retm_if(data == NULL, "Data parameter is NULL");
731         SettingNetworkUG *ad = NULL;
732         Setting_GenGroupItem_Data *list_item =
733             (Setting_GenGroupItem_Data *) data;
734         ad = list_item->userdata;
735         list_item->chk_status = elm_check_state_get(obj);       /*  for genlist update status */
736
737         if (obj == ad->data_use_packet->eo_check) {
738                 if (!list_item->chk_status) {
739                         ad->popup =
740                             setting_create_popup_with_btn(ad, ad->win_get,
741                                                  NULL, _(SETTING_NETWORK_USE_PACKET_DATA_OFF_DESC),
742                                                  setting_network_use_packet_resp_cb,
743                                                  0, 2, _("IDS_COM_SK_YES"),_("IDS_COM_SK_NO"));
744                 } else {
745                         ad->popup =
746                             setting_create_popup_with_btn(ad, ad->win_get,
747                                                  NULL, _(SETTING_NETWORK_USE_PACKET_DATA_ON_DESC),
748                                                  setting_network_use_packet_resp_cb,
749                                                  0, 1, _("IDS_COM_SK_OK"));
750                 }
751         }else if (obj == ad->data_roaming->eo_check) {
752                 char *notify_str = NULL;
753                 if (!list_item->chk_status) {
754                         notify_str = SETTING_NETWORK_DATA_ROMING_OFF_DESC;
755                         ad->popup = setting_create_popup_with_btn(ad, ad->win_get,
756                                                           NULL, notify_str,
757                                                           __setting_network_data_roaming_resp_cb, 0,
758                                                           1, _("IDS_COM_SK_OK"));
759                 } else {
760                         int err = 0;
761                         setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
762                                                  SETTING_ON_OFF_BTN_ON, &err);
763                         setting_retm_if(err != 0, "set vconf failed");
764
765                         /* should set use_packet_data as same as the status of data_roming */
766                         int value = 0;
767                         setting_get_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA, &value, &err);
768                         setting_retm_if(err != 0, "get vconf failed");
769                         if (!value) {
770                                 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
771                                                         SETTING_ON_OFF_BTN_ON, &err);
772                                 setting_retm_if(err != 0, "set vconf failed");
773
774                                 elm_check_state_set(ad->data_use_packet->eo_check, 1);
775                                 ad->data_use_packet->chk_status = 1;
776                         }
777                 }
778         }
779 }
780
781 static void
782 setting_network_use_packet_resp_cb(void *data, Evas_Object *obj,
783                                    void *event_info)
784 {
785         SETTING_TRACE_BEGIN;
786         retm_if(data == NULL, "Data parameter is NULL");
787
788         SettingNetworkUG *ad = (SettingNetworkUG *) data;
789         int err = 0;            /* error check   */
790         int response_type = btn_type(obj);
791
792         int value = 0;
793         setting_get_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA, &value, &err);
794         setting_retm_if(err != 0, "get vconf failed");
795         SETTING_TRACE("value = %d", value);
796         if (POPUP_RESPONSE_OK == response_type) {
797                 if (value == 0) {
798                         setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
799                                                  SETTING_ON_OFF_BTN_ON, &err);
800                         setting_retm_if(err != 0, "set vconf failed");
801
802                         elm_check_state_set(ad->data_use_packet->eo_check, 1);
803                         ad->data_use_packet->chk_status = 1;
804
805                         /* if called by other apps, destroy ug */
806                         if (!safeStrCmp(ad->view_type_string, "DATA_ROAMING")) {
807                                 if (ad->popup) {
808                                         evas_object_del(ad->popup);
809                                         ad->popup = NULL;
810                                 }
811                                 ug_destroy_me(ad->ug);
812                                 return;
813                         }
814                 } else {
815                         setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
816                                                  SETTING_ON_OFF_BTN_OFF, &err);
817                         setting_retm_if(err != 0, "set vconf failed");
818
819                         elm_check_state_set(ad->data_use_packet->eo_check, 0);
820                         ad->data_use_packet->chk_status = 0;
821
822                         /* should set data_roming as same as status of use_packet_data */
823                         int data_roaming_value = 0;
824                         setting_get_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING, &data_roaming_value, &err);
825                         setting_retm_if(err != 0, "get vconf failed");
826                         if (data_roaming_value) {
827                                 setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
828                                                          SETTING_ON_OFF_BTN_OFF, &err);
829                                 setting_retm_if(err != 0, "set vconf failed");
830
831                                 elm_check_state_set(ad->data_roaming->eo_check, 0);
832                                 ad->data_roaming->chk_status = 0;
833                         }
834                 }
835         } else if (POPUP_RESPONSE_CANCEL == response_type) {
836                 /* rollback */
837                 if (value == 1) {
838                         setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
839                                                  SETTING_ON_OFF_BTN_ON, &err);
840                         setting_retm_if(err != 0, "set vconf failed");
841                         elm_check_state_set(ad->data_use_packet->eo_check, 1);
842                         ad->data_use_packet->chk_status = 1;
843                 }
844         }
845         if (ad->popup)
846         {
847                 evas_object_del(ad->popup);
848                 ad->popup = NULL;
849         }
850
851 }
852
853 static void __setting_network_data_roaming_resp_cb(void *data, Evas_Object *obj,
854                                              void *event_info)
855 {
856         SETTING_TRACE_BEGIN;
857         retm_if(data == NULL, "Data parameter is NULL");
858
859         SettingNetworkUG *ad = (SettingNetworkUG *) data;
860         int response_type = btn_type(obj);
861         SETTING_TRACE("elm_object_parent_widget_get(obj):%p", elm_object_parent_widget_get(obj));
862         SETTING_TRACE("obj:%p", obj);
863         if (POPUP_RESPONSE_OK == response_type) {
864                 int value = 0;
865                 int err = 0;
866                 setting_get_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING, &value, &err);
867
868                 if (value == 0) {
869                         setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
870                                                  SETTING_ON_OFF_BTN_ON, &err);
871                         setting_retm_if(err != 0, "set vconf failed");
872
873                         elm_check_state_set(ad->data_roaming->eo_check, 1);
874                         ad->data_roaming->chk_status = 1;
875
876                         /* if called by other apps, destroy ug */
877                         if (!safeStrCmp(ad->view_type_string, "DATA_ROAMING")) {
878                                 if (ad->popup)
879                                 {
880                                         evas_object_del(ad->popup);
881                                         ad->popup = NULL;
882                                 }
883                                 ug_destroy_me(ad->ug);
884                                 return;
885                         }
886                 } else {
887                         setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
888                                                  SETTING_ON_OFF_BTN_OFF, &err);
889                         setting_retm_if(err != 0, "set vconf failed");
890
891                         elm_check_state_set(ad->data_roaming->eo_check, 0);
892                         ad->data_roaming->chk_status = 0;
893                 }
894         }
895
896         if (ad->popup)
897         {
898                 evas_object_del(ad->popup);
899                 ad->popup = NULL;
900         }
901 }
902