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-con.h>
23 static int setting_network_con_create(void *cb);
24 static int setting_network_con_destroy(void *cb);
25 static int setting_network_con_update(void *cb);
26 static int setting_network_con_cleanup(void *cb);
28 setting_view setting_view_network_con = {
29 .create = setting_network_con_create,
30 .destroy = setting_network_con_destroy,
31 .update = setting_network_con_update,
32 .cleanup = setting_network_con_cleanup,
35 /* ***************************************************
39 ***************************************************/
41 static int setting_network_con_create(void *cb)
44 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
46 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
48 Evas_Object *scroller = elm_genlist_add(ad->win_main_layout);
49 elm_object_style_set(scroller, "dialogue");
50 retvm_if(scroller == NULL, SETTING_DRAW_ERR_FAIL_SCROLLER,
51 "Cannot set scroller object as contento of layout");
52 elm_genlist_clear(scroller); /* first to clear list */
53 Evas_Object *controlbar = NULL;
55 setting_push_layout_navi_bar(CONNECTION_DSC,
56 _("IDS_COM_BODY_BACK"),
59 setting_network_con_click_softkey_cancel_cb,
60 setting_network_con_click_softkey_reset_cb,
61 setting_network_con_click_softkey_create_cb,
62 ad, scroller, ad->navi_bar, &controlbar);
63 Elm_Object_Item *item = NULL;
64 #ifndef SUPPORT_CON_RESET
65 item = elm_toolbar_last_item_get(controlbar);
66 elm_object_item_disabled_set(item, EINA_TRUE);
68 item = elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
69 ELM_GENLIST_ITEM_NONE, NULL, NULL);
70 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
72 /* scroller is a genlist */
73 setting_create_Gendial_field_def(scroller, &itc_1text,
74 setting_network_con_item_Gendial_mouse_up_cb,
75 ad, SWALLOW_Type_INVALID, NULL, NULL,
76 0, "IDS_ST_BODY_INTERNET_CONNECTION",
78 setting_create_Gendial_field_def(scroller, &itc_1text,
79 setting_network_con_item_Gendial_mouse_up_cb,
80 ad, SWALLOW_Type_INVALID, NULL, NULL,
81 0, STR_SETTING_MMS_CONNECTIONS, NULL,
84 #ifdef ENABLED_PREFERRED_NETWORKS
85 setting_create_Gendial_field_def(scroller, &itc_1text,
86 setting_network_con_item_Gendial_mouse_up_cb,
87 ad, SWALLOW_Type_INVALID, NULL, NULL,
88 0, "IDS_ST_BODY_PREFERRED_NETWORKS",
91 #ifdef ENABLED_2G3G_NETWORK
92 /* create 3g connection option */
93 setting_create_Gendial_field_def(scroller, &itc_1text,
94 setting_network_con_item_Gendial_mouse_up_cb,
95 ad, SWALLOW_Type_INVALID, NULL, NULL,
96 0, "2G/3G Connection", NULL, NULL);
99 if (NULL == ad->prof_list)
101 int err = net_get_profile_list(NET_DEVICE_CELLULAR, &(ad->prof_list), &(ad->prof_count));
102 if (err != NET_ERR_NONE) {
104 ("%s*** [ERR] Internet net_get_app_profile_id. err=%d ***%s",
105 SETTING_FONT_RED, err, SETTING_FONT_BLACK);
112 for(ci = 0;ci < ad->prof_count;ci++){
113 SETTING_TRACE_DEBUG("profList[%d].ProfileName:%s", ci,ad->prof_list[ci].ProfileName);
114 SETTING_TRACE_DEBUG("profList[%d].ProfileInfo.Pdp.ServiceType:%d", ci, ad->prof_list[ci].ProfileInfo.Pdp.ServiceType);
115 SETTING_TRACE_DEBUG("profList[%d].ProfileInfo.Pdp.Apn:%s", ci, ad->prof_list[ci].ProfileInfo.Pdp.Apn);
117 for(ci = ad->prof_count -1;ci >= 0;ci--){ //revert the sequence of profiles
119 if(NET_DEVICE_CELLULAR == ad->prof_list[ci].profile_type) {
120 if (NET_SERVICE_INTERNET != ad->prof_list[ci].ProfileInfo.Pdp.ServiceType
121 && NET_SERVICE_MMS != ad->prof_list[ci].ProfileInfo.Pdp.ServiceType) //unknow, match with ad->con_name
123 SETTING_TRACE("ad->prof_list[ci].ProfileInfo.Pdp.Apn:%s", ad->prof_list[ci].ProfileInfo.Pdp.Apn);
124 setting_create_Gendial_field_def(scroller, &itc_1text,
125 setting_network_con_item_Gendial_mouse_up_cb,
126 ad, SWALLOW_Type_INVALID, NULL, NULL,
127 0, ad->prof_list[ci].ProfileInfo.Pdp.Apn, NULL,
136 item = elm_genlist_item_append(scroller, &itc_bottom_seperator,
138 ELM_GENLIST_ITEM_NONE, NULL, NULL);
139 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
140 setting_view_network_con.is_create = 1;
142 return SETTING_RETURN_SUCCESS;
145 static int setting_network_con_destroy(void *cb)
149 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
151 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
153 elm_naviframe_item_pop(ad->navi_bar);
154 setting_view_network_con.is_create = 0;
156 return SETTING_RETURN_SUCCESS;
159 static int setting_network_con_update(void *cb)
161 setting_network_con_destroy(cb);
162 setting_network_con_create(cb);
163 return SETTING_RETURN_SUCCESS;
166 static int setting_network_con_cleanup(void *cb)
168 return setting_network_con_destroy(cb);
171 /* ***************************************************
175 ***************************************************/
177 /* ***************************************************
181 ***************************************************/
184 setting_network_con_item_Gendial_mouse_up_cb(void *data, Evas_Object *obj,
189 setting_retm_if(data == NULL, "Data parameter is NULL");
190 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
191 elm_genlist_item_selected_set(item, 0);
192 Setting_GenGroupItem_Data *list_item =
193 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
195 SettingNetworkUG *ad = (SettingNetworkUG *) data;
197 SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
200 if (!safeStrCmp("IDS_ST_BODY_SELECT_NETWORK", list_item->keyStr)) {
202 setting_view_change(&setting_view_network_main,
203 &setting_view_network_select_network,
206 #ifdef ENABLED_PREFERRED_NETWORKS
207 else if (!safeStrCmp("IDS_ST_BODY_PREFERRED_NETWORKS",
208 list_item->keyStr)) {
213 setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value,
215 /** @todo check 'err' variable for exception handling */
216 SETTING_TRACE("INT_SLP_SETTING_SIM_SLOT value:%d", value);
218 case VCONFKEY_TELEPHONY_SIM_INSERTED:
219 /* To Recreate the view in order to search the perferred network again. */
220 /* ret = setting_view_destroy(&setting_view_network_preferred_network, ad); */
222 setting_view_change(&setting_view_network_main,
223 &setting_view_network_preferred_network,
228 case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
230 setting_create_simple_popup(NULL, ad->win_get,
231 NULL, _("IDS_ST_SECURITY_BODY_NOIMSI"));
233 ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
234 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
239 case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
240 case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
242 setting_create_simple_popup(NULL, ad->win_get,
243 NULL, _("IDS_COM_BODY_INVALID_SIM_CARD"));
245 ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
246 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
251 SETTING_TRACE("Unknown SIM information from vconf");
256 #ifdef ENABLED_2G3G_NETWORK
257 else if (!safeStrCmp("2G/3G Connection", list_item->keyStr)) {
259 setting_view_change(&setting_view_network_main,
260 &setting_view_network_3gcon, ad);
263 else {//connections..
264 ad->con_name = strdup(list_item->keyStr);
265 ret = setting_view_change(&setting_view_network_main,
266 &setting_view_network_connection_create,
272 setting_network_con_click_softkey_reset_cb(void *data, Evas_Object *obj, void *event_info)
276 retm_if(data == NULL, "Data parameter is NULL");
278 SettingNetworkUG *ad = (SettingNetworkUG *) data;
279 //Reset connections info..
280 excuteCmd("/usr/bin/dbus-send", 1, NET_CON_RESET_DBUS_PARA);
281 setting_create_simple_popup(ad, ad->win_get, NULL, _("IDS_COM_POP_SUCCESS"));
285 setting_network_con_click_softkey_create_cb(void *data, Evas_Object *obj,
289 retm_if(data == NULL, "Data parameter is NULL");
291 SettingNetworkUG *ad = (SettingNetworkUG *) data;
293 //setting_create_simple_popup(ad, ad->win_get, NULL, _("UX Undefined"));
296 //to add a new connection
298 ad->con_name = strdup(STR_SETTING_NEW_CONNECTIONS);
299 setting_view_change(&setting_view_network_main, &setting_view_network_connection_create, ad);
303 setting_network_con_click_softkey_cancel_cb(void *data, Evas_Object *obj,
307 retm_if(data == NULL, "Data parameter is NULL");
309 SettingNetworkUG *ad = (SettingNetworkUG *) data;
311 setting_view_change(&setting_view_network_con,
312 &setting_view_network_main, ad);