fix for applying wayland (removing X)
[apps/home/settings.git] / setting-network / src / setting-network-con-list.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-con-list.h>
22
23 static int setting_network_con_list_create(void *cb);
24 static int setting_network_con_list_destroy(void *cb);
25 static int setting_network_con_list_update(void *cb);
26 static int setting_network_con_list_cleanup(void *cb);
27 void setting_network_con_list_chk_changed(void *data, Evas_Object *obj, void *event_info);
28
29 setting_view setting_view_network_con_list = {
30         .create = setting_network_con_list_create,
31         .destroy = setting_network_con_list_destroy,
32         .update = setting_network_con_list_update,
33         .cleanup = setting_network_con_list_cleanup,
34 };
35
36
37 /**
38  *  3
39  */
40 #if SUPPORT_TETHERING
41 static int __get_naviframe_depth_con_list(void *data)
42 {
43         SettingNetworkUG *ad = (SettingNetworkUG *) data;
44
45         Eina_List *list = elm_naviframe_items_get(ad->navi_bar);
46         /*Object_Drawer *list_item = NULL; */
47
48         int index = 0;
49         while (list) {
50                 Elm_Object_Item *item = (Elm_Object_Item *) eina_list_data_get(list);
51                 if (NULL == item)
52                         continue;
53
54                 SETTING_TRACE("ad->navi_bar : %x ---  %d --- address of the item = %x", ad->navi_bar, index, item);
55                 index += 1;
56
57                 /*if not matched,to check next node. */
58                 list = eina_list_next(list);
59                 item = NULL;
60         }
61         return index;
62 }
63
64 static void __popup_cb(void *data, Evas_Object *obj, void *event_info)
65 {
66         SETTING_TRACE_BEGIN;
67         setting_retm_if(NULL == data, "NULL == data");
68         SettingNetworkUG *ad = (SettingNetworkUG *) data;
69         int response_type = POPUP_RESPONSE_CANCEL;
70         if (0 == safeStrCmp(elm_object_text_get(obj), "OK")) {
71                 response_type = POPUP_RESPONSE_OK;
72         }
73         evas_object_del(ad->popup_conlist);
74         ad->popup_conlist = NULL;
75
76         if (POPUP_RESPONSE_OK == response_type) {
77                 setting_view_destroy(&setting_view_network_con_list, ad);
78                 setting_view_destroy(&setting_view_network_con, ad);
79         }
80 }
81 /**
82  * HERE
83  */
84
85 static void __enabled_tethering(void *data)
86 {
87         SettingNetworkUG *ad = (SettingNetworkUG *) data;
88         SETTING_TRACE("Tethering is enabled -- callback\n");
89
90         int frames =  __get_naviframe_depth_con_list(ad);
91         if (frames == 3) {
92                 /* create a popup */
93                 ad->popup_conlist = setting_create_popup_with_btn(ad, ad->win_get,
94                                                                   NULL, _(SETTING_NETWORK_NOT_ALLOWED_WITH_TETHERING),
95                                                                   __popup_cb, 0, 1, "OK");
96         }
97 }
98
99 static void __disabled_tethering(void *data)
100 {
101         SETTING_TRACE("Tethering is disabled -- callback\n");
102         /*setting_enable_genlist_item(ad->data_connection->item); */
103 }
104
105 static void __enabled_cb(tethering_error_e error, tethering_type_e type, bool is_requested, void *data)
106 {
107         SETTING_TRACE_BEGIN;
108         SettingNetworkUG *ad = (SettingNetworkUG *) data;
109         SETTING_TRACE("Tethering is enabled -- callback\n");
110         __enabled_tethering(ad);
111 }
112
113 static void __disabled_cb(tethering_error_e error, tethering_type_e type, tethering_disabled_cause_e code, void *data)
114 {
115         SETTING_TRACE_BEGIN;
116         SettingNetworkUG *ad = (SettingNetworkUG *) data;
117         SETTING_TRACE("Tethering is disabled -- callback\n");
118         __disabled_tethering(ad);
119 }
120
121 /**
122  * DOCOMO required
123  * if tethering is ON, 'connection' should be inactivated.
124  */
125 static bool is_tethering_enabled(void *data)
126 {
127         SettingNetworkUG *ad = (SettingNetworkUG *) data;
128
129         bool ret = false;
130         tethering_h th = NULL;
131         (void) tethering_create(&th);
132
133         ad->th_conlists = th;
134
135         tethering_set_enabled_cb(th, TETHERING_TYPE_ALL, __enabled_cb, data);
136         tethering_set_disabled_cb(th, TETHERING_TYPE_ALL, __disabled_cb, data);
137
138         if (tethering_is_enabled(th, TETHERING_TYPE_WIFI) == true ||
139             tethering_is_enabled(th, TETHERING_TYPE_USB) == true ||
140             tethering_is_enabled(th, TETHERING_TYPE_BT) == true) {
141
142                 SETTING_TRACE("Tethering is enabled\n");
143                 __enabled_tethering(ad);
144                 ret = true;
145         } else {
146                 SETTING_TRACE("Tethering is not enabled\n");
147                 __disabled_tethering(ad);
148                 ret = false;;
149         }
150
151         /*tethering_destroy(th); */
152         return ret;
153 }
154 #endif
155
156 /* ***************************************************
157  *
158  *basic func
159  *
160  ***************************************************/
161 static int __con_list_recreate(void *cb)
162 {
163         SETTING_TRACE_BEGIN;
164         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
165         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
166         Evas_Object *scroller;
167         scroller = ad->con_list_gl;
168         elm_genlist_clear(scroller);    /* first to clear list */
169         Elm_Object_Item *first_item;
170         /* item = elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL); */
171         first_item = elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
172                                              ELM_GENLIST_ITEM_NONE, NULL, NULL);
173         elm_genlist_item_select_mode_set(first_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
174
175         Evas_Object *radio;
176         Setting_GenGroupItem_Data *item_data = NULL;
177
178         radio = elm_radio_add(scroller);
179         elm_radio_state_value_set(radio, -1);
180         ad->rdg = radio;
181         setting_disable_evas_object(radio);
182
183         int srvType = ad->profile_service_type;
184
185         char *def_apn = NULL;
186         char *def_name = NULL;
187         char *def_id = NULL;
188         connection_profile_h def_profile = NULL;
189         (void) connection_get_default_cellular_service_profile(ad->connection, srvType, &def_profile);
190         if (def_profile) connection_profile_get_cellular_apn(def_profile, &def_apn);
191         if (def_profile) connection_profile_get_name(def_profile, &def_name);
192         if (def_profile) connection_profile_get_id(def_profile, &def_id);
193         SETTING_TRACE("Default profile:%p, def_apn[%s], def_name[%s], def_id[%s]", def_profile, def_apn, def_name, def_id);
194
195         setting_network_reget_profile_list(ad);
196
197         Eina_List *elist = NULL;
198         connection_profile_h profile_h = NULL;
199         int idx = 0;
200         char *id = NULL;
201         ad->selected_profile = NULL;
202         char *apn;
203         char *name;
204         char *proxy_address;
205         EINA_LIST_FOREACH(ad->profile_list, elist, profile_h) {
206                 apn = name = NULL;
207                 connection_profile_get_cellular_apn(profile_h, &apn);
208                 connection_profile_get_name(profile_h, &name);
209                 connection_profile_get_proxy_address(profile_h, CONNECTION_ADDRESS_FAMILY_IPV4, &proxy_address);
210                 connection_profile_get_id(profile_h, &id);
211
212
213                 item_data = (Setting_GenGroupItem_Data *) calloc(1, sizeof(Setting_GenGroupItem_Data));
214                 setting_retvm_if(!item_data, SETTING_RETURN_FAIL, "calloc failed");
215                 item_data->keyStr = (char *)g_strdup(name);
216                 item_data->swallow_type = SWALLOW_Type_1RADIO_1BTN;
217                 item_data->r_swallow_path = (char *)g_strdup("reveal/extended");
218                 item_data->chk_status = idx;
219                 item_data->chk_change_cb = setting_network_con_list_chk_changed;
220                 item_data->stop_change_cb = setting_network_con_list_go_button_cb;
221                 item_data->rgd = radio;
222                 item_data->userdata = ad;
223                 item_data->sub_desc = (char *)g_strdup(apn);
224                 item_data->keyStr2 = (char *)g_strdup(id);
225                 if (idx == 0) {
226                         ad->selected_profile = item_data; /*defaulty,it the first item */
227                         item_data->group_style = SETTING_GROUP_STYLE_TOP;
228                 } else
229                         item_data->group_style = SETTING_GROUP_STYLE_CENTER;
230
231                 item_data->item =
232                     elm_genlist_item_append(scroller, &(itc_2text_2icon_3), item_data, NULL,
233                                             ELM_GENLIST_ITEM_NONE,
234                                             setting_network_con_list_item_Gendial_mouse_up_cb, ad);
235                 if (idx == 0)
236                         setting_genlist_item_groupstyle_set(item_data, SETTING_GROUP_STYLE_TOP);
237                 else
238                         setting_genlist_item_groupstyle_set(item_data, SETTING_GROUP_STYLE_CENTER);
239
240                 SETTING_TRACE("profile_h:%p, apn:%s, id:%s", profile_h, apn, id);
241                 if (!safeStrCmp(def_apn, apn) && !safeStrCmp(def_name, name) && !safeStrCmp(def_id, id)) {
242                         SETTING_TRACE("Matched [idx:%d, apn:%s, id:%s]!", idx, apn, id);
243                         if (srvType == CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET) {
244                                 ad->selected_profile = item_data; /*the selected item */
245                                 elm_radio_value_set(radio, idx);
246                                 if (ad->internet_conn) {
247                                         G_FREE(ad->internet_conn->sub_desc);
248                                         FREE(ad->apn_internet);
249                                         ad->apn_internet = strdup(name);
250                                         ad->internet_conn->sub_desc = strdup(name);
251                                         elm_object_item_data_set(ad->internet_conn->item, ad->internet_conn);
252                                         elm_genlist_item_update(ad->internet_conn->item);
253                                 }
254                         }
255                 }
256
257                 G_FREE(apn);
258                 G_FREE(name);
259                 G_FREE(proxy_address);
260                 G_FREE(id);
261                 idx++;
262         }
263         ADD_GL_SEPARATOR(scroller);
264
265         setting_genlist_item_groupstyle_set(item_data, SETTING_GROUP_STYLE_BOTTOM);
266         SETTING_TRACE("idx:%d", idx);
267         Evas_Object *toolbar = elm_object_item_part_content_get(ad->navi_it_con_list, "toolbar");
268         SETTING_TRACE("elm_object_text_get(del_btn):%s", elm_object_item_text_get(elm_toolbar_last_item_get(toolbar)));
269         if (idx == 1) {
270                 setting_genlist_item_groupstyle_set(item_data, SETTING_GROUP_STYLE_NONE);
271                 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_FALSE);
272         } else if (idx > 1) {
273                 setting_genlist_item_groupstyle_set(item_data, SETTING_GROUP_STYLE_BOTTOM);
274                 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_FALSE);
275         } else {
276                 FREE(ad->apn_internet);
277                 SETTING_TRACE("To disable");
278                 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_TRUE);
279         }
280         if (srvType == CONNECTION_CELLULAR_SERVICE_TYPE_MMS) {
281                 if (idx > 0) elm_radio_value_set(radio, 0);/*the first one */
282                 if (ad->selected_profile && !isEmptyStr(ad->selected_profile->keyStr) && ad->mms_conn) {
283                         SETTING_TRACE("ad->selected_profile->keyStr:%s", ad->selected_profile->keyStr);
284                         G_FREE(ad->mms_conn->sub_desc);
285                         FREE(ad->apn_MMS);
286                         ad->apn_MMS = strdup(ad->selected_profile->keyStr);
287                         ad->mms_conn->sub_desc = strdup(ad->selected_profile->keyStr);
288                         elm_genlist_item_fields_update(ad->mms_conn->item, "*", ELM_GENLIST_ITEM_FIELD_TEXT);
289                 }
290         }
291         ad->cur_profile_num = idx;
292         /*if (0 == idx) */
293         /*      setting_create_simple_popup(ad, ad->navi_bar,NULL, "There is no avaiable profile,you can create one."); */
294
295         SETTING_TRACE_END;
296         G_FREE(def_id);
297         G_FREE(def_apn);
298         G_FREE(def_name);
299         return SETTING_RETURN_SUCCESS;
300 }
301
302 static int setting_network_con_list_create(void *cb)
303 {
304         SETTING_TRACE_BEGIN;
305         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
306
307         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
308
309         Evas_Object *scroller = elm_genlist_add(ad->win_main_layout);
310         retvm_if(scroller == NULL, SETTING_DRAW_ERR_FAIL_SCROLLER,
311                  "Cannot set scroller object  as contento of layout");
312         //elm_genlist_realization_mode_set(scroller, EINA_TRUE);
313         elm_object_style_set(scroller, "dialogue");
314
315         const char *title = NULL;
316         switch (ad->profile_service_type) {
317                 case CONNECTION_CELLULAR_SERVICE_TYPE_MMS:
318                         title = "IDS_ST_BODY_MMS_CONNECTIONS";
319                         break;
320                 case CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET:
321                         title = "IDS_ST_BODY_INTERNET_CONNECTION";
322                         break;
323                 default:
324                         title = ad->con_name;
325                         break;
326         }
327
328         ad->navi_it_con_list =
329             setting_push_layout_navi_bar(_(title),
330                                          _("IDS_ST_BUTTON_BACK"),
331                                          _("IDS_ST_BODY_DELETE"),
332                                          _("IDS_ST_BODY_MYTHEME_CREATE"),
333                                          NULL,
334                                          setting_network_con_list_click_softkey_delete_cb,
335                                          setting_network_con_list_click_softkey_create_cb,
336                                          ad, scroller, ad->navi_bar, NULL);
337
338         elm_naviframe_item_pop_cb_set(ad->navi_it_con_list,
339                                       setting_network_con_list_click_softkey_cancel_cb, ad);
340         evas_object_smart_callback_add(scroller, "realized", __gl_realized_cb, NULL);
341         ad->con_list_gl = scroller;
342         __con_list_recreate(ad);
343
344 #if SUPPORT_TETHERING
345         is_tethering_enabled(ad);
346 #endif
347         setting_view_network_con_list.is_create = 1;
348         SETTING_TRACE_END;
349         return SETTING_RETURN_SUCCESS;
350 }
351
352 static int setting_network_con_list_destroy(void *cb)
353 {
354         SETTING_TRACE_BEGIN;
355         /* error check */
356         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
357
358         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
359         if (setting_view_network_con_list.is_create) {
360                 /*ad->connections_gl = NULL; */
361 #if SUPPORT_TETHERING
362                 if (ad->th_conlists) {
363                         SETTING_TRACE("tethering destruction ");
364                         tethering_destroy(ad->th_conlists);
365                         ad->th_conlists = NULL;
366                 }
367 #endif
368                 setting_view_network_con_list.is_create = 0;
369                 ad->selected_profile = NULL;
370                 ad->navi_it_con_list = NULL;
371                 ad->con_list_gl = NULL;
372                 elm_naviframe_item_pop(ad->navi_bar);
373         } else {
374                 SETTING_TRACE("why is this is_create == 0 ?? !!!");
375         }
376         return SETTING_RETURN_SUCCESS;
377 }
378
379 static int setting_network_con_list_update(void *cb)
380 {
381         SETTING_TRACE_BEGIN;
382         /* error check */
383         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
384         __con_list_recreate(cb);
385         return SETTING_RETURN_SUCCESS;
386 }
387
388 static int setting_network_con_list_cleanup(void *cb)
389 {
390         SETTING_TRACE_BEGIN;
391         return setting_network_con_list_destroy(cb);
392         /*return SETTING_RETURN_SUCCESS; */
393 }
394
395 /* ***************************************************
396  *
397  *general func
398  *
399  ***************************************************/
400
401 /* ***************************************************
402  *
403  *call back func
404  *
405  ***************************************************/
406 static void setting_network_con_list_go_button_cb(void *data, Evas_Object *obj, void *event_info)
407 {
408         SETTING_TRACE_BEGIN;
409         retm_if(data == NULL, "Data parameter is NULL");
410         Setting_GenGroupItem_Data *item_data = data;
411
412         SettingNetworkUG *ad = item_data->userdata;
413         FREE(ad->access_name);
414         ad->access_name = strdup(item_data->keyStr2);
415         setting_view_change(&setting_view_network_con_list, &setting_view_network_connection_create, ad);
416 }
417
418 #if 0
419 static void ___network_con_set_default_cb(connection_error_e result, void *data)
420 {
421         SETTING_TRACE_BEGIN;
422         setting_retm_if(data == NULL, "Data parameter is NULL");
423         Setting_GenGroupItem_Data *list_item = data;
424         SettingNetworkUG *ad = list_item->userdata;
425         setting_retm_if(ad == NULL, "ad parameter is NULL");
426         if (ad->network_ug_pop) {
427                 evas_object_del(ad->network_ug_pop);
428                 ad->network_ug_pop = NULL;
429         }
430
431         int srvType = CONNECTION_CELLULAR_SERVICE_TYPE_APPLICATION;
432         if (0 == safeStrCmp(ad->con_name, "IDS_ST_BODY_INTERNET_CONNECTION")) {
433                 srvType = CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET;
434         } else if (0 == safeStrCmp(ad->con_name, STR_SETTING_MMS_CONNECTIONS)) {
435                 srvType = CONNECTION_CELLULAR_SERVICE_TYPE_MMS;
436         }
437         SETTING_TRACE("The result is :%d,but it is meaningless for our Setting", result);
438         ad->selected_profile = list_item;
439         if (srvType == CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET && ad->internet_conn) {
440                 G_FREE(ad->internet_conn->sub_desc);
441                 FREE(ad->apn_internet);
442                 ad->apn_internet = strdup(list_item->keyStr);
443                 ad->internet_conn->sub_desc = strdup(list_item->keyStr);
444                 elm_object_item_data_set(ad->internet_conn->item, ad->internet_conn);
445                 elm_genlist_item_update(ad->internet_conn->item);
446         }
447         elm_genlist_realized_items_update(ad->con_list_gl);
448 }
449 #endif
450
451 static void __set_default_response_cb(void *data, Evas_Object *obj,
452                                       void *event_info)
453 {
454         setting_retm_if(data == NULL, "Data parameter is NULL");
455         Setting_GenGroupItem_Data *list_item = data;
456         SettingNetworkUG *ad = list_item->userdata;
457
458         int srvType = CONNECTION_CELLULAR_SERVICE_TYPE_APPLICATION;
459         if (0 == safeStrCmp(ad->con_name, "IDS_ST_BODY_INTERNET_CONNECTION")) {
460                 srvType = CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET;
461         } else if (0 == safeStrCmp(ad->con_name, STR_SETTING_MMS_CONNECTIONS)) {
462                 srvType = CONNECTION_CELLULAR_SERVICE_TYPE_MMS;
463         }
464         /*SETTING_TRACE("The result is :%d,but it is meaningless for our Setting", result); */
465         ad->selected_profile = list_item;
466         if (srvType == CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET && ad->internet_conn) {
467                 G_FREE(ad->internet_conn->sub_desc);
468                 FREE(ad->apn_internet);
469                 ad->apn_internet = strdup(list_item->keyStr);
470                 ad->internet_conn->sub_desc = strdup(list_item->keyStr);
471                 elm_object_item_data_set(ad->internet_conn->item, ad->internet_conn);
472                 elm_genlist_item_update(ad->internet_conn->item);
473         }
474         elm_genlist_realized_items_update(ad->con_list_gl);
475
476         if (obj) {
477                 evas_object_del(obj);
478                 obj = NULL;
479         }
480 }
481
482
483 void __set_default_profile(void *data)
484 {
485         setting_retm_if(data == NULL, "Data parameter is NULL");
486         Setting_GenGroupItem_Data *list_item = data;
487         SettingNetworkUG *ad = list_item->userdata;
488         setting_retm_if(ad == NULL, "ad parameter is NULL");
489
490         connection_profile_iterator_h profile_iter = NULL;
491         connection_profile_h profile_h = NULL;
492         int rv = connection_get_profile_iterator(ad->connection, CONNECTION_ITERATOR_TYPE_REGISTERED, &profile_iter);
493         if (rv != CONNECTION_ERROR_NONE) {
494                 SETTING_TRACE_ERROR("Fail to get profile iterator [%d]", rv);
495                 return;
496         }
497
498         int cnt = 0;
499         char *apn = NULL;
500         char *profile_id = NULL;
501         connection_cellular_service_type_e service_type = CONNECTION_CELLULAR_SERVICE_TYPE_UNKNOWN;
502
503         int srvType = CONNECTION_CELLULAR_SERVICE_TYPE_APPLICATION;
504         if (0 == safeStrCmp(ad->con_name, "IDS_ST_BODY_INTERNET_CONNECTION")) {
505                 srvType = CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET;
506         } else if (0 == safeStrCmp(ad->con_name, STR_SETTING_MMS_CONNECTIONS)) {
507                 srvType = CONNECTION_CELLULAR_SERVICE_TYPE_MMS;
508         }
509         while (connection_profile_iterator_has_next(profile_iter)) {
510                 if (cnt >= MAX_PROFILE_NUM) {
511                         break;
512                 }
513                 if (connection_profile_iterator_next(profile_iter, &profile_h) != CONNECTION_ERROR_NONE) {
514                         SETTING_TRACE_ERROR("Fail to get profile handle");
515                         break;
516                 }
517                 if (connection_profile_get_cellular_service_type(profile_h, &service_type) != CONNECTION_ERROR_NONE) {
518                         SETTING_TRACE_ERROR("Fail to get service type");
519                         continue;
520                 }
521
522                 connection_profile_get_cellular_apn(profile_h, &apn);
523                 connection_profile_get_id(profile_h, &profile_id);
524                 if (srvType != service_type) {
525                         G_FREE(apn);
526                         continue;
527                 }
528
529                 SETTING_TRACE("Record[%d] profile is %s(%s)", cnt, apn, profile_id);
530                 if (0 == safeStrCmp(profile_id, list_item->keyStr2)) {
531
532                         if (CONNECTION_CELLULAR_SERVICE_TYPE_MMS == srvType) {
533                                 setting_create_simple_popup(ad, ad->win_get, NULL, _("IDS_MSGF_POP_UNSUPPORTED"));
534                                 /*elm_radio_value_set(list_item->eo_check, old_type); */
535                                 if (ad->selected_profile)
536                                         elm_radio_value_set(list_item->eo_check, ad->selected_profile->chk_status);
537                                 break;
538                         } else {
539                                 SETTING_TRACE("Set default[%d] as [%s], profile:%p, id:%s", srvType, apn, profile_h, profile_id);
540                                 int ret = connection_set_default_cellular_service_profile(ad->connection, srvType, profile_h);
541                                 SETTING_TRACE("The result is :%d", ret);
542
543                                 if (ad->network_ug_pop) {
544                                         evas_object_del(ad->network_ug_pop);
545                                         ad->network_ug_pop = NULL;
546                                 }
547                                 if (ret != CONNECTION_ERROR_NONE) {
548                                         if (ad->selected_profile)
549                                                 elm_radio_value_set(list_item->eo_check, ad->selected_profile->chk_status);
550
551                                         setting_create_popup_without_btn(list_item, ad->win_get, NULL,
552                                                                          _("IDS_CST_POP_FAILED"), NULL,
553                                                                          2.0, FALSE, FALSE);
554                                         return;
555                                 }
556
557                                 setting_create_popup_without_btn(list_item, ad->win_get, NULL,
558                                                                  _("IDS_ST_BUTTON2_PROCESSING_ING"), __set_default_response_cb,
559                                                                  2.0, TRUE, FALSE);
560                         }
561                         break;
562                 }
563                 cnt++;
564         }
565         G_FREE(apn);
566         G_FREE(profile_id);
567
568 }
569 static void setting_network_con_list_item_Gendial_mouse_up_cb(void *data, Evas_Object *obj, void *event_info)
570 {
571         SETTING_TRACE_BEGIN;
572         /* error check */
573         setting_retm_if(data == NULL, "Data parameter is NULL");
574
575         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
576         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
577         elm_genlist_item_selected_set(item, 0);
578         Setting_GenGroupItem_Data *list_item =
579             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
580         setting_retm_if(NULL == list_item, "list_item is NULL");
581
582         SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
583         if (list_item->chk_status == elm_radio_value_get(list_item->eo_check)) {
584                 SettingNetworkUG *ad = data;
585                 elm_genlist_realized_items_update(ad->con_list_gl);
586                 return;
587         }
588
589         elm_radio_value_set(list_item->eo_check, list_item->chk_status);
590         __set_default_profile(list_item);
591 }
592 void setting_network_con_list_chk_changed(void *data, Evas_Object *obj, void *event_info)
593 {
594         SETTING_TRACE_BEGIN;
595         retm_if(data == NULL || obj == NULL, "Parameter is NULL");
596         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
597         list_item->chk_status = elm_radio_value_get(obj);
598         __set_default_profile(list_item);
599
600 }
601
602 static void setting_network_con_list_click_softkey_delete_cb(void *data, Evas_Object *obj, void *event_info)
603 {
604         SETTING_TRACE_BEGIN;
605         /* error check */
606         retm_if(data == NULL, "Data parameter is NULL");
607
608         SettingNetworkUG *ad = (SettingNetworkUG *) data;
609         setting_view_change(&setting_view_network_con_list, &setting_view_network_profile_delete, ad);
610 }
611
612 static void setting_network_con_list_click_softkey_create_cb(void *data, Evas_Object *obj, void *event_info)
613 {
614         SETTING_TRACE_BEGIN;
615         /* error check */
616         retm_if(data == NULL, "Data parameter is NULL");
617
618         SettingNetworkUG *ad = (SettingNetworkUG *) data;
619
620         /*setting_create_simple_popup(ad, ad->win_get, NULL, _("UX Undefined")); */
621         /*return; */
622
623         /*to add a new connection */
624         /*ad->con_type = -1; */
625         /*FREE(ad->con_name); */
626         /*ad->need_check_srvtype = FALSE; */
627         /*ad->con_name = strdup(STR_SETTING_NEW_CONNECTIONS); */
628         FREE(ad->access_name);
629         setting_view_change(&setting_view_network_con_list, &setting_view_network_connection_create, ad);
630 }
631
632 static Eina_Bool
633 setting_network_con_list_click_softkey_cancel_cb(void *data, Elm_Object_Item *it)
634 {
635         SETTING_TRACE_BEGIN;
636         SETTING_TRACE_ERROR("TTT");
637         /* error check */
638         retvm_if(data == NULL, EINA_FALSE, "Data parameter is NULL");
639
640         SettingNetworkUG *ad = (SettingNetworkUG *) data;
641
642         setting_view_change(&setting_view_network_con_list,
643                             &setting_view_network_con, ad);
644         return EINA_TRUE;
645 }