3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Flora License, Version 1.0 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://floralicense.org/license/
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an AS IS BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 #include <setting-network-con.h>
19 static int setting_network_con_create(void *cb);
20 static int setting_network_con_destroy(void *cb);
21 static int setting_network_con_update(void *cb);
22 static int setting_network_con_cleanup(void *cb);
24 setting_view setting_view_network_con = {
25 .create = setting_network_con_create,
26 .destroy = setting_network_con_destroy,
27 .update = setting_network_con_update,
28 .cleanup = setting_network_con_cleanup,
31 /* ***************************************************
35 ***************************************************/
37 static int setting_network_con_create(void *cb)
40 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
42 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
44 Evas_Object *scroller = elm_genlist_add(ad->win_main_layout);
45 elm_object_style_set(scroller, "dialogue");
46 retvm_if(scroller == NULL, SETTING_DRAW_ERR_FAIL_SCROLLER,
47 "Cannot set scroller object as contento of layout");
48 elm_genlist_clear(scroller); /* first to clear list */
50 setting_push_layout_navi_bar(_(CONNECTION_DSC),
51 _("IDS_COM_BODY_BACK"),
54 setting_network_con_click_softkey_cancel_cb,
55 setting_network_con_click_softkey_reset_cb,
56 setting_network_con_click_softkey_create_cb,
57 ad, scroller, ad->navi_bar, NULL);
58 Elm_Object_Item *item = NULL;
59 item = elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
60 ELM_GENLIST_ITEM_NONE, NULL, NULL);
61 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
63 /* scroller is a genlist */
64 setting_create_Gendial_field_def(scroller, &itc_1text,
65 setting_network_con_item_Gendial_mouse_up_cb,
66 ad, SWALLOW_Type_INVALID, NULL, NULL,
67 0, "IDS_ST_BODY_INTERNET_CONNECTION",
69 setting_create_Gendial_field_def(scroller, &itc_1text,
70 setting_network_con_item_Gendial_mouse_up_cb,
71 ad, SWALLOW_Type_INVALID, NULL, NULL,
72 0, STR_SETTING_MMS_CONNECTIONS, NULL,
75 #ifdef ENABLED_PREFERRED_NETWORKS
76 setting_create_Gendial_field_def(scroller, &itc_1text,
77 setting_network_con_item_Gendial_mouse_up_cb,
78 ad, SWALLOW_Type_INVALID, NULL, NULL,
79 0, "IDS_ST_BODY_PREFERRED_NETWORKS",
82 #ifdef ENABLED_2G3G_NETWORK
83 /* create 3g connection option */
84 setting_create_Gendial_field_def(scroller, &itc_1text,
85 setting_network_con_item_Gendial_mouse_up_cb,
86 ad, SWALLOW_Type_INVALID, NULL, NULL,
87 0, "2G/3G Connection", NULL, NULL);
90 connection_profile_iterator_h profile_iter = NULL;
91 connection_profile_h profile_h = NULL;
93 char *profile_name = NULL;
95 connection_profile_type_e profile_type = CONNECTION_PROFILE_TYPE_CELLULAR;
96 connection_cellular_service_type_e service_type = CONNECTION_CELLULAR_SERVICE_TYPE_UNKNOWN;
98 int rv = connection_get_profile_iterator(ad->connection, CONNECTION_ITERATOR_TYPE_REGISTERED, &profile_iter);
99 if (rv != CONNECTION_ERROR_NONE) {
100 SETTING_TRACE_ERROR("Fail to get profile iterator [%d]", rv);
105 #ifndef SUPPORT_REVERSED_ORDER
106 Elm_Object_Item *last_item = elm_genlist_item_append(scroller, &itc_bottom_seperator,
108 ELM_GENLIST_ITEM_NONE, NULL, NULL);
109 elm_genlist_item_select_mode_set(last_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
110 Setting_GenGroupItem_Data *item_data = NULL;
113 while (connection_profile_iterator_has_next(profile_iter)) {
114 if (cnt >= MAX_PROFILE_NUM)
118 if (connection_profile_iterator_next(profile_iter, &profile_h) != CONNECTION_ERROR_NONE) {
119 SETTING_TRACE_ERROR("Fail to get profile handle");
123 if (connection_profile_get_type(profile_h, &profile_type) != CONNECTION_ERROR_NONE) {
124 SETTING_TRACE_ERROR("Fail to get profile type");
127 if (connection_profile_get_cellular_service_type(profile_h, &service_type) != CONNECTION_ERROR_NONE) {
128 SETTING_TRACE_ERROR("Fail to get service type");
132 if (connection_profile_get_name(profile_h, &profile_name) != CONNECTION_ERROR_NONE) {
133 SETTING_TRACE_ERROR("Fail to get profile name");
137 if (connection_profile_get_cellular_apn(profile_h, &apn) != CONNECTION_ERROR_NONE) {
138 SETTING_TRACE_ERROR("Fail to get apn");
139 G_FREE(profile_name);
143 SETTING_TRACE("Record[%d:%s], profile_name:%s, profile_type:%d, service_type:%d",
144 cnt, apn, profile_name, profile_type, service_type);
145 if(CONNECTION_PROFILE_TYPE_CELLULAR != profile_type)
148 G_FREE(profile_name);
151 if (CONNECTION_CELLULAR_SERVICE_TYPE_MMS != service_type
152 && CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET != service_type) //unknow, match with ad->con_name
154 #ifdef SUPPORT_REVERSED_ORDER
155 setting_create_Gendial_field_def(scroller, &itc_1text,
156 setting_network_con_item_Gendial_mouse_up_cb,
157 ad, SWALLOW_Type_INVALID, NULL, NULL,
161 item_data = calloc(1, sizeof(Setting_GenGroupItem_Data));
162 setting_retvm_if(!item_data, SETTING_RETURN_FAIL, "calloc failed");
163 item_data->keyStr = (char *)g_strdup(apn);
164 item_data->swallow_type = SWALLOW_Type_INVALID;
165 item_data->item = elm_genlist_item_insert_before(scroller,
166 &itc_1text, item_data, NULL, last_item,
167 ELM_GENLIST_ITEM_NONE,
168 setting_network_con_item_Gendial_mouse_up_cb,ad);
169 last_item = item_data->item;
173 G_FREE(profile_name);
177 #ifdef SUPPORT_REVERSED_ORDER
179 item = elm_genlist_item_append(scroller, &itc_bottom_seperator,
181 ELM_GENLIST_ITEM_NONE, NULL, NULL);
182 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
184 setting_view_network_con.is_create = 1;
186 return SETTING_RETURN_SUCCESS;
189 static int setting_network_con_destroy(void *cb)
193 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
195 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
197 elm_naviframe_item_pop(ad->navi_bar);
198 setting_view_network_con.is_create = 0;
200 return SETTING_RETURN_SUCCESS;
203 static int setting_network_con_update(void *cb)
205 setting_network_con_destroy(cb);
206 setting_network_con_create(cb);
207 return SETTING_RETURN_SUCCESS;
210 static int setting_network_con_cleanup(void *cb)
212 return setting_network_con_destroy(cb);
215 /* ***************************************************
219 ***************************************************/
221 /* ***************************************************
225 ***************************************************/
228 setting_network_con_item_Gendial_mouse_up_cb(void *data, Evas_Object *obj,
233 setting_retm_if(data == NULL, "Data parameter is NULL");
234 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
235 elm_genlist_item_selected_set(item, 0);
236 Setting_GenGroupItem_Data *list_item =
237 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
239 SettingNetworkUG *ad = (SettingNetworkUG *) data;
241 SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
244 if (!safeStrCmp("IDS_ST_BODY_SELECT_NETWORK", list_item->keyStr)) {
246 setting_view_change(&setting_view_network_main,
247 &setting_view_network_select_network,
250 #ifdef ENABLED_PREFERRED_NETWORKS
251 else if (!safeStrCmp("IDS_ST_BODY_PREFERRED_NETWORKS",
252 list_item->keyStr)) {
257 setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value,
259 /** @todo check 'err' variable for exception handling */
260 SETTING_TRACE("INT_SLP_SETTING_SIM_SLOT value:%d", value);
262 case VCONFKEY_TELEPHONY_SIM_INSERTED:
263 /* To Recreate the view in order to search the perferred network again. */
264 /* ret = setting_view_destroy(&setting_view_network_preferred_network, ad); */
266 setting_view_change(&setting_view_network_main,
267 &setting_view_network_preferred_network,
272 case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
274 setting_create_simple_popup(NULL, ad->win_get,
275 NULL, _("IDS_ST_SECURITY_BODY_NOIMSI"));
277 ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
278 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
283 case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
284 case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
286 setting_create_simple_popup(NULL, ad->win_get,
287 NULL, _("IDS_COM_BODY_INVALID_SIM_CARD"));
289 ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
290 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
295 SETTING_TRACE("Unknown SIM information from vconf");
300 #ifdef ENABLED_2G3G_NETWORK
301 else if (!safeStrCmp("2G/3G Connection", list_item->keyStr)) {
303 setting_view_change(&setting_view_network_main,
304 &setting_view_network_3gcon, ad);
307 else {//connections..
308 ad->con_name = strdup(list_item->keyStr);
309 ret = setting_view_change(&setting_view_network_main,
310 &setting_view_network_connection_create,
316 setting_network_con_click_softkey_reset_cb(void *data, Evas_Object *obj, void *event_info)
320 retm_if(data == NULL, "Data parameter is NULL");
322 SettingNetworkUG *ad = (SettingNetworkUG *) data;
323 //Reset connections info..
324 excuteCmd("/usr/bin/dbus-send", 1, NET_CON_RESET_DBUS_PARA);
325 setting_create_simple_popup(ad, ad->win_get, NULL, _("IDS_COM_POP_SUCCESS"));
327 setting_network_con_update(ad);
331 setting_network_con_click_softkey_create_cb(void *data, Evas_Object *obj,
335 retm_if(data == NULL, "Data parameter is NULL");
337 SettingNetworkUG *ad = (SettingNetworkUG *) data;
339 //setting_create_simple_popup(ad, ad->win_get, NULL, _("UX Undefined"));
342 //to add a new connection
344 ad->con_name = strdup(STR_SETTING_NEW_CONNECTIONS);
345 setting_view_change(&setting_view_network_main, &setting_view_network_connection_create, ad);
349 setting_network_con_click_softkey_cancel_cb(void *data, Evas_Object *obj,
353 retm_if(data == NULL, "Data parameter is NULL");
355 SettingNetworkUG *ad = (SettingNetworkUG *) data;
357 setting_view_change(&setting_view_network_con,
358 &setting_view_network_main, ad);