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.
20 #include "view-main.h"
21 #include "wifi-syspopup.h"
22 #include "view-password.h"
24 extern wifi_object* app_state;
26 static Evas_Object* list = NULL;
27 static Elm_Genlist_Item_Class itc;
29 int view_main_item_connection_mode_set(genlist_data *data, ITEM_CONNECTION_MODES mode)
31 __COMMON_FUNC_ENTER__;
34 WARN_LOG(SP_NAME_NORMAL, "NULL == data");
39 if (ITEM_CONNECTION_MODE_NULL >= mode || ITEM_CONNECTION_MODE_MAX <= mode) {
40 ERROR_LOG(SP_NAME_NORMAL, "mode[%d] is not valid", mode);
46 data->connection_mode = mode;
47 INFO_LOG(SP_NAME_NORMAL, "mode: [%d]", data->connection_mode);
49 elm_genlist_item_update(data->it);
56 static ITEM_CONNECTION_MODES view_main_state_get(Evas_Object *glist)
58 __COMMON_FUNC_ENTER__;
61 return ITEM_CONNECTION_MODE_NULL;
63 Elm_Object_Item* it = NULL;
64 it = elm_genlist_first_item_get(glist);
66 genlist_data *gdata = (genlist_data *)elm_object_item_data_get(it);
67 if (gdata->connection_mode == ITEM_CONNECTION_MODE_CONNECTING) {
68 return ITEM_CONNECTION_MODE_CONNECTING;
71 it = elm_genlist_item_next_get(it);
75 return ITEM_CONNECTION_MODE_OFF;
78 static void _gl_sel(void *data, Evas_Object *obj, void *event_info)
80 __COMMON_FUNC_ENTER__;
81 if (view_main_state_get(obj) != ITEM_CONNECTION_MODE_OFF) {
82 INFO_LOG(SP_NAME_NORMAL, "In connecting state, nothing can do" );
87 Elm_Object_Item *item = (Elm_Object_Item *)event_info;
89 assertm_if(NULL == data, "data is NULL!!");
90 assertm_if(NULL == obj, "obj is NULL!!");
91 genlist_data *gdata = (genlist_data*) data;
93 int ret = WLAN_MANAGER_ERR_UNKNOWN;
95 switch (gdata->connection_mode) {
96 case ITEM_CONNECTION_MODE_OFF:
97 INFO_LOG( SP_NAME_NORMAL, "item state: off");
98 ret = wlan_manager_request_connection(gdata->dev_info);
101 case ITEM_CONNECTION_MODE_CONNECTING:
102 INFO_LOG( SP_NAME_NORMAL, "item state: connecting");
105 ERROR_LOG( SP_NAME_NORMAL, "item state: etc [%d]", gdata->connection_mode);
110 case WLAN_MANAGER_ERR_NONE:
111 INFO_LOG( SP_NAME_NORMAL, "ERROR_NONE");
112 view_main_item_connection_mode_set(gdata, ITEM_CONNECTION_MODE_CONNECTING);
114 case WLAN_MANAGER_ERR_CONNECT_PASSWORD_NEEDED:
115 INFO_LOG( SP_NAME_NORMAL, "Password view will show up");
116 view_password_show(gdata);
119 view_main_item_connection_mode_set(gdata, ITEM_CONNECTION_MODE_OFF);
121 ERROR_LOG( SP_NAME_NORMAL, "errro code [%d]", ret);
125 elm_genlist_item_selected_set(item, 0);
126 elm_genlist_item_update(item);
128 __COMMON_FUNC_EXIT__;
131 static char *_gl_text_get(void *data, Evas_Object *obj, const char *part)
133 __COMMON_FUNC_ENTER__;
134 assertm_if(NULL == data, "data param is NULL!!");
135 assertm_if(NULL == obj, "obj param is NULL!!");
136 assertm_if(NULL == part, "part param is NULL!!");
138 genlist_data *gdata = (genlist_data *) data;
139 const char* ssid_name = gdata->dev_info->ssid;
141 if (ssid_name == NULL) {
142 __COMMON_FUNC_EXIT__;
143 ERROR_LOG(SP_NAME_NORMAL, "ssid name is NULL!!");
146 __COMMON_FUNC_EXIT__;
148 return strdup(ssid_name);
151 static char *wifi_get_device_icon(wifi_device_info_t *device_info)
153 __COMMON_FUNC_ENTER__;
154 assertm_if(NULL == device_info, "device param is NULL!!");
156 char tmp_str[128] = {0,};
159 sprintf(tmp_str, "%s/37_wifi_icon", WIFI_SP_ICON_PATH);
161 if (device_info->security_mode != WLAN_SEC_MODE_NONE) {
162 sprintf(tmp_str,"%s_lock", tmp_str);
165 switch (wlan_manager_get_signal_strength(device_info->rssi)) {
166 case SIGNAL_STRENGTH_TYPE_EXCELLENT:
167 sprintf(tmp_str,"%s_03", tmp_str);
169 case SIGNAL_STRENGTH_TYPE_GOOD:
170 sprintf(tmp_str,"%s_02", tmp_str);
172 case SIGNAL_STRENGTH_TYPE_WEAK:
173 sprintf(tmp_str,"%s_01", tmp_str);
175 case SIGNAL_STRENGTH_TYPE_VERY_WEAK:
176 case SIGNAL_STRENGTH_TYPE_NULL:
177 sprintf(tmp_str,"%s_00", tmp_str);
181 sprintf(tmp_str, "%s.png", tmp_str);
183 ret = strdup(tmp_str);
184 __COMMON_FUNC_EXIT__;
189 static Evas_Object *_gl_content_get(void *data, Evas_Object *obj, const char *part)
191 __COMMON_FUNC_ENTER__;
195 genlist_data *gdata = (genlist_data *) data;
197 const char* ssid_name = gdata->dev_info->ssid;
198 INFO_LOG(SP_NAME_NORMAL, "ssid name [%s]", ssid_name);
200 char*dev_icon_file = NULL;
201 Evas_Object* icon = NULL;
203 if (!strncmp(part, "elm.icon.1", strlen(part))) {
204 switch (gdata->connection_mode) {
205 case ITEM_CONNECTION_MODE_OFF:
206 if (gdata->progressbar != NULL) {
207 elm_progressbar_pulse(gdata->progressbar, EINA_FALSE);
208 evas_object_del(gdata->progressbar);
209 gdata->progressbar = NULL;
212 icon = elm_icon_add(obj);
213 dev_icon_file = wifi_get_device_icon(gdata->dev_info);
214 INFO_LOG(SP_NAME_NORMAL, "icon name [%s]", dev_icon_file);
215 elm_icon_file_set(icon, dev_icon_file, NULL);
216 g_free(dev_icon_file);
217 evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 5, 5);
220 case ITEM_CONNECTION_MODE_CONNECTING:
221 gdata->progressbar = elm_progressbar_add(obj);
222 if (gdata->progressbar == NULL)
225 elm_object_style_set(gdata->progressbar, "list_process");
226 evas_object_size_hint_align_set(gdata->progressbar, EVAS_HINT_FILL, 0.5);
227 evas_object_size_hint_weight_set(gdata->progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
228 elm_progressbar_pulse(gdata->progressbar, TRUE);
229 return gdata->progressbar;
235 __COMMON_FUNC_EXIT__;
239 Evas_Object *view_main_create(Evas_Object* parent)
241 __COMMON_FUNC_ENTER__;
242 assertm_if(NULL == parent, "parent is NULL!!");
244 list = elm_genlist_add(parent); //app_state->win_main);
245 assertm_if(NULL == list, "list allocation fail!!");
247 elm_genlist_mode_set(list, ELM_LIST_LIMIT);
248 evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
249 evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL);
251 __COMMON_FUNC_EXIT__;
256 int view_main_destroy(void)
258 __COMMON_FUNC_ENTER__;
260 evas_object_del(list);
264 __COMMON_FUNC_EXIT__;
268 static void view_main_scan_ui_clear(void)
270 __COMMON_FUNC_ENTER__;
275 Elm_Object_Item* it = NULL;
276 it = elm_genlist_first_item_get(list);
278 genlist_data *gdata = (genlist_data *)elm_object_item_data_get(it);
282 it = elm_genlist_item_next_get(it);
285 elm_genlist_clear(list);
287 __COMMON_FUNC_EXIT__;
290 void *view_main_item_set(net_profile_info_t *profile_info)
292 __COMMON_FUNC_ENTER__;
294 wifi_device_info_t *wifi_device = (wifi_device_info_t*)malloc(sizeof(wifi_device_info_t));
295 memset(wifi_device, 0, sizeof(wifi_device_info_t));
297 wifi_device->profile_name = strdup(profile_info->ProfileName);
298 wifi_device->ssid = strdup(profile_info->ProfileInfo.Wlan.essid);
299 wifi_device->rssi = (int)profile_info->ProfileInfo.Wlan.Strength;
300 wifi_device->security_mode = (int)profile_info->ProfileInfo.Wlan.security_info.sec_mode;
301 wifi_device->wps_mode = (int)profile_info->ProfileInfo.Wlan.security_info.wps_support;
303 __COMMON_FUNC_EXIT__;
307 int view_main_refresh()
309 view_main_scan_ui_clear();
314 int view_main_show(void)
316 __COMMON_FUNC_ENTER__;
319 ERROR_LOG( SP_NAME_NORMAL, "list is NULL!!" );
323 char profile_name[NET_PROFILE_NAME_LEN_MAX+1] = "";
324 int state = wlan_manager_state_get(profile_name);
326 case WLAN_MANAGER_ERROR:
327 case WLAN_MANAGER_OFF:
329 case WLAN_MANAGER_UNCONNECTED:
330 case WLAN_MANAGER_CONNECTED:
331 case WLAN_MANAGER_DISCONNECTING:
332 profile_name[0] = '\0';
334 case WLAN_MANAGER_CONNECTING:
338 view_main_scan_ui_clear();
340 net_profile_info_t *profiles_list = wlan_manager_profile_table_get();
341 if (profiles_list == NULL)
344 int profiles_list_size = wlan_manager_profile_scanned_length_get();
345 INFO_LOG(SP_NAME_NORMAL, "profiles list count [%d]\n", profiles_list_size);
347 itc.item_style = "1text.1icon.4";
348 itc.func.text_get = _gl_text_get;
349 itc.func.content_get = _gl_content_get;
350 itc.func.state_get = NULL;
354 wifi_device_info_t *device_info = NULL;
355 if (profiles_list_size > 0) {
356 if (profile_name[0] == '\0') {
357 for (i = 0; i < profiles_list_size; i++) {
358 device_info = (wifi_device_info_t *)view_main_item_set(profiles_list+i);
360 genlist_data *gdata = (genlist_data *) malloc(sizeof(genlist_data));
361 gdata->dev_info = device_info;
362 gdata->connection_mode = ITEM_CONNECTION_MODE_OFF;
363 gdata->progressbar = NULL;
365 gdata->it = elm_genlist_item_append(list, &itc, gdata, NULL, ELM_GENLIST_ITEM_NONE, _gl_sel, gdata);
366 elm_object_item_data_set(gdata->it, gdata);
369 for (i = 0; i < profiles_list_size; i++) {
370 device_info = (wifi_device_info_t *)view_main_item_set(profiles_list+i);
372 genlist_data *gdata = (genlist_data *) malloc(sizeof(genlist_data));
373 gdata->dev_info = device_info;
374 gdata->progressbar = NULL;
375 if (!strcmp((profiles_list+i)->ProfileName, profile_name)) {
376 gdata->connection_mode = ITEM_CONNECTION_MODE_CONNECTING;
378 gdata->connection_mode = ITEM_CONNECTION_MODE_OFF;
381 gdata->it = elm_genlist_item_append(list, &itc, gdata, NULL, ELM_GENLIST_ITEM_NONE, _gl_sel, gdata);
382 elm_object_item_data_set(gdata->it, gdata);
385 } else if (profiles_list_size == 0) {
386 WARN_LOG(SP_NAME_NORMAL, "scan size is ZERO");
389 evas_object_show(list);
390 __COMMON_FUNC_EXIT__;