2 * Copyright 2012 Samsung Electronics Co., Ltd
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
8 * http://www.tizenopensource.org/license
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.
18 #include <setting-network-preferred-network-edit.h>
20 static int setting_network_preferred_network_edit_create(void *cb);
21 static int setting_network_preferred_network_edit_destroy(void *cb);
22 static int setting_network_preferred_network_edit_update(void *cb);
23 static int setting_network_preferred_network_edit_cleanup(void *cb);
25 setting_view setting_view_network_preferred_network_edit = {
26 .create = setting_network_preferred_network_edit_create,
27 .destroy = setting_network_preferred_network_edit_destroy,
28 .update = setting_network_preferred_network_edit_update,
29 .cleanup = setting_network_preferred_network_edit_cleanup,
32 /* ***************************************************
36 ***************************************************/
38 static int setting_network_preferred_network_edit_create(void *cb)
41 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
43 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
45 Evas_Object *scroller = NULL;
46 setting_push_layout_navi_bar_genlist(ad->win_main_layout, ad->win_get,
48 pref_list.PreffPlmnRecord
49 [ad->sel_pref_idx].network_name),
50 dgettext("sys_string",
52 dgettext("sys_string",
54 setting_network_preferred_network_edit_click_softkey_cancel_cb,
55 setting_network_preffered_network_edit_click_softkey_save_cb,
56 ad, &scroller, ad->navi_bar);
57 Elm_Object_Item *item = NULL;;
60 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
61 ELM_GENLIST_ITEM_NONE, NULL, NULL);
62 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
64 char mcc[SETTING_NETWORK_PREFERRED_NETWORK_CODE_LEN] = { 0, };
65 char mnc[SETTING_NETWORK_PREFERRED_NETWORK_CODE_LEN] = { 0, };
67 memcpy(&mcc, ad->pref_list.PreffPlmnRecord[ad->sel_pref_idx].Plmn, 3);
68 memcpy(&mnc, ad->pref_list.PreffPlmnRecord[ad->sel_pref_idx].Plmn + 3,
71 if (ad->pref_list.PreffPlmnRecord[ad->sel_pref_idx].SystemType ==
72 TAPI_NETWORK_SYSTEM_GSM) {
78 setting_create_Gendial_field_def(scroller,
79 &(ad->itc_variable_height), NULL,
80 NULL, SWALLOW_Type_LAYOUT_ENTRY,
82 "IDS_ST_BODY_COUNTRY_CODE", _(mcc),
83 setting_network_preffered_network_edit_entry_changed_cb);
84 if (ad->data_edit_mcc) {
85 ad->data_edit_mcc->userdata = ad;
86 ad->data_edit_mcc->input_type = ELM_INPUT_PANEL_LAYOUT_NUMBERONLY;
88 SETTING_TRACE_ERROR("ad->data_edit_mcc is NULL");
92 setting_create_Gendial_field_def(scroller,
93 &(ad->itc_variable_height), NULL,
94 NULL, SWALLOW_Type_LAYOUT_ENTRY,
96 "IDS_ST_BODY_NETWORK_CODE", _(mnc),
97 setting_network_preffered_network_edit_entry_changed_cb);
98 if (ad->data_edit_mnc) {
99 ad->data_edit_mnc->userdata = ad;
100 ad->data_edit_mnc->input_type = ELM_INPUT_PANEL_LAYOUT_NUMBERONLY;
102 SETTING_TRACE_ERROR("ad->data_edit_mnc is NULL");
105 (void)setting_create_Gendial_field_titleItem(scroller,
106 &(ad->itc_group_item),
107 "IDS_ST_BODY_NETWORK_TYPE",
109 ad->chk_edit_type = elm_radio_add(scroller);
110 elm_radio_state_value_set(ad->chk_edit_type, -1);
112 setting_create_Gendial_field_1radio(scroller, &(ad->itc_1text_1icon_2),
113 setting_mouse_up_Gendial_list_radio_cb,
116 ad->chk_edit_type, 0, "IDS_ST_BODY_GSM", NULL);
118 setting_create_Gendial_field_1radio(scroller, &(ad->itc_1text_1icon_2),
119 setting_mouse_up_Gendial_list_radio_cb,
122 ad->chk_edit_type, 1, "UMTS", NULL);
123 elm_radio_value_set(ad->chk_edit_type, network_type);
124 setting_view_network_preferred_network_edit.is_create = 1;
125 return SETTING_RETURN_SUCCESS;
128 static int setting_network_preferred_network_edit_destroy(void *cb)
131 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
133 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
135 elm_naviframe_item_pop(ad->navi_bar);
136 setting_view_network_preferred_network_edit.is_create = 0;
138 return SETTING_RETURN_SUCCESS;
141 static int setting_network_preferred_network_edit_update(void *cb)
143 return SETTING_RETURN_SUCCESS;
146 static int setting_network_preferred_network_edit_cleanup(void *cb)
148 return setting_network_preferred_network_edit_destroy(cb);
151 /* ***************************************************
155 ***************************************************/
157 /* ***************************************************
161 ***************************************************/
163 setting_network_preffered_network_edit_entry_changed_cb(void *data,
167 retm_if(data == NULL, "Data parameter is NULL");
168 Setting_GenGroupItem_Data *list_item =
169 (Setting_GenGroupItem_Data *) data;
170 const char *entry_str = elm_entry_entry_get(obj);
171 list_item->sub_desc = (char *)g_strdup(entry_str);
175 setting_network_preffered_network_edit_click_softkey_save_cb(void *data,
180 retm_if(data == NULL,
181 "[Setting > Network > Preferred Net] Data parameter for setting_network_preffered_network_edit_click_softkey_save_cb is NULL");
183 SettingNetworkUG *ad = (SettingNetworkUG *) data;
185 int tapi_ret = TAPI_API_SUCCESS;
186 TelNetworkPrefferedPlmnInfo_t pref_plmn_info = { 0, };
188 int network_type = 0;
189 const char *mcc = NULL;
190 const char *mnc = NULL;
191 if (ad->data_edit_mcc) {
192 mcc = ad->data_edit_mcc->sub_desc;
194 if (ad->data_edit_mnc) {
195 mnc = ad->data_edit_mnc->sub_desc;
198 setting_retm_if(isEmptyStr(mcc)
200 "mcc or mnc got from editfiled error");
201 SETTING_TRACE("mcc:%s, mnc:%s", mcc, mnc);
202 int mcc_len = safeStrLen(mcc);
203 int mnc_len = safeStrLen(mnc);
204 if (COUNTRY_CODE_LEN != mcc_len) {
205 if ((NETWORK_CODE_LEN < mnc_len) || (mnc_len <= 0)) {
206 setting_create_popup_without_btn(ad, ad->win_get,
207 _("please input country code made up of 3 digital number and network code made up of 1 ~ 3 digital number"),
208 NULL, NULL, POPUP_INTERVAL);
210 setting_create_popup_without_btn(ad, ad->win_get,
211 _("please input country code made up of 3 digital number"),
212 NULL, NULL, POPUP_INTERVAL);
217 if ((NETWORK_CODE_LEN < mnc_len) || (mnc_len <= 0)) {
218 setting_create_popup_without_btn(ad, ad->win_get,
219 _("please input network code made up of 1 ~ 3 digital number"),
220 NULL, NULL, POPUP_INTERVAL);
224 network_type = elm_radio_value_get(ad->chk_edit_type);
226 memset(&pref_plmn_info, 0x00, sizeof(TelNetworkPrefferedPlmnInfo_t));
227 memcpy(&pref_plmn_info,
228 &ad->pref_list.PreffPlmnRecord[ad->sel_pref_idx],
229 sizeof(TelNetworkPrefferedPlmnInfo_t));
231 safeCopyStr((char *)pref_plmn_info.Plmn, mcc, 3);
232 safeCopyStr((char *)pref_plmn_info.Plmn + 3, mnc, 3);
234 /* save network type */
235 if (network_type == 0) {
236 pref_plmn_info.SystemType = TAPI_NETWORK_SYSTEM_GSM;
238 pref_plmn_info.SystemType = TAPI_NETWORK_SYSTEM_UMTS;
240 setting_network_popup_create(ad, _("IDS_ST_POP_SAVING"), TRUE);
243 tel_set_network_preferred_plmn(TAPI_NETWORK_PREF_PLMN_EDIT,
244 &pref_plmn_info, &request_id);
245 if (tapi_ret != TAPI_API_SUCCESS || request_id < 0) {
247 ("%s*** [ERR] tel_set_network_preferred_plmn(PLMN_EDIT) err=%d ***%s",
248 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
249 setting_network_popup_update(ad, _("Save Failed!"), FALSE);
252 ad->op_type = SETTING_NETWORK_PREFERRED_NETWORK_EDIT;
256 setting_network_preferred_network_edit_click_softkey_cancel_cb(void *data,
261 SettingNetworkUG *ad = (SettingNetworkUG *) data;
264 retm_if(data == NULL,
265 "[Setting > Network > Preferred Net] Data parameter for setting_network_preffered_network_edit_click_softkey_save_cb is NULL");
266 ad->op_type = SETTING_NETWORK_PREFERRED_NETWORK_NONE;
267 setting_view_change(&setting_view_network_preferred_network_edit,
268 &setting_view_network_preferred_network, ad);