4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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.
21 #include <setting-network-select-network.h>
23 static int setting_network_select_network_create(void *cb);
24 static int setting_network_select_network_destroy(void *cb);
25 static int setting_network_select_network_update(void *cb);
26 static int setting_network_select_network_cleanup(void *cb);
28 setting_view setting_view_network_select_network = {
29 .create = setting_network_select_network_create,
30 .destroy = setting_network_select_network_destroy,
31 .update = setting_network_select_network_update,
32 .cleanup = setting_network_select_network_cleanup,
35 /* ***************************************************
39 ***************************************************/
41 static int setting_network_select_network_create(void *cb)
44 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
46 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
48 setting_push_layout_navi_bar_genlist(ad->win_main_layout, ad->win_get,
49 _("IDS_ST_BODY_SELECT_NETWORK"),
50 _("IDS_COM_BODY_BACK"),
52 setting_network_select_network_click_softkey_cancel_cb,
54 ad, &ad->genlist_sel_network, ad->navi_bar);
56 Elm_Object_Item *item = elm_genlist_item_append(ad->genlist_sel_network,
57 &(itc_seperator), NULL, NULL,
58 ELM_GENLIST_ITEM_NONE, NULL, NULL);
59 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
61 /* scroller is a genlist */
62 ad->chk_sel = elm_radio_add(ad->genlist_sel_network);
63 elm_radio_state_value_set(ad->chk_sel, -1);
64 vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &ad->sel_net);//retrieve here
65 SETTING_TRACE("ad->sel_net:%d", ad->sel_net);
67 vconf_get_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, &ad->sel_act);//retrieve here
68 SETTING_TRACE("ad->sel_act:%d", ad->sel_act);
70 FREE(ad->sel_network);
71 ad->sel_network = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
72 SETTING_TRACE("pa_sel_net_name:%s", ad->sel_network);
73 if (isEmptyStr(ad->sel_network)) {
74 ad->sel_network = strndup("IDS_ST_BODY_NOSERVICE", strlen("IDS_ST_BODY_NOSERVICE")+1);
77 if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net) {
78 ad->data_auto_network_item = setting_create_Gendial_field_1radio(
79 ad->genlist_sel_network,
81 setting_network_Gendial_select_plmn_cb,
82 ad, SWALLOW_Type_1TOGGLE,
84 "IDS_COM_BODY_AUTOMATIC",
85 setting_network_select_network_chk_changed);
86 setting_retvm_if(NULL == ad->data_auto_network_item,
87 SETTING_RETURN_FAIL, "Failed to calloc memory");
88 ad->data_auto_network_item->sub_desc = (char *)g_strdup(_(ad->sel_network));
89 ad->data_auto_network_item->userdata = ad;
91 } else if(TAPI_NETWORK_SELECTIONMODE_MANUAL == ad->sel_net) {
94 tapi_ret = tel_search_network(ad->handle, setting_tapi_search_network_cb, ad); //ASYNC API - TAPI_EVENT_NETWORK_SEARCH_CNF
95 if(tapi_ret != TAPI_API_SUCCESS) { // error handling..
96 SETTING_TRACE_DEBUG("%s*** [ERR] tel_search_network. tapi_ret=%d ***%s", SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
97 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(STR_SETTING_OPERATION_FAILED), NULL, POPUP_INTERVAL, FALSE, FALSE);
98 // put error handler on the end of this function.
101 ad->b_searching_network = TRUE;
103 ad->data_auto_network_item = setting_create_Gendial_field_1radio(
104 ad->genlist_sel_network,
105 &(itc_2text_1icon_7),
106 setting_network_Gendial_select_plmn_cb,
107 ad, SWALLOW_Type_1TOGGLE,
108 NULL, FALSE, "IDS_COM_BODY_AUTOMATIC",
109 setting_network_select_network_chk_changed);
110 setting_retvm_if(NULL == ad->data_auto_network_item,
111 SETTING_RETURN_FAIL, "Failed to calloc memory");
112 ad->data_auto_network_item->sub_desc = (char *)g_strdup(ad->sel_network);//just a simple display
113 ad->data_auto_network_item->userdata = ad;
114 if (0 != safeStrCmp("IDS_ST_BODY_NOSERVICE", ad->sel_network)
115 && 0 != safeStrCmp("EMERGENCY", ad->sel_network))
118 Setting_GenGroupItem_Data *item_Data = NULL;
120 char sel_network_desc[MAX_COMMON_BUFFER_LEN] = { 0, };
121 snprintf(sel_network_desc, MAX_COMMON_BUFFER_LEN, "%s (%s)",
122 _(ad->sel_network),setting_network_get_act_str(ad->sel_act));
124 item_Data = setting_create_Gendial_field_1radio(
125 ad->genlist_sel_network,
127 setting_network_Gendial_select_plmn_cb, ad,
129 ad->chk_sel, TAPI_NETWORK_SELECTIONMODE_MANUAL,
131 setting_network_select_network_chk_changed);
132 setting_retvm_if(NULL == item_Data, SETTING_RETURN_FAIL, "Failed to calloc memory");
133 item_Data->userdata = ad;
135 ad->data_search_network_item = setting_create_Gendial_field_1radio(
136 ad->genlist_sel_network,
139 SWALLOW_Type_1RADIO_1SEARCH,
140 ad->chk_sel, -1, NULL, NULL);
142 elm_radio_value_set(ad->chk_sel, TAPI_NETWORK_SELECTIONMODE_MANUAL);
148 ad->data_search_network_item = setting_create_Gendial_field_1radio(
149 ad->genlist_sel_network,
152 SWALLOW_Type_1RADIO_1SEARCH,
153 ad->chk_sel, -1, NULL, NULL);
158 setting_view_network_select_network.is_create = TRUE;
159 return SETTING_RETURN_SUCCESS;
162 setting_view_network_select_network.is_create = TRUE;
163 return SETTING_RETURN_FAIL;
166 static int setting_network_select_network_destroy(void *cb)
170 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
172 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
173 //cancel the searching operation
174 if (ad->b_searching_network) {
176 tapi_ret = tel_cancel_network_manual_search(ad->handle, setting_tapi_cancel_manual_search_cb, ad);
177 if (tapi_ret != TAPI_API_SUCCESS) {
178 SETTING_TRACE_ERROR("*** [ERR] tel_cancel_network_manual_search. "\
179 "tapi_ret=%d ***", tapi_ret);
181 ad->b_searching_network = FALSE;
184 if (0 != vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &ad->sel_net)) {
185 SETTING_TRACE_ERROR("vconf get failed");
188 if (0 != vconf_get_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, &ad->sel_act)) {
189 SETTING_TRACE_ERROR("vconf get failed");
192 FREE(ad->sel_network);
193 ad->sel_network = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
194 if (isEmptyStr(ad->sel_network)) {
195 ad->sel_network = strndup("IDS_ST_BODY_NOSERVICE", strlen("IDS_ST_BODY_NOSERVICE")+1);
199 ad->b_set_manul_network = FALSE;
200 ad->b_set_auto_network = FALSE;
201 setting_network_update_sel_network(ad);
203 elm_naviframe_item_pop(ad->navi_bar);
205 //Following handlers will be used by async listening callback. They must be reset after genlist is 'popuped'.
206 ad->data_auto_network_item = NULL;
207 //data_sel_net was created in main view, it won't be destoryed.
208 //ad->data_sel_net = NULL;
209 setting_view_network_select_network.is_create = FALSE;
211 return SETTING_RETURN_SUCCESS;
214 static int setting_network_select_network_update(void *cb)
218 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
220 //SettingNetworkUG *ad = (SettingNetworkUG *) cb;
221 //elm_radio_value_set(ad->chk_sel, ad->sel_net);
223 return SETTING_RETURN_SUCCESS;
226 static int setting_network_select_network_cleanup(void *cb)
229 return setting_network_select_network_destroy(cb);
232 /* ***************************************************
236 ***************************************************/
238 /* ***************************************************
242 ***************************************************/
245 setting_network_select_network_click_softkey_cancel_cb(void *data,
250 retm_if(data == NULL,
251 "[Setting > Network > Select] Data parameter is NULL");
253 SettingNetworkUG *ad = (SettingNetworkUG *) data;
255 setting_view_change(&setting_view_network_select_network,
256 &setting_view_network_main, ad);