Merge "P120829-5684" into 2.0_beta
[apps/core/preloaded/settings.git] / setting-network / src / setting-network-con.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.h>
22
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);
27
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,
33 };
34
35 /* ***************************************************
36  *
37  *basic func
38  *
39  ***************************************************/
40
41 static int setting_network_con_create(void *cb)
42 {
43         SETTING_TRACE_BEGIN;
44         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
45
46         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
47
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;
54
55         setting_push_layout_navi_bar(CONNECTION_DSC,
56                                      _("IDS_COM_BODY_BACK"),
57                                      _(KeyStr_Reset_Def),
58                                      _("Create"),
59                                      setting_network_con_click_softkey_cancel_cb,
60                                      setting_network_con_click_softkey_reset_cb,
61                                      setting_network_con_click_softkey_set_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);
67 #endif
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);
71
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",
77                                          NULL, NULL);
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,
82                                          NULL);
83 #ifdef ENABLED_PREFERRED_NETWORKS
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, "IDS_ST_BODY_PREFERRED_NETWORKS",
88                                          NULL, NULL);
89 #endif
90 #ifdef ENABLED_2G3G_NETWORK
91         /*  create 3g connection option */
92         setting_create_Gendial_field_def(scroller, &itc_1text,
93                                          setting_network_con_item_Gendial_mouse_up_cb,
94                                          ad, SWALLOW_Type_INVALID, NULL, NULL,
95                                          0, "2G/3G Connection", NULL, NULL);
96
97         /* add blank rectangle */
98 #endif
99
100         setting_view_network_con.is_create = 1;
101
102         return SETTING_RETURN_SUCCESS;
103 }
104
105 static int setting_network_con_destroy(void *cb)
106 {
107         SETTING_TRACE_BEGIN;
108         /* error check */
109         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
110
111         SettingNetworkUG *ad = (SettingNetworkUG *) cb;
112
113         elm_naviframe_item_pop(ad->navi_bar);
114         setting_view_network_con.is_create = 0;
115
116         return SETTING_RETURN_SUCCESS;
117 }
118
119 static int setting_network_con_update(void *cb)
120 {
121         return SETTING_RETURN_SUCCESS;
122 }
123
124 static int setting_network_con_cleanup(void *cb)
125 {
126         return setting_network_con_destroy(cb);
127 }
128
129 /* ***************************************************
130  *
131  *general func
132  *
133  ***************************************************/
134
135 /* ***************************************************
136  *
137  *call back func
138  *
139  ***************************************************/
140
141 static void
142 setting_network_con_item_Gendial_mouse_up_cb(void *data, Evas_Object *obj,
143                                               void *event_info)
144 {
145         SETTING_TRACE_BEGIN;
146         /* error check */
147         setting_retm_if(data == NULL, "Data parameter is NULL");
148         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
149         elm_genlist_item_selected_set(item, 0);
150         Setting_GenGroupItem_Data *list_item =
151             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
152
153         SettingNetworkUG *ad = (SettingNetworkUG *) data;
154
155         SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
156         int ret;
157
158         if (!safeStrCmp("IDS_ST_BODY_SELECT_NETWORK", list_item->keyStr)) {
159                 ret =
160                     setting_view_change(&setting_view_network_main,
161                                         &setting_view_network_select_network,
162                                         ad);
163         } else if (!safeStrCmp
164                 ("IDS_ST_BODY_INTERNET_CONNECTION", list_item->keyStr)) {
165
166                 ad->con_type = NET_SERVICE_INTERNET;
167                 ret =
168                     setting_view_change(&setting_view_network_main,
169                                         &setting_view_network_connection_create,
170                                         ad);
171         } else if (!safeStrCmp(STR_SETTING_MMS_CONNECTIONS, list_item->keyStr)) {
172                 ad->con_type = NET_SERVICE_MMS;
173
174                 ret =
175                     setting_view_change(&setting_view_network_main,
176                                         &setting_view_network_connection_create,
177                                         ad);
178         }
179 #ifdef ENABLED_PREFERRED_NETWORKS
180         else if (!safeStrCmp("IDS_ST_BODY_PREFERRED_NETWORKS",
181                                 list_item->keyStr)) {
182
183                 int value = -1;
184                 int err = -1;
185                 ret =
186                     setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value,
187                                             &err);
188                         /** @todo check 'err' variable for exception handling */
189                 SETTING_TRACE("INT_SLP_SETTING_SIM_SLOT value:%d", value);
190                 switch (value) {
191                 case VCONFKEY_TELEPHONY_SIM_INSERTED:
192                         /* To Recreate the view in order to search the perferred network again. */
193                         /* ret = setting_view_destroy(&setting_view_network_preferred_network, ad); */
194                         ret =
195                             setting_view_change(&setting_view_network_main,
196                                                 &setting_view_network_preferred_network,
197                                                 ad);
198
199                         break;
200
201                 case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
202
203                         setting_create_simple_popup(NULL, ad->win_get,
204                                                     NULL, _("IDS_ST_SECURITY_BODY_NOIMSI"));
205                         SETTING_TRACE_DEBUG
206                             ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
207                              SETTING_FONT_RED, value, SETTING_FONT_BLACK);
208                         return;
209
210                         break;
211
212                 case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
213                 case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
214
215                         setting_create_simple_popup(NULL, ad->win_get,
216                                                     NULL, _("IDS_COM_BODY_INVALID_SIM_CARD"));
217                         SETTING_TRACE_DEBUG
218                             ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
219                              SETTING_FONT_RED, value, SETTING_FONT_BLACK);
220                         return;
221
222                         break;
223                 default:
224                         SETTING_TRACE("Unknown SIM information from vconf");
225                         break;
226                 }
227         }
228 #endif
229 #ifdef ENABLED_2G3G_NETWORK
230         else if (!safeStrCmp("2G/3G Connection", list_item->keyStr)) {
231                 ret =
232                     setting_view_change(&setting_view_network_main,
233                                         &setting_view_network_3gcon, ad);
234         }
235 #endif
236 }
237
238 static void
239 setting_network_con_click_softkey_reset_cb(void *data, Evas_Object *obj, void *event_info)
240 {
241         SETTING_TRACE_BEGIN;
242         /* error check */
243         retm_if(data == NULL, "Data parameter is NULL");
244
245         SettingNetworkUG *ad = (SettingNetworkUG *) data;
246         //Reset connections info..
247         excuteCmd("/usr/bin/dbus-send", 1, NET_CON_RESET_DBUS_PARA);
248         setting_create_simple_popup(ad, ad->win_get, NULL, _("Reseted!"));
249 }
250
251 static void
252 setting_network_con_click_softkey_set_cb(void *data, Evas_Object *obj,
253                                            void *event_info)
254 {
255         /* error check */
256         retm_if(data == NULL, "Data parameter is NULL");
257
258         SettingNetworkUG *ad = (SettingNetworkUG *) data;
259
260         setting_create_simple_popup(ad, ad->win_get, NULL, _("UX Undefined"));
261         return;
262
263         //to add a new connection
264         ad->con_type = NET_SERVICE_UNKNOWN;
265         setting_view_change(&setting_view_network_main, &setting_view_network_connection_create, ad);
266 }
267
268 static void
269 setting_network_con_click_softkey_cancel_cb(void *data, Evas_Object *obj,
270                                               void *event_info)
271 {
272         /* error check */
273         retm_if(data == NULL, "Data parameter is NULL");
274
275         SettingNetworkUG *ad = (SettingNetworkUG *) data;
276
277         setting_view_change(&setting_view_network_con,
278                             &setting_view_network_main, ad);
279 }