4 * Copyright 2012 Samsung Electronics Co., Ltd
6 * Licensed under the Flora License, Version 1.1 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.tizenopensource.org/license
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
21 #include <vconf-keys.h>
22 #include <ui-gadget.h>
23 #include <app_control_internal.h>
24 #include <efl_extension.h>
25 #include <wifi-manager.h>
29 #include "viewer_list.h"
30 #include "i18nmanager.h"
31 #include "common_utils.h"
32 #include "winset_popup.h"
33 #include "viewer_manager.h"
34 #include "view_ime_hidden.h"
35 #include "view_advanced.h"
36 #include "view_detail.h"
39 wifi_manager_security_type_e sec_mode;
41 wifi_device_info_t *device_info;
42 Evas_Object *confirm_popup;
45 typedef struct viewer_manager_object {
47 Elm_Object_Item *navi_it;
48 Evas_Object *scan_button;
49 Evas_Object *next_button;
50 Evas_Object *prev_button;
53 Evas_Object *sw_hidden_btn;
54 Evas_Object *sw_scan_btn;
56 Elm_Object_Item *item_wifi_onoff;
57 char *item_wifi_onoff_text;
59 Elm_Object_Item *item_onoff_description;
60 char *item_onoff_description_text;
62 HEADER_MODES header_mode;
63 Evas_Object *ctxpopup;
64 bool is_first_time_no_profiles;
67 hidden_ap_data_t *hidden_popup_data;
68 } viewer_manager_object;
72 Elm_Object_Item *last_appended_item;
73 int total_items_added;
74 } view_manager_list_update_info_t;
76 static viewer_manager_object *manager_object = NULL;
78 extern wifi_appdata *ug_app_state;
80 static Elm_Genlist_Item_Class wifi_onoff_itc;
81 static Elm_Genlist_Item_Class onoff_description_itc;
83 static GList *wifi_device_list = NULL;
84 static Eina_Bool rotate_flag = EINA_FALSE;
86 static bool show_more = TRUE;
88 wifi_emulator_sample_s wifi_samples[] = {
89 {"datanetwork", WIFI_MANAGER_SECURITY_TYPE_WPA_PSK, 1},
90 {"ureadyinternet", WIFI_MANAGER_SECURITY_TYPE_EAP, 0},
91 {"uready", WIFI_MANAGER_SECURITY_TYPE_EAP, 1},
92 {"setup", WIFI_MANAGER_SECURITY_TYPE_NONE, 0},
93 {"Tizen", WIFI_MANAGER_SECURITY_TYPE_WPA2_PSK, 1},
95 int wifi_sample_count = sizeof(wifi_samples) / sizeof(wifi_samples[0]);
97 static void _hidden_button_callback(void* data, Evas_Object* obj, void* event_info);
98 static void viewer_manager_hidden_confirm_cleanup(void);
100 #ifdef MODEL_BUILD_FEATURE_WLAN_CONCURRENT_MODE
101 static void _launch_wifi_direct_app(void)
103 int ret = APP_CONTROL_ERROR_NONE;
104 app_control_h app_control;
106 app_control_create(&app_control);
107 app_control_set_operation(app_control, APP_CONTROL_OPERATION_DEFAULT);
108 app_control_set_launch_mode(app_control, APP_CONTROL_LAUNCH_MODE_GROUP);
109 app_control_set_app_id(app_control, "ug-setting-wifidirect-efl");
111 ret = app_control_send_launch_request(app_control, NULL, NULL);
112 if (ret == APP_CONTROL_ERROR_NONE)
113 INFO_LOG(UG_NAME_NORMAL, "Launch Wi-Fi Direct successful");
115 ERROR_LOG(UG_NAME_NORMAL, "Fail to launch Wi-Fi Direct");
117 app_control_destroy(app_control);
121 static gboolean viewer_manager_is_passwd_popup_exists(void)
123 if (ug_app_state->passpopup != NULL)
129 void language_changed_refresh()
131 if (UG_VIEW_SETUP_WIZARD == ug_app_state->ug_type) {
132 elm_genlist_realized_items_update(manager_object->list);
133 viewer_manager_refresh();
137 void viewer_manager_update_item_favorite_status(wifi_manager_ap_h ap)
142 Elm_Object_Item *target_item = item_get_for_ap(ap);
143 if (target_item == NULL)
146 ug_genlist_data_t *gdata = NULL;
148 gdata = (ug_genlist_data_t *)elm_object_item_data_get(target_item);
149 if (gdata == NULL || gdata->device_info == NULL) {
150 INFO_LOG(COMMON_NAME_ERR, "gdata or device_info is NULL");
154 gdata->radio_mode = VIEWER_ITEM_RADIO_MODE_OFF;
155 if (gdata->device_info->ap_status_txt) {
156 g_free(gdata->device_info->ap_status_txt);
157 gdata->device_info->ap_status_txt =
158 common_utils_get_ap_security_type_info_txt(PACKAGE,
159 gdata->device_info, false);
162 if (target_item != NULL)
163 elm_genlist_item_update(target_item);
166 void power_control(void)
168 __COMMON_FUNC_ENTER__;
171 cur_state = viewer_manager_header_mode_get();
173 INFO_LOG(UG_NAME_NORMAL, "current state %d\n", cur_state);
178 case HEADER_MODE_OFF:
179 case HEADER_MODE_ACTIVATING:
180 ug_app_state->is_first_scan = true;
181 ret = wlan_manager_power_on();
183 case WLAN_MANAGER_ERR_NONE:
184 viewer_manager_show(VIEWER_WINSET_SEARCHING);
185 viewer_manager_header_mode_set(HEADER_MODE_ACTIVATING);
186 viewer_manager_create_scan_btn();
188 if (_is_emulator()) {
189 wifi_emulator_create_event_timer(WIFI_EMUL_EVENT_TIMER_ACTIVATE,
190 1000, wlan_manager_emulator_power_on, NULL);
194 #if defined TIZEN_TETHERING_ENABLE
195 case WLAN_MANAGER_ERR_WIFI_TETHERING_OCCUPIED:
196 winset_popup_mode_set(ug_app_state->popup_manager,
197 POPUP_OPTION_POWER_ON_FAILED_TETHERING_OCCUPIED, NULL);
200 case WLAN_MANAGER_ERR_WIFI_AP_TETHERING_OCCUPIED:
201 winset_popup_mode_set(ug_app_state->popup_manager,
202 POPUP_OPTION_POWER_ON_FAILED_TETHERING_AP_OCCUPIED, NULL);
207 viewer_manager_header_mode_set(HEADER_MODE_OFF);
208 INFO_LOG(UG_NAME_NORMAL, "power on failed. ret = %d", ret);
215 case HEADER_MODE_CONNECTING:
216 case HEADER_MODE_CONNECTED:
217 case HEADER_MODE_SEARCHING:
218 ret = wlan_manager_power_off();
220 case WLAN_MANAGER_ERR_NONE:
221 viewer_manager_show(VIEWER_WINSET_SEARCHING);
222 viewer_manager_header_mode_set(HEADER_MODE_DEACTIVATING);
224 // Lets ignore all the scan updates because we are powering off now.
225 wlan_manager_disable_scan_result_update();
226 if (_is_emulator()) {
227 wifi_emulator_create_event_timer(WIFI_EMUL_EVENT_TIMER_DEACTIVATE,
228 500, wlan_manager_emulator_power_off, NULL);
233 INFO_LOG(UG_NAME_NORMAL, "power off failed. ret = %d", ret);
239 case HEADER_MODE_DEACTIVATING:
241 INFO_LOG(UG_NAME_NORMAL, "Powering off in progress. Let it complete. \n");
245 __COMMON_FUNC_EXIT__;
248 static void _transition_finished_main_cb(void *data, Evas_Object *obj, void *event_info)
250 __COMMON_FUNC_ENTER__;
252 view_manager_view_type_t top_view_id;
254 top_view_id = (view_manager_view_type_t)evas_object_data_get(
255 obj, SCREEN_TYPE_ID_KEY);
257 if (data == elm_naviframe_top_item_get(obj)) {
258 /* We are now in main view */
259 if (viewer_manager_is_passwd_popup_exists() == TRUE) {
260 top_view_id = VIEW_MANAGER_VIEW_TYPE_PASSWD_POPUP;
262 top_view_id = VIEW_MANAGER_VIEW_TYPE_MAIN;
263 if (wifi_is_scan_required() == true)
264 viewer_manager_request_scan();
266 evas_object_data_set(obj, SCREEN_TYPE_ID_KEY,
267 (void *)VIEW_MANAGER_VIEW_TYPE_MAIN);
269 viewer_manager_rotate_top_setupwizard_layout();
272 INFO_LOG(UG_NAME_NORMAL, "top view id = %d", top_view_id);
274 switch (top_view_id) {
275 case VIEW_MANAGER_VIEW_TYPE_MAIN:
276 /* Lets enable the scan updates */
277 wlan_manager_enable_scan_result_update();
280 case VIEW_MANAGER_VIEW_TYPE_DETAIL:
281 case VIEW_MANAGER_VIEW_TYPE_EAP:
282 case VIEW_MANAGER_VIEW_TYPE_PASSWD_POPUP:
284 /* Lets disable the scan updates so that the UI is not refreshed */
285 wlan_manager_disable_scan_result_update();
286 if (top_view_id == VIEW_MANAGER_VIEW_TYPE_PASSWD_POPUP)
287 passwd_popup_show(ug_app_state->passpopup);
291 __COMMON_FUNC_EXIT__;
294 static void _lbutton_click_cb(void *data, Evas_Object *obj, void *event_info)
296 __COMMON_FUNC_ENTER__;
298 app_control_h app_control;
301 ret = app_control_create(&app_control);
302 if (ret != APP_CONTROL_ERROR_NONE) {
303 INFO_LOG(UG_NAME_ERR, "app_control_create failed: %d", ret);
307 app_control_add_extra_data(app_control, "result", "lbutton_click");
308 ug_send_result(ug_app_state->ug, app_control);
310 app_control_destroy(app_control);
311 ug_destroy_me(ug_app_state->ug);
313 __COMMON_FUNC_EXIT__;
316 static void _rbutton_click_cb(void *data, Evas_Object *obj, void *event_info)
318 __COMMON_FUNC_ENTER__;
320 app_control_h app_control;
323 ret = app_control_create(&app_control);
324 if (ret != APP_CONTROL_ERROR_NONE) {
325 INFO_LOG(UG_NAME_ERR, "app_control_create failed: %d", ret);
329 app_control_add_extra_data(app_control, "result", "rbutton_click");
330 ug_send_result(ug_app_state->ug, app_control);
332 app_control_destroy(app_control);
333 ug_destroy_me(ug_app_state->ug);
335 __COMMON_FUNC_EXIT__;
338 static void __back_cb(void *data, Evas_Object *obj, void *event_info)
340 __COMMON_FUNC_ENTER__;
342 if ((view_manager_view_type_t)evas_object_data_get(obj, SCREEN_TYPE_ID_KEY) !=
343 VIEW_MANAGER_VIEW_TYPE_MAIN) {
344 eext_naviframe_back_cb(data, obj, event_info);
345 __COMMON_FUNC_EXIT__;
349 if (viewer_manager_is_passwd_popup_exists() == TRUE ||
350 ug_app_state->bAlive == EINA_FALSE) {
351 __COMMON_FUNC_EXIT__;
357 __COMMON_FUNC_EXIT__;
360 static Eina_Bool _back_sk_cb(void *data, Elm_Object_Item *it)
362 __COMMON_FUNC_ENTER__;
364 if (ug_app_state->bAlive == EINA_FALSE) {
365 __COMMON_FUNC_EXIT__;
371 __COMMON_FUNC_EXIT__;
375 #ifdef MODEL_BUILD_FEATURE_WLAN_CONCURRENT_MODE
376 static gboolean __activate_more_btn(gpointer pdata)
380 if (ug_app_state->timeout) {
381 g_source_remove(ug_app_state->timeout);
382 ug_app_state->timeout = 0;
389 static void _ctxpopup_item_select_cb(void *data, Evas_Object *obj,
392 const char *label = elm_object_item_text_get((Elm_Object_Item *) event_info);
394 SECURE_INFO_LOG(UG_NAME_NORMAL, "text(%s) is clicked\n", label);
396 if (g_strcmp0(label, sc(PACKAGE, I18N_TYPE_Advanced)) == 0)
398 else if (g_strcmp0(label, sc(PACKAGE, I18N_TYPE_Find_Hidden_Network)) == 0)
399 _hidden_button_callback(data, obj, event_info);
401 #ifdef MODEL_BUILD_FEATURE_WLAN_CONCURRENT_MODE
402 else if (g_strcmp0(label, sc(PACKAGE, I18N_TYPE_WiFi_direct)) == 0) {
404 ug_app_state->timeout = g_timeout_add(300, __activate_more_btn, NULL);
405 _launch_wifi_direct_app();
409 if (manager_object->ctxpopup) {
410 evas_object_del(manager_object->ctxpopup);
411 manager_object->ctxpopup = NULL;
415 static void _ctxpopup_del_cb(void *data,
416 Evas_Object *obj, void *event_info)
418 __COMMON_FUNC_ENTER__;
423 evas_object_del(manager_object->ctxpopup);
424 manager_object->ctxpopup = NULL;
426 __COMMON_FUNC_EXIT__;
429 static void _ctxpopup_move(Evas_Object *parent)
431 __COMMON_FUNC_ENTER__;
436 Evas_Coord y = 0, w = 0, h = 0;
439 elm_win_screen_size_get(parent, NULL, &y, &w, &h);
440 rotate_angle = elm_win_rotation_get(parent);
442 if (0 == rotate_angle || 180 == rotate_angle)
443 evas_object_move(manager_object->ctxpopup, w/2, h);
445 evas_object_move(manager_object->ctxpopup, h/2, w);
447 __COMMON_FUNC_EXIT__;
450 static void _ctxpopup_dismissed_cb(void *data, Evas_Object *obj,
453 __COMMON_FUNC_ENTER__;
458 Evas_Object *_win_main = data;
461 evas_object_del(manager_object->ctxpopup);
462 manager_object->ctxpopup = NULL;
464 _ctxpopup_move(_win_main);
465 evas_object_show(manager_object->ctxpopup);
466 rotate_flag = EINA_FALSE;
469 __COMMON_FUNC_EXIT__;
472 static void _ctxpopup_rotate_cb(void *data, Evas_Object *obj, void *event_info)
475 __COMMON_FUNC_ENTER__;
480 Evas_Object *_win_main = data;
482 _ctxpopup_move(_win_main);
483 evas_object_show(manager_object->ctxpopup);
485 __COMMON_FUNC_EXIT__;
488 static void _ctxpopup_resize_cb(void *data, Evas *e, Evas_Object *obj,
491 __COMMON_FUNC_ENTER__;
493 if (manager_object->ctxpopup)
494 rotate_flag = EINA_TRUE;
496 rotate_flag = EINA_FALSE;
498 __COMMON_FUNC_EXIT__;
501 static void _ctxpopup_delete_cb(void *data, Evas *e, Evas_Object *obj,
504 __COMMON_FUNC_ENTER__;
506 Evas_Object *navi = (Evas_Object *)data;
507 Evas_Object *ctx = obj;
515 evas_object_smart_callback_del(ctx, "dismissed",
516 _ctxpopup_dismissed_cb);
517 evas_object_event_callback_del(navi, EVAS_CALLBACK_RESIZE,
518 _ctxpopup_resize_cb);
519 evas_object_smart_callback_del(elm_object_top_widget_get(ctx),
520 "rotation,changed", _ctxpopup_rotate_cb);
521 evas_object_event_callback_del_full(ctx, EVAS_CALLBACK_DEL,
522 _ctxpopup_delete_cb, navi);
524 __COMMON_FUNC_EXIT__;
528 static void _more_button_cb(void *data, Evas_Object *obj, void *event_info)
530 Evas_Object *_win_main = (Evas_Object*)data;
531 HEADER_MODES current_state;
532 struct ug_data *ugd = NULL;
533 Evas_Object *parent = NULL;
534 Elm_Object_Item *item = NULL;
537 ugd = (struct ug_data *)ug_app_state->gadget;
538 retm_if(ugd == NULL || show_more == FALSE);
540 parent = ugd->win_main;
541 if (!parent || !manager_object)
544 current_state = viewer_manager_header_mode_get();
546 if (manager_object->ctxpopup)
547 evas_object_del(manager_object->ctxpopup);
549 ps_mode = common_util_get_system_registry(VCONFKEY_SETAPPL_PSMODE);
550 INFO_LOG(UG_NAME_NORMAL, "PS mode - [%d]", ps_mode);
552 manager_object->ctxpopup = elm_ctxpopup_add(parent);
553 elm_ctxpopup_auto_hide_disabled_set(manager_object->ctxpopup, EINA_TRUE);
554 elm_object_style_set(manager_object->ctxpopup, "more/default");
555 eext_object_event_callback_add(manager_object->ctxpopup, EEXT_CALLBACK_BACK,
556 _ctxpopup_del_cb, NULL);
557 eext_object_event_callback_add(manager_object->ctxpopup, EEXT_CALLBACK_MORE,
558 _ctxpopup_del_cb, NULL);
559 evas_object_smart_callback_add(manager_object->ctxpopup, "dismissed",
560 _ctxpopup_dismissed_cb, _win_main);
561 evas_object_event_callback_add(manager_object->ctxpopup, EVAS_CALLBACK_DEL,
562 _ctxpopup_delete_cb, parent);
563 evas_object_event_callback_add(parent, EVAS_CALLBACK_RESIZE,
564 _ctxpopup_resize_cb, _win_main);
565 evas_object_smart_callback_add(elm_object_top_widget_get(manager_object->ctxpopup),
566 "rotation,changed", _ctxpopup_rotate_cb, _win_main);
568 if (current_state != HEADER_MODE_OFF &&
569 current_state != HEADER_MODE_DEACTIVATING) {
570 item = elm_ctxpopup_item_append(manager_object->ctxpopup,
571 "IDS_WIFI_BUTTON_FIND_HIDDEN_NETWORK", NULL,
572 _ctxpopup_item_select_cb, parent);
573 elm_object_item_domain_text_translatable_set(item, PACKAGE, EINA_TRUE);
576 item = elm_ctxpopup_item_append(manager_object->ctxpopup,
577 "IDS_ST_BODY_ADVANCED", NULL,
578 _ctxpopup_item_select_cb, parent);
579 elm_object_item_domain_text_translatable_set(item, PACKAGE, EINA_TRUE);
581 #ifdef MODEL_BUILD_FEATURE_WLAN_CONCURRENT_MODE
582 if (ps_mode <= SETTING_PSMODE_POWERFUL &&
583 current_state != HEADER_MODE_OFF &&
584 current_state != HEADER_MODE_DEACTIVATING) {
585 item = elm_ctxpopup_item_append(manager_object->ctxpopup,
586 "IDS_WIFI_BODY_WI_FI_DIRECT_ABB", NULL,
587 _ctxpopup_item_select_cb, parent);
588 elm_object_item_domain_text_translatable_set(item, PACKAGE, EINA_TRUE);
592 elm_ctxpopup_direction_priority_set(manager_object->ctxpopup,
593 ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_UNKNOWN,
594 ELM_CTXPOPUP_DIRECTION_UNKNOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN);
596 _ctxpopup_move(_win_main);
597 evas_object_show(manager_object->ctxpopup);
600 static void __refresh_scan_callback(void *data,
601 Evas_Object *obj, void *event_info)
603 __COMMON_FUNC_ENTER__;
606 HEADER_MODES current_state;
607 current_state = viewer_manager_header_mode_get();
609 switch (current_state) {
611 case HEADER_MODE_CONNECTED:
612 viewer_manager_show(VIEWER_WINSET_SEARCHING);
613 viewer_manager_header_mode_set(HEADER_MODE_SEARCHING);
615 scan_result = wlan_manager_scan();
616 if (scan_result != WLAN_MANAGER_ERR_NONE) {
617 viewer_manager_hide(VIEWER_WINSET_SEARCHING);
618 viewer_manager_header_mode_set(current_state);
626 __COMMON_FUNC_EXIT__;
629 static void __power_onoff_cb(void *data, Evas_Object *obj, void *event_info)
631 __COMMON_FUNC_ENTER__;
633 Elm_Object_Item *item = NULL;
634 const char *object_type;
635 HEADER_MODES current_mode;
637 item = (Elm_Object_Item *)event_info;
638 object_type = evas_object_type_get(obj);
640 current_mode = viewer_manager_header_mode_get();
641 ug_app_state->is_wifi_scan_indication_block = 0;
643 if (current_mode == HEADER_MODE_ACTIVATING ||
644 current_mode == HEADER_MODE_DEACTIVATING) {
645 if (g_strcmp0(object_type, "elm_genlist") == 0)
646 elm_genlist_item_selected_set(item, EINA_FALSE);
648 __COMMON_FUNC_EXIT__;
652 if (g_strcmp0(object_type, "elm_check") == 0) {
653 Eina_Bool check_mode = elm_check_state_get(obj);
655 if (check_mode == TRUE && current_mode == HEADER_MODE_OFF) {
656 elm_check_state_set(obj, EINA_FALSE);
658 } else if (check_mode != TRUE && current_mode != HEADER_MODE_OFF) {
661 } else if (g_strcmp0(object_type, "elm_genlist") == 0) {
666 elm_genlist_item_update(item);
667 elm_genlist_item_selected_set(item, EINA_FALSE);
670 __COMMON_FUNC_EXIT__;
673 static char *_gl_wifi_onoff_text_get(void *data, Evas_Object *obj, const char *part)
676 int ug_type = (int) data;
678 retvm_if(NULL == manager_object, NULL);
680 if (!strcmp("elm.text", part)) {
681 if (ug_type == UG_VIEW_OOBE) {
682 det = g_strdup_printf("<font_size=%d>%s</font_size>",
684 manager_object->header_mode == HEADER_MODE_SEARCHING ?
685 sc(PACKAGE, I18N_TYPE_Scanning) :
686 manager_object->item_wifi_onoff_text);
688 det = g_strdup(manager_object->item_wifi_onoff_text);
696 static char *_gl_helper_text_get(void *data, Evas_Object *obj, const char *part)
700 retvm_if(NULL == manager_object, NULL);
702 if (!strcmp("elm.text.multiline", part)) {
703 det = g_strdup(manager_object->item_onoff_description_text);
704 assertm_if(NULL == det, "NULL!!");
710 static Evas_Object *_gl_wifi_onoff_content_get(void *data,
711 Evas_Object *obj, const char *part)
713 if (manager_object == NULL)
716 Evas_Object *c = NULL;
717 int ug_type = (int) data;
720 // On&Off toggle button
721 if (!strcmp("elm.swallow.end", part)) {
722 if (ug_type == UG_VIEW_OOBE)
727 c = elm_check_add(obj);
728 elm_object_style_set(c, style);
729 evas_object_propagate_events_set(c, EINA_FALSE);
730 evas_object_smart_callback_add(c, "changed", __power_onoff_cb, NULL);
732 if (manager_object->header_mode == HEADER_MODE_OFF
733 || manager_object->header_mode == HEADER_MODE_DEACTIVATING)
734 elm_check_state_set(c, EINA_FALSE);
736 elm_check_state_set(c, EINA_TRUE);
738 evas_object_size_hint_align_set(c, EVAS_HINT_FILL, EVAS_HINT_FILL);
739 evas_object_size_hint_weight_set(c, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
742 // OOBE: Progress icon
743 if (ug_type == UG_VIEW_OOBE && !strcmp("elm.swallow.icon", part)) {
744 // if (manager_object->header_mode == HEADER_MODE_ACTIVATING
745 // || manager_object->header_mode == HEADER_MODE_SEARCHING) {
746 if (manager_object->header_mode == HEADER_MODE_SEARCHING) {
747 c = elm_progressbar_add(obj);
748 elm_object_style_set(c, "process_small");
749 evas_object_size_hint_align_set(c, EVAS_HINT_FILL, 0.5);
750 evas_object_size_hint_weight_set(c,
751 EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
752 elm_progressbar_pulse(c, TRUE);
758 if (ug_type == UG_VIEW_OOBE && !strcmp("elm.swallow.icon.2", part)) {
759 c = elm_button_add(obj);
760 elm_object_style_set(c, "scan");
761 evas_object_size_hint_align_set(c, EVAS_HINT_FILL, EVAS_HINT_FILL);
762 evas_object_size_hint_weight_set(c, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
763 elm_object_domain_translatable_text_set(c, PACKAGE, "IDS_WIFI_BUTTON_SCAN");
764 evas_object_smart_callback_add(c, "clicked", __refresh_scan_callback, NULL);
766 if (manager_object->header_mode == HEADER_MODE_SEARCHING)
767 elm_object_disabled_set(c, EINA_TRUE);
769 elm_object_disabled_set(c, EINA_FALSE);
775 static void __viewer_manager_wifi_onoff_item_create(Evas_Object* genlist, int ug_type)
777 __COMMON_FUNC_ENTER__;
779 manager_object->item_wifi_onoff_text = g_strdup(sc(PACKAGE, I18N_TYPE_Wi_Fi));
781 wifi_onoff_itc.item_style = WIFI_GENLIST_1LINE_TEXT_ICON_STYLE;
782 wifi_onoff_itc.func.text_get = _gl_wifi_onoff_text_get;
783 wifi_onoff_itc.func.content_get = _gl_wifi_onoff_content_get;
784 wifi_onoff_itc.func.state_get = NULL;
785 wifi_onoff_itc.func.del = NULL;
787 manager_object->item_wifi_onoff = elm_genlist_item_append(genlist,
788 &wifi_onoff_itc, (void *)ug_type, NULL, ELM_GENLIST_ITEM_NONE,
791 elm_genlist_item_select_mode_set(manager_object->item_wifi_onoff, ELM_OBJECT_SELECT_MODE_NONE);
792 __COMMON_FUNC_EXIT__;
795 static void __viewer_manager_onoff_description_item_create(void)
797 __COMMON_FUNC_ENTER__;
799 manager_object->item_onoff_description_text = g_strdup(sc(PACKAGE, I18N_TYPE_Turn_on_wifi_to_view_available_networks));
801 onoff_description_itc.item_style = WIFI_GENLIST_MULTILINE_TEXT_STYLE;
802 onoff_description_itc.func.text_get = _gl_helper_text_get;
803 onoff_description_itc.func.content_get = NULL;
804 onoff_description_itc.func.state_get = NULL;
805 onoff_description_itc.func.del = NULL;
807 __COMMON_FUNC_EXIT__;
810 static void viewer_manager_onoff_description_item_set(bool state)
812 __COMMON_FUNC_ENTER__;
814 if (manager_object == NULL) {
815 __COMMON_FUNC_EXIT__;
819 if (state && manager_object->item_onoff_description == NULL) {
820 manager_object->item_onoff_description = elm_genlist_item_append(manager_object->list,
821 &onoff_description_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE,
823 } else if (!state && manager_object->item_onoff_description != NULL) {
824 elm_object_item_del(manager_object->item_onoff_description);
825 manager_object->item_onoff_description = NULL;
828 __COMMON_FUNC_EXIT__;
831 static void _hidden_button_callback(void* data, Evas_Object* obj, void* event_info)
833 __COMMON_FUNC_ENTER__;
835 view_hidden_ap_popup_create(ug_app_state->layout_main, PACKAGE);
837 __COMMON_FUNC_EXIT__;
840 static void __viewer_manager_hidden_button_create(Evas_Object *genlist)
842 __COMMON_FUNC_ENTER__;
844 if (manager_object->sw_hidden_btn != NULL ||
845 ug_app_state->ug_type != UG_VIEW_SETUP_WIZARD) {
846 __COMMON_FUNC_EXIT__;
850 Evas_Object *btn = NULL;
851 Evas_Object *layout = NULL;
852 Elm_Object_Item *navi_it = NULL;
854 navi_it = elm_naviframe_top_item_get(manager_object->nav);
855 layout = elm_object_item_content_get(navi_it);
857 btn = elm_button_add(layout);
858 elm_object_style_set(btn, "default");
859 evas_object_propagate_events_set(btn, EINA_FALSE);
861 evas_object_smart_callback_add(btn, "clicked", _hidden_button_callback,
863 elm_object_domain_translatable_text_set(btn, PACKAGE,
864 "IDS_WIFI_BUTTON_FIND_HIDDEN_NETWORK");
865 elm_object_part_content_set(layout, "button1", btn);
867 switch (viewer_manager_header_mode_get()) {
868 case HEADER_MODE_ACTIVATING:
869 case HEADER_MODE_DEACTIVATING:
870 case HEADER_MODE_SEARCHING:
871 elm_object_disabled_set(btn, EINA_TRUE);
874 elm_object_disabled_set(btn, EINA_FALSE);
878 evas_object_show(btn);
879 manager_object->sw_hidden_btn = btn;
881 __COMMON_FUNC_EXIT__;
885 static void __viewer_manager_setup_wizard_scan_btn_create(Evas_Object *genlist)
887 __COMMON_FUNC_ENTER__;
889 if (manager_object->sw_scan_btn != NULL ||
890 ug_app_state->ug_type != UG_VIEW_SETUP_WIZARD) {
891 __COMMON_FUNC_EXIT__;
895 Evas_Object *btn = NULL;
896 Evas_Object *layout = NULL;
897 Elm_Object_Item *navi_it = NULL;
899 navi_it = elm_naviframe_top_item_get(manager_object->nav);
900 layout = elm_object_item_content_get(navi_it);
902 btn = elm_button_add(layout);
903 elm_object_style_set(btn, "default");
904 evas_object_propagate_events_set(btn, EINA_FALSE);
906 evas_object_smart_callback_add(btn, "clicked", __refresh_scan_callback,
908 elm_object_domain_translatable_text_set(btn, PACKAGE,
909 "IDS_WIFI_BUTTON_SCAN");
910 elm_object_part_content_set(layout, "button2", btn);
912 switch (viewer_manager_header_mode_get()) {
913 case HEADER_MODE_ACTIVATING:
914 case HEADER_MODE_DEACTIVATING:
915 case HEADER_MODE_SEARCHING:
916 elm_object_disabled_set(btn, EINA_TRUE);
919 elm_object_disabled_set(btn, EINA_FALSE);
923 evas_object_show(btn);
924 manager_object->sw_scan_btn = btn;
926 __COMMON_FUNC_EXIT__;
929 static void viewer_manager_setup_wizard_scan_btn_set(Eina_Bool show_state)
931 __COMMON_FUNC_ENTER__;
933 if (ug_app_state->ug_type != UG_VIEW_SETUP_WIZARD ||
934 manager_object == NULL ||
935 manager_object->sw_scan_btn == NULL) {
936 __COMMON_FUNC_EXIT__;
940 elm_object_disabled_set(manager_object->sw_scan_btn, !show_state);
942 __COMMON_FUNC_EXIT__;
945 static Eina_Bool viewer_manager_scan_button_set(Eina_Bool show_state)
947 __COMMON_FUNC_ENTER__;
949 if (manager_object == NULL) {
950 __COMMON_FUNC_EXIT__;
954 if (manager_object->scan_button == NULL)
955 viewer_manager_create_scan_btn();
957 /* TODO: need to check VIEW_MANAGER_VIEW_TYPE_MAIN ?
958 * Evas_Object* navi_frame = viewer_manager_get_naviframe();
959 * view_manager_view_type_t top_view_id =
960 * (view_manager_view_type_t)evas_object_data_get(
961 * navi_frame, SCREEN_TYPE_ID_KEY);
964 if (show_state == EINA_TRUE && manager_object->scan_button != NULL)
965 elm_object_disabled_set(manager_object->scan_button, EINA_FALSE);
966 else if (show_state == EINA_FALSE && manager_object->scan_button != NULL)
967 elm_object_disabled_set(manager_object->scan_button, EINA_TRUE);
969 viewer_manager_setup_wizard_scan_btn_set(show_state);
971 __COMMON_FUNC_EXIT__;
975 static void __ea_setup_wizard_back_cb(void *data, Evas_Object *obj,
978 if ((view_manager_view_type_t)evas_object_data_get(obj, SCREEN_TYPE_ID_KEY) !=
979 VIEW_MANAGER_VIEW_TYPE_MAIN) {
980 eext_naviframe_back_cb(data, obj, event_info);
984 if (viewer_manager_is_passwd_popup_exists() == TRUE ||
985 ug_app_state->bAlive == EINA_FALSE) {
989 _lbutton_click_cb(data, obj, event_info);
992 static void __viewer_manager_create_setup_wizard_content(Evas_Object *layout)
994 __COMMON_FUNC_ENTER__;
996 Elm_Object_Item *navi_it = NULL;
998 elm_layout_file_set(layout, SETUP_WIZARD_EDJ_PATH, "main_pwlock");
999 elm_object_domain_translatable_part_text_set(layout, "text.title",
1000 PACKAGE, sc(PACKAGE, I18N_TYPE_Wi_Fi));
1002 eext_object_event_callback_add(manager_object->nav, EEXT_CALLBACK_BACK,
1003 __ea_setup_wizard_back_cb, NULL);
1005 __viewer_manager_wifi_onoff_item_create(manager_object->list, UG_VIEW_SETUP_WIZARD);
1006 __viewer_manager_onoff_description_item_create();
1008 elm_object_part_content_set(layout, "elm.swallow.content",
1009 manager_object->list);
1011 navi_it = elm_naviframe_item_push(manager_object->nav, NULL, NULL, NULL, layout, NULL);
1012 elm_naviframe_item_title_enabled_set(navi_it, EINA_FALSE, EINA_FALSE);
1014 evas_object_data_set(manager_object->nav, SCREEN_TYPE_ID_KEY,
1015 (void *)VIEW_MANAGER_VIEW_TYPE_MAIN);
1016 evas_object_smart_callback_add(manager_object->nav,
1017 "transition,finished", _transition_finished_main_cb, navi_it);
1019 Evas_Object *prev_btn = elm_button_add(layout);
1020 elm_object_style_set(prev_btn, "bottom");
1021 elm_object_part_content_set(layout, "button.prev", prev_btn);
1022 elm_object_text_set(prev_btn, sc(PACKAGE, I18N_TYPE_Prev));
1023 evas_object_smart_callback_add(prev_btn, "clicked", _lbutton_click_cb, manager_object);
1024 manager_object->prev_button = prev_btn;
1026 Evas_Object *next_btn = elm_button_add(layout);
1027 elm_object_style_set(next_btn, "bottom");
1028 elm_object_part_content_set(layout, "button.next", next_btn);
1029 elm_object_text_set(next_btn, sc(PACKAGE, I18N_TYPE_Next));
1030 evas_object_smart_callback_add(next_btn, "clicked", _rbutton_click_cb, manager_object);
1031 manager_object->next_button = next_btn;
1033 __COMMON_FUNC_EXIT__;
1036 static void __viewer_manager_create_wifi_ug_content(Evas_Object *layout,
1037 Evas_Object *_win_main)
1039 __COMMON_FUNC_ENTER__;
1041 Elm_Object_Item *navi_it = NULL;
1042 Evas_Object *back_btn = NULL;
1043 Evas_Object *more_btn = NULL;
1045 elm_layout_theme_set(layout, "layout", "application", "default");
1046 edje_object_signal_emit(elm_layout_edje_get(layout), "elm,state,show,content", "elm");
1047 edje_object_signal_emit(elm_layout_edje_get(layout), "elm,bg,show,group_list", "elm");
1049 __viewer_manager_wifi_onoff_item_create(manager_object->list, UG_VIEW_DEFAULT);
1050 __viewer_manager_onoff_description_item_create();
1052 elm_object_part_content_set(layout, "elm.swallow.content", manager_object->list);
1054 eext_object_event_callback_add(manager_object->nav, EEXT_CALLBACK_BACK, eext_naviframe_back_cb, NULL);
1056 back_btn = elm_button_add(manager_object->nav);
1057 elm_object_style_set(back_btn, "naviframe/back_btn/default");
1058 evas_object_smart_callback_add(back_btn, "clicked", __back_cb, _win_main);
1059 elm_object_focus_allow_set(back_btn, EINA_FALSE);
1061 manager_object->navi_it = navi_it = elm_naviframe_item_push(manager_object->nav,
1062 sc(PACKAGE, I18N_TYPE_Wi_Fi), back_btn, NULL,
1064 evas_object_data_set(manager_object->nav, SCREEN_TYPE_ID_KEY,
1065 (void *)VIEW_MANAGER_VIEW_TYPE_MAIN);
1066 evas_object_smart_callback_add(manager_object->nav,
1067 "transition,finished", _transition_finished_main_cb, navi_it);
1069 more_btn = elm_button_add(manager_object->nav);
1070 elm_object_style_set(more_btn, "naviframe/more/default");
1071 evas_object_smart_callback_add(more_btn, "clicked",
1072 _more_button_cb, _win_main);
1073 elm_object_item_part_content_set(navi_it, "toolbar_more_btn", more_btn);
1075 elm_naviframe_item_pop_cb_set(navi_it, _back_sk_cb, NULL);
1077 __COMMON_FUNC_EXIT__;
1080 static void __viewer_manager_create_oobe_content(Evas_Object *layout,
1081 Evas_Object *_win_main)
1083 __COMMON_FUNC_ENTER__;
1085 Elm_Object_Item *navi_it = NULL;
1087 elm_layout_theme_set(layout, "layout", "application", "default");
1088 edje_object_signal_emit(elm_layout_edje_get(layout), "elm,state,show,content", "elm");
1089 edje_object_signal_emit(elm_layout_edje_get(layout), "elm,bg,show,group_list", "elm");
1091 __viewer_manager_wifi_onoff_item_create(manager_object->list, UG_VIEW_OOBE);
1092 __viewer_manager_onoff_description_item_create();
1094 elm_object_part_content_set(layout, "elm.swallow.content", manager_object->list);
1096 eext_object_event_callback_add(manager_object->nav, EEXT_CALLBACK_BACK,
1097 eext_naviframe_back_cb, NULL);
1099 manager_object->navi_it = navi_it = elm_naviframe_item_push(manager_object->nav,
1100 NULL, NULL, NULL, layout, NULL);
1102 elm_naviframe_item_title_enabled_set(manager_object->navi_it, EINA_FALSE, EINA_FALSE);
1103 evas_object_data_set(manager_object->nav, SCREEN_TYPE_ID_KEY,
1104 (void *)VIEW_MANAGER_VIEW_TYPE_MAIN);
1105 evas_object_smart_callback_add(manager_object->nav,
1106 "transition,finished", _transition_finished_main_cb, navi_it);
1107 elm_naviframe_item_pop_cb_set(navi_it, _back_sk_cb, NULL);
1109 __COMMON_FUNC_EXIT__;
1112 #if 0 /* not used */
1113 Evas_Object *viewer_manager_create_bg(Evas_Object *parent, char *style)
1117 bg = elm_bg_add(parent);
1118 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
1122 elm_object_style_set(bg, style);
1124 elm_win_resize_object_add(parent, bg);
1125 evas_object_show(bg);
1131 Evas_Object *viewer_manager_create(Evas_Object *_parent, Evas_Object *_win_main)
1133 __COMMON_FUNC_ENTER__;
1135 retvm_if(NULL == _parent, NULL);
1136 if (manager_object != NULL) {
1137 free(manager_object);
1138 manager_object = NULL;
1141 Evas_Object *layout = NULL;
1142 Evas_Object *view_content = NULL;
1144 manager_object = g_new0(viewer_manager_object, 1);
1145 retvm_if(NULL == manager_object, NULL);
1147 /* Add Full Layout */
1148 layout = elm_layout_add(_parent);
1149 retvm_if(NULL == layout, NULL);
1151 elm_layout_theme_set(layout, "layout", "application", "default");
1152 evas_object_size_hint_weight_set(layout,
1153 EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1154 edje_object_signal_emit(elm_layout_edje_get(layout),
1155 "elm,state,show,content", "elm");
1156 edje_object_signal_emit(elm_layout_edje_get(layout),
1157 "elm,bg,show,group_list", "elm");
1158 edje_object_signal_emit(elm_layout_edje_get(layout),
1159 "elm,state,show,indicator", "elm");
1162 manager_object->nav = elm_naviframe_add(layout);
1163 assertm_if(NULL == manager_object->nav, "manager_object->nav is NULL");
1164 elm_object_part_content_set(layout,
1165 "elm.swallow.content", manager_object->nav);
1166 elm_naviframe_prev_btn_auto_pushed_set(manager_object->nav, EINA_FALSE);
1167 eext_object_event_callback_add(manager_object->nav, EEXT_CALLBACK_MORE,
1168 eext_naviframe_more_cb, NULL);
1170 /* Add layout for custom styles */
1171 elm_theme_extension_add(NULL, CUSTOM_EDITFIELD_PATH);
1173 if (ug_app_state->ug_type == UG_VIEW_OOBE)
1174 elm_theme_extension_add(NULL, OOBE_BUTTONS_EDJ_PATH);
1176 /* Add MainView Layout */
1177 view_content = elm_layout_add(manager_object->nav);
1180 manager_object->list = viewer_list_create(view_content);
1181 assertm_if(NULL == manager_object->list, "manager_object->list is NULL");
1183 /* Add app setup-wizard/wifi-ug specific contents */
1184 if (ug_app_state->ug_type == UG_VIEW_SETUP_WIZARD)
1185 __viewer_manager_create_setup_wizard_content(view_content);
1186 else if (ug_app_state->ug_type == UG_VIEW_OOBE)
1187 __viewer_manager_create_oobe_content(view_content, _win_main);
1189 __viewer_manager_create_wifi_ug_content(view_content, _win_main);
1191 if(_is_emulator()) {
1192 int state = wlan_manager_state_get();
1193 if(state == WLAN_MANAGER_UNCONNECTED) {
1194 viewer_manager_header_mode_set(HEADER_MODE_ON);
1195 wifi_emulator_create_event_timer(WIFI_EMUL_EVENT_TIMER_ACTIVATE,
1196 1000, wlan_manager_emulator_power_on, NULL);
1198 viewer_manager_header_mode_set(HEADER_MODE_OFF);
1199 wifi_emulator_create_event_timer(WIFI_EMUL_EVENT_TIMER_DEACTIVATE,
1200 500, wlan_manager_emulator_power_off, NULL);
1204 evas_object_show(layout);
1205 elm_object_focus_set(layout, EINA_TRUE);
1207 __COMMON_FUNC_EXIT__;
1211 void viewer_manager_destroy(void)
1213 __COMMON_FUNC_ENTER__;
1215 if (wifi_device_list != NULL) {
1216 g_list_free(wifi_device_list);
1217 wifi_device_list = NULL;
1220 if (manager_object != NULL) {
1221 viewer_manager_cleanup_views();
1223 if (manager_object->item_wifi_onoff_text) {
1224 g_free(manager_object->item_wifi_onoff_text);
1225 manager_object->item_wifi_onoff_text = NULL;
1228 if (manager_object->item_onoff_description) {
1229 g_free(manager_object->item_onoff_description_text);
1230 manager_object->item_onoff_description = NULL;
1233 g_free(manager_object);
1234 manager_object = NULL;
1237 __COMMON_FUNC_EXIT__;
1240 Eina_Bool viewer_manager_show(VIEWER_WINSETS winset)
1242 __COMMON_FUNC_ENTER__;
1244 assertm_if(NULL == manager_object, "Manager object is NULL");
1247 case VIEWER_WINSET_SEARCHING:
1248 viewer_manager_scan_button_set(EINA_FALSE);
1249 viewer_list_item_disable_all();
1252 case VIEWER_WINSET_SUB_CONTENTS:
1253 assertm_if(NULL == manager_object->list, "List is NULL");
1255 viewer_list_title_item_set(manager_object->item_wifi_onoff);
1256 if (ug_app_state->ug_type == UG_VIEW_SETUP_WIZARD) {
1257 __viewer_manager_hidden_button_create(manager_object->list);
1258 __viewer_manager_setup_wizard_scan_btn_create(
1259 manager_object->list);
1263 case VIEWER_WINSET_SEARCHING_GRP_TITLE:
1264 viewer_manager_scan_button_set(EINA_FALSE);
1271 __COMMON_FUNC_EXIT__;
1275 static void __viewer_manager_hidden_btn_del(void)
1277 __COMMON_FUNC_ENTER__;
1279 if (manager_object->sw_hidden_btn) {
1280 evas_object_del(manager_object->sw_hidden_btn);
1281 manager_object->sw_hidden_btn = NULL;
1284 __COMMON_FUNC_EXIT__;
1287 static void __viewer_manager_setup_wizard_scan_btn_del(void)
1289 if (ug_app_state->ug_type != UG_VIEW_SETUP_WIZARD)
1292 __COMMON_FUNC_ENTER__;
1294 if (manager_object->sw_scan_btn) {
1295 evas_object_del(manager_object->sw_scan_btn);
1296 manager_object->sw_scan_btn = NULL;
1299 __COMMON_FUNC_EXIT__;
1302 Eina_Bool viewer_manager_hide(VIEWER_WINSETS winset)
1304 __COMMON_FUNC_ENTER__;
1307 case VIEWER_WINSET_SEARCHING:
1308 /* searching view */
1309 viewer_manager_scan_button_set(EINA_TRUE);
1310 viewer_list_item_enable_all();
1313 case VIEWER_WINSET_SUB_CONTENTS:
1314 /* hidden AP and WPS PBC */
1315 if (ug_app_state->passpopup) {
1316 passwd_popup_free(ug_app_state->passpopup);
1317 ug_app_state->passpopup = NULL;
1320 if (ug_app_state->eap_view) {
1321 eap_connect_data_free(ug_app_state->eap_view);
1322 ug_app_state->eap_view = NULL;
1325 if (ug_app_state->ug_type == UG_VIEW_SETUP_WIZARD) {
1326 __viewer_manager_hidden_btn_del();
1327 __viewer_manager_setup_wizard_scan_btn_del();
1329 viewer_list_title_item_del();
1336 __COMMON_FUNC_EXIT__;
1341 /* Unused function */
1342 Eina_Bool viewer_manager_genlist_item_update(Elm_Object_Item* item)
1344 __COMMON_FUNC_ENTER__;
1346 __COMMON_FUNC_EXIT__;
1351 elm_genlist_item_update(item);
1353 __COMMON_FUNC_EXIT__;
1358 void viewer_manager_update_hidden_btn(void)
1360 if (ug_app_state->ug_type != UG_VIEW_SETUP_WIZARD)
1363 __COMMON_FUNC_ENTER__;
1364 retm_if(NULL == manager_object->sw_hidden_btn);
1366 switch (viewer_manager_header_mode_get()) {
1367 case HEADER_MODE_ACTIVATING:
1368 case HEADER_MODE_DEACTIVATING:
1369 case HEADER_MODE_SEARCHING:
1370 elm_object_disabled_set(manager_object->sw_hidden_btn,
1374 elm_object_disabled_set(manager_object->sw_hidden_btn,
1379 __COMMON_FUNC_EXIT__;
1382 void viewer_manager_update_setup_wizard_scan_btn(void)
1384 if (ug_app_state->ug_type != UG_VIEW_SETUP_WIZARD)
1387 __COMMON_FUNC_ENTER__;
1388 retm_if(NULL == manager_object->sw_scan_btn);
1390 switch (viewer_manager_header_mode_get()) {
1391 case HEADER_MODE_ACTIVATING:
1392 case HEADER_MODE_DEACTIVATING:
1393 case HEADER_MODE_SEARCHING:
1394 elm_object_disabled_set(manager_object->sw_scan_btn,
1398 elm_object_disabled_set(manager_object->sw_scan_btn,
1403 __COMMON_FUNC_EXIT__;
1406 void viewer_manager_setup_wizard_button_controller()
1408 __COMMON_FUNC_ENTER__;
1411 wifi_manager_connection_state_e connection_state;
1413 ret = wlan_manager_get_connection_state(&connection_state);
1414 if (ret != WIFI_MANAGER_ERROR_NONE)
1415 INFO_LOG(UG_NAME_NORMAL, "Failed to retrieve connection state ret [%d]", ret);
1417 if (manager_object->prev_button != NULL &&
1418 ug_app_state->lbutton_setup_wizard_prev != NULL) {
1419 elm_object_text_set(manager_object->prev_button,
1420 sc(PACKAGE, I18N_TYPE_Prev));
1423 if (connection_state == WIFI_MANAGER_CONNECTION_STATE_CONNECTED) {
1424 if (manager_object->next_button != NULL &&
1425 ug_app_state->rbutton_setup_wizard_next != NULL) {
1426 elm_object_text_set(manager_object->next_button,
1427 sc(PACKAGE, I18N_TYPE_Next));
1430 if (manager_object->next_button != NULL &&
1431 ug_app_state->rbutton_setup_wizard_skip != NULL) {
1432 elm_object_text_set(manager_object->next_button,
1433 sc(PACKAGE, I18N_TYPE_Skip));
1437 if (manager_object->sw_hidden_btn != NULL) {
1438 elm_object_domain_translatable_text_set(
1439 manager_object->sw_hidden_btn, PACKAGE,
1440 "IDS_WIFI_BUTTON_FIND_HIDDEN_NETWORK");
1443 if (manager_object->sw_scan_btn != NULL) {
1444 elm_object_domain_translatable_text_set(
1445 manager_object->sw_scan_btn, PACKAGE,
1446 "IDS_WIFI_BUTTON_SCAN");
1450 static void viewer_manager_pop_naviframe_item(void)
1452 __COMMON_FUNC_ENTER__;
1454 view_manager_view_type_t top_viewID;
1456 top_viewID = viewer_manager_view_type_get();
1457 if (top_viewID == VIEW_MANAGER_VIEW_TYPE_DETAIL)
1458 elm_naviframe_item_pop(viewer_manager_get_naviframe());
1460 __COMMON_FUNC_EXIT__;
1463 Evas_Object *viewer_manager_naviframe_power_item_get(void)
1465 __COMMON_FUNC_ENTER__;
1467 Elm_Object_Item *navi_it = NULL;
1468 Evas_Object *layout = NULL;
1470 if (manager_object == NULL)
1473 navi_it = elm_naviframe_top_item_get(manager_object->nav);
1475 if (navi_it == NULL) {
1476 ERROR_LOG(UG_NAME_ERR, "navi_it is NULL");
1480 if (ug_app_state->ug_type == UG_VIEW_SETUP_WIZARD) {
1481 layout = elm_object_item_content_get(navi_it);
1483 __COMMON_FUNC_EXIT__;
1484 return elm_object_part_content_get(layout, "title_right_btn");
1488 __COMMON_FUNC_EXIT__;
1489 return elm_object_item_part_content_get(navi_it, "title_right_btn");
1492 int viewer_manager_create_scan_btn(void)
1494 __COMMON_FUNC_ENTER__;
1495 if (ug_app_state->ug_type == UG_VIEW_SETUP_WIZARD
1496 || ug_app_state->ug_type == UG_VIEW_OOBE
1497 || manager_object->scan_button) {
1498 __COMMON_FUNC_EXIT__;
1501 Evas_Object *btn = elm_button_add(manager_object->nav);
1502 /* Use "bottom" style button */
1504 ERROR_LOG(UG_NAME_NORMAL, "Error creating toolbar");
1507 elm_object_style_set(btn, "bottom");
1508 elm_object_domain_translatable_text_set(btn, PACKAGE,
1509 "IDS_WIFI_BUTTON_SCAN");
1510 evas_object_smart_callback_add(btn, "clicked", __refresh_scan_callback, NULL);
1512 /* Set button into "toolbar" swallow part */
1513 elm_object_item_part_content_set(manager_object->navi_it, "toolbar", btn);
1514 manager_object->scan_button = btn;
1515 evas_object_show(manager_object->scan_button);
1516 __COMMON_FUNC_EXIT__;
1520 void viewer_manager_header_mode_set(HEADER_MODES new_mode)
1522 __COMMON_FUNC_ENTER__;
1524 HEADER_MODES old_mode;
1525 if (manager_object == NULL)
1528 if (HEADER_MODE_OFF > new_mode || HEADER_MODE_MAX <= new_mode) {
1529 ERROR_LOG(UG_NAME_ERR, "Invalid mode %d", new_mode);
1533 old_mode = manager_object->header_mode;
1534 if (old_mode == new_mode) {
1535 if (new_mode == HEADER_MODE_OFF && manager_object->scan_button) {
1536 evas_object_del(manager_object->scan_button);
1537 manager_object->scan_button = NULL;
1542 DEBUG_LOG(UG_NAME_NORMAL, "Header mode %d --> %d", old_mode, new_mode);
1544 manager_object->header_mode = new_mode;
1547 case HEADER_MODE_OFF:
1548 viewer_manager_onoff_description_item_set(TRUE);
1549 if (manager_object->scan_button) {
1550 evas_object_del(manager_object->scan_button);
1551 manager_object->scan_button = NULL;
1553 if (ug_app_state->ug_type == UG_VIEW_SETUP_WIZARD) {
1554 __viewer_manager_hidden_btn_del();
1555 __viewer_manager_setup_wizard_scan_btn_del();
1557 ug_app_state->is_wifi_scan_indication_block = 0;
1559 case HEADER_MODE_ON:
1560 case HEADER_MODE_CONNECTED:
1561 viewer_manager_onoff_description_item_set(FALSE);
1562 viewer_manager_scan_button_set(EINA_TRUE);
1568 if (manager_object->item_wifi_onoff != NULL)
1569 elm_genlist_item_update(manager_object->item_wifi_onoff);
1570 viewer_list_title_item_update();
1571 if (ug_app_state->ug_type == UG_VIEW_SETUP_WIZARD) {
1572 viewer_manager_update_hidden_btn();
1573 viewer_manager_update_setup_wizard_scan_btn();
1574 viewer_manager_setup_wizard_button_controller();
1577 __COMMON_FUNC_EXIT__;
1580 HEADER_MODES viewer_manager_header_mode_get(void)
1582 return manager_object->header_mode;
1585 Evas_Object* viewer_manager_get_naviframe()
1587 return manager_object->nav;
1590 void viewer_manager_refresh_ap_info(Elm_Object_Item *item)
1595 ug_genlist_data_t *gdata = elm_object_item_data_get(item);
1599 wifi_device_info_t *wifi_device = gdata->device_info;
1603 wifi_manager_ap_refresh(wifi_device->ap);
1608 static gboolean __viewer_manager_list_scroll_to_top(void *data)
1611 elm_genlist_item_bring_in((Elm_Object_Item *)data, ELM_GENLIST_ITEM_SCROLLTO_TOP);
1616 void viewer_manager_move_to_top(void)
1618 __COMMON_FUNC_ENTER__;
1620 Elm_Object_Item * first_item = NULL;
1622 if (manager_object == NULL || manager_object->list == NULL)
1625 first_item = elm_genlist_first_item_get(manager_object->list);
1626 if (first_item == NULL)
1629 common_util_managed_idle_add(__viewer_manager_list_scroll_to_top, first_item);
1631 __COMMON_FUNC_EXIT__;
1634 Elm_Object_Item *viewer_manager_move_item_to_top(Elm_Object_Item *old_item)
1636 __COMMON_FUNC_ENTER__;
1638 Elm_Object_Item *first_item = viewer_list_get_first_item();
1639 ug_genlist_data_t *gdata = NULL, *first_it_gdata = NULL;
1641 if (!old_item || !first_item) {
1642 __COMMON_FUNC_EXIT__;
1646 gdata = elm_object_item_data_get(old_item);
1647 if (!gdata || !gdata->device_info) {
1648 __COMMON_FUNC_EXIT__;
1652 if (old_item != first_item) {
1653 first_it_gdata = elm_object_item_data_get(first_item);
1654 elm_object_item_data_set(first_item, gdata);
1655 elm_object_item_data_set(old_item, first_it_gdata);
1657 if (first_item != NULL)
1658 elm_genlist_item_update(first_item);
1659 if (old_item != NULL)
1660 elm_genlist_item_update(old_item);
1663 __COMMON_FUNC_EXIT__;
1667 void viewer_manager_update_rssi(void)
1670 wifi_manager_ap_h ap;
1672 ret = wlan_manager_get_connected_ap(&ap);
1673 if (WIFI_MANAGER_ERROR_NONE != ret)
1676 Elm_Object_Item *item = item_get_for_ap(ap);
1678 wifi_manager_ap_destroy(ap);
1682 ug_genlist_data_t* gdata = elm_object_item_data_get(item);
1683 if (gdata && gdata->device_info) {
1686 if (WIFI_MANAGER_ERROR_NONE != wifi_manager_ap_get_rssi(ap, &rssi)) {
1687 wifi_manager_ap_destroy(ap);
1689 } else if (gdata->device_info->rssi != rssi) {
1690 wifi_manager_ap_refresh(gdata->device_info->ap);
1691 gdata->device_info->rssi = rssi;
1693 g_free(gdata->device_info->ap_image_path);
1695 common_utils_get_device_icon(gdata->device_info,
1696 &gdata->device_info->ap_image_path);
1699 elm_genlist_item_update(item);
1703 wifi_manager_ap_destroy(ap);
1706 static gint compare(gconstpointer a, gconstpointer b)
1708 bool favorite1 = false, favorite2 = false;
1709 wifi_manager_connection_state_e state1 = 0, state2 = 0;
1711 wifi_device_info_t *wifi_device1 = (wifi_device_info_t*)a;
1712 wifi_device_info_t *wifi_device2 = (wifi_device_info_t*)b;
1714 wifi_manager_ap_get_connection_state(wifi_device1->ap, &state1);
1715 wifi_manager_ap_get_connection_state(wifi_device2->ap, &state2);
1717 if (state1 != state2) {
1718 if (state1 == WIFI_MANAGER_CONNECTION_STATE_CONNECTED)
1720 if (state2 == WIFI_MANAGER_CONNECTION_STATE_CONNECTED)
1723 if (state1 == WIFI_MANAGER_CONNECTION_STATE_CONFIGURATION)
1725 if (state2 == WIFI_MANAGER_CONNECTION_STATE_CONFIGURATION)
1728 if (state1 == WIFI_MANAGER_CONNECTION_STATE_ASSOCIATION)
1730 if (state2 == WIFI_MANAGER_CONNECTION_STATE_ASSOCIATION)
1734 wifi_manager_ap_is_favorite(wifi_device1->ap, &favorite1);
1735 wifi_manager_ap_is_favorite(wifi_device2->ap, &favorite2);
1737 if (favorite1 != favorite2) {
1738 if (favorite1 == true)
1740 if (favorite2 == true)
1744 if (manager_object->sort_type == I18N_TYPE_Alphabetical) {
1745 return strcasecmp((const char *)wifi_device1->ssid,
1746 (const char *)wifi_device2->ssid);
1748 return ((wifi_device1->rssi >= wifi_device2->rssi) ? -1 : 1);
1752 static bool wifi_update_list_for_each_ap(wifi_manager_ap_h ap, void *user_data)
1754 int *profile_size = (int *)user_data;
1755 wifi_device_info_t *wifi_device = NULL;
1757 wifi_device = view_list_item_device_info_create(ap);
1758 if (wifi_device == NULL)
1761 wifi_device_list = g_list_insert_sorted(wifi_device_list, wifi_device, compare);
1767 static wifi_device_info_t *view_list_item_emulator_device_info_create(int index)
1769 wifi_device_info_t* wifi_device = NULL;
1771 wifi_device = g_try_new0(wifi_device_info_t, 1);
1772 retvm_if(NULL == wifi_device, NULL);
1774 wifi_device->ap = NULL;
1775 wifi_device->ssid = g_strdup(wifi_samples[index].ssid);
1776 wifi_device->rssi = 100;
1777 wifi_device->security_mode = wifi_samples[index].security;
1778 wifi_device->wps_mode = wifi_samples[index].wps;
1779 common_utils_get_device_icon(wifi_device, &wifi_device->ap_image_path);
1784 static void wifi_update_list_for_emulator_ap(void)
1787 wifi_device_info_t *wifi_device = NULL;
1789 for (index = 0; index < wifi_sample_count; ++index) {
1790 wifi_device = view_list_item_emulator_device_info_create(index);
1791 if (wifi_device == NULL)
1794 wifi_device_list = g_list_insert_sorted(wifi_device_list, wifi_device, compare);
1795 INFO_LOG(UG_NAME_NORMAL, "wifi_device_list added device(%s)", wifi_device->ssid);
1799 static int viewer_manager_update_list_all(char *ssid)
1801 int i, profiles_list_size = 0;
1802 Elm_Object_Item *item = NULL;
1803 GList* list_of_device ;
1804 wifi_device_info_t *wifi_device = NULL;
1807 __COMMON_FUNC_ENTER__;
1809 view_manager_list_update_info_t update_info;
1810 memset(&update_info, 0, sizeof(update_info));
1812 manager_object->sort_type = _convert_vconf_to_sort_by_value(
1813 common_util_get_system_registry(VCONF_SORT_BY));
1815 if (_is_emulator()) {
1816 profiles_list_size = wifi_sample_count;
1817 wifi_update_list_for_emulator_ap();
1819 wlan_manager_foreach_found_ap(wifi_update_list_for_each_ap, &profiles_list_size);
1821 list_of_device = wifi_device_list;
1822 for (i = 0; i < profiles_list_size && list_of_device != NULL; i++) {
1823 wifi_device = (wifi_device_info_t*)list_of_device->data;
1824 if (ssid == NULL || g_strcmp0(ssid, wifi_device->ssid) == 0) {
1825 item = viewer_list_item_insert_after(wifi_device, update_info.last_appended_item);
1827 update_info.last_appended_item = item;
1828 update_info.total_items_added++;
1833 list_of_device = list_of_device->next;
1836 if (wifi_device_list != NULL) {
1837 g_list_free(wifi_device_list);
1838 wifi_device_list = NULL;
1841 // Append hidden AP item
1842 viewer_list_item_hidden_network_set(update_info.last_appended_item);
1843 INFO_LOG(UG_NAME_NORMAL, "total items added = %d", update_info.total_items_added);
1845 if (0 == update_info.total_items_added) {
1846 /* Check if whether it's the first time we get no profiles,
1847 * if so, send one more scan request. This avoids the issue of
1848 * showing 'No Wi-Fi AP found' during launch time.
1850 if (manager_object->is_first_time_no_profiles == false) {
1851 HEADER_MODES current_state;
1852 int scan_result = WLAN_MANAGER_ERR_NONE;
1853 current_state = viewer_manager_header_mode_get();
1855 viewer_manager_show(VIEWER_WINSET_SEARCHING);
1856 viewer_manager_header_mode_set(HEADER_MODE_SEARCHING);
1858 scan_result = wlan_manager_scan();
1859 if (scan_result != WLAN_MANAGER_ERR_NONE) {
1860 viewer_manager_hide(VIEWER_WINSET_SEARCHING);
1861 viewer_manager_header_mode_set(current_state);
1864 manager_object->is_first_time_no_profiles = true;
1866 /* if there is no scan_data, generate No-AP item */
1867 item = viewer_list_item_insert_after(NULL, NULL);
1869 elm_genlist_item_select_mode_set(item,
1870 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1876 wifi_emulator_remove_event_timer(WIFI_EMUL_EVENT_TIMER_SCAN);
1878 __COMMON_FUNC_EXIT__;
1882 Eina_Bool viewer_manager_refresh(void)
1887 INFO_LOG(UG_NAME_SCAN, "viewer manager refresh");
1889 if (manager_object == NULL)
1892 header_state = viewer_manager_header_mode_get();
1893 if (header_state == HEADER_MODE_CONNECTING ||
1894 header_state == HEADER_MODE_ACTIVATING ||
1895 header_state == HEADER_MODE_DEACTIVATING) {
1899 viewer_list_item_disable_all();
1900 viewer_list_item_clear();
1902 state = wlan_manager_state_get();
1903 if (WLAN_MANAGER_ERROR == state || WLAN_MANAGER_OFF == state) {
1904 /* Some body requested to refresh the list
1905 * while the WLAN manager is OFF or Unable to get the profile state
1907 INFO_LOG(UG_NAME_ERR, "WLAN Manager state: %d", state);
1909 viewer_manager_header_mode_set(HEADER_MODE_OFF);
1914 wifi_manager_ap_h ap = wlan_manager_get_ap_with_state(state);
1915 viewer_manager_update_list_all(NULL);
1916 if (ug_app_state->ug_type == UG_VIEW_SETUP_WIZARD) {
1917 __viewer_manager_hidden_button_create(manager_object->list);
1918 __viewer_manager_setup_wizard_scan_btn_create(
1919 manager_object->list);
1922 if (WLAN_MANAGER_CONNECTING == state) {
1923 INFO_LOG(UG_NAME_NORMAL, "Wi-Fi is connecting");
1925 Elm_Object_Item* target_item = item_get_for_ap(ap);
1927 viewer_manager_header_mode_set(HEADER_MODE_CONNECTING);
1928 viewer_list_item_radio_mode_set(target_item,
1929 VIEWER_ITEM_RADIO_MODE_CONNECTING);
1930 } else if (WLAN_MANAGER_CONNECTED == state) {
1931 INFO_LOG(UG_NAME_NORMAL, "Wi-Fi is connected");
1933 Elm_Object_Item* target_item = item_get_for_ap(ap);
1935 target_item = viewer_manager_move_item_to_top(target_item);
1936 viewer_manager_header_mode_set(HEADER_MODE_CONNECTED);
1937 viewer_list_item_radio_mode_set(target_item,
1938 VIEWER_ITEM_RADIO_MODE_CONNECTED);
1940 INFO_LOG(UG_NAME_NORMAL, "Wi-Fi state: %d", state);
1942 viewer_manager_header_mode_set(HEADER_MODE_ON);
1944 wifi_manager_ap_destroy(ap);
1946 INFO_LOG(UG_NAME_SCAN, "viewer manager refresh finished");
1951 static void hidden_ap_connect_ok_cb(void *data,
1952 Evas_Object *obj, void *event_info)
1954 __COMMON_FUNC_ENTER__;
1956 hidden_ap_data_t *hidden_ap_data = (hidden_ap_data_t *)data;
1957 if (hidden_ap_data == NULL) {
1958 __COMMON_FUNC_EXIT__;
1962 char* szPassword = NULL;
1963 wifi_manager_ap_h ap;
1965 int ret = wlan_manager_ap_create(hidden_ap_data->ssid, &ap);
1966 if (WIFI_MANAGER_ERROR_NONE != ret) {
1967 ERROR_LOG(UG_NAME_ERR, "Failed to create an AP handle. Err = %d", ret);
1972 SECURE_INFO_LOG(UG_NAME_NORMAL, "Hidden AP[%s]. Sec mode = %d. Connect ok cb",
1973 hidden_ap_data->ssid, hidden_ap_data->sec_mode);
1975 switch (hidden_ap_data->sec_mode) {
1976 case WIFI_MANAGER_SECURITY_TYPE_NONE:
1977 INFO_LOG(UG_NAME_NORMAL, "OPEN: event %p; passpopup %p",
1978 event_info, ug_app_state->passpopup);
1980 wifi_manager_ap_set_security_type(ap, WIFI_MANAGER_SECURITY_TYPE_NONE);
1983 case WIFI_MANAGER_SECURITY_TYPE_WEP:
1984 case WIFI_MANAGER_SECURITY_TYPE_WPA_PSK:
1985 case WIFI_MANAGER_SECURITY_TYPE_WPA2_PSK:
1986 szPassword = passwd_popup_get_txt(ug_app_state->passpopup);
1987 wifi_manager_ap_set_security_type(ap, hidden_ap_data->sec_mode);
1989 int ret = wifi_manager_ap_set_passphrase(ap, szPassword);
1990 if (ret != WIFI_MANAGER_ERROR_NONE)
1991 INFO_LOG(UG_NAME_ERR, "Failed to set passpharse [%d]" , ret);
1995 passwd_popup_free(ug_app_state->passpopup);
1996 ug_app_state->passpopup = NULL;
2000 INFO_LOG(UG_NAME_NORMAL, "Fatal: Unknown Sec mode: %d",
2001 hidden_ap_data->sec_mode);
2003 goto hidden_ap_connect_end;
2006 wlan_manager_connect(ap);
2008 hidden_ap_connect_end:
2009 wifi_manager_ap_destroy(ap);
2012 viewer_manager_hidden_confirm_cleanup();
2014 __COMMON_FUNC_EXIT__;
2017 static void hidden_ap_connect_cancel_cb(void *data, Evas_Object *obj,
2020 __COMMON_FUNC_ENTER__;
2022 hidden_ap_data_t *hidden_ap_data = (hidden_ap_data_t *)data;
2023 if (hidden_ap_data == NULL) {
2024 __COMMON_FUNC_EXIT__;
2028 switch (hidden_ap_data->sec_mode) {
2029 case WIFI_MANAGER_SECURITY_TYPE_NONE:
2030 INFO_LOG(UG_NAME_NORMAL, "This hidden AP is Open");
2033 case WIFI_MANAGER_SECURITY_TYPE_WEP:
2034 case WIFI_MANAGER_SECURITY_TYPE_WPA_PSK:
2035 case WIFI_MANAGER_SECURITY_TYPE_WPA2_PSK:
2036 INFO_LOG(UG_NAME_NORMAL, "Hidden AP Secured");
2038 passwd_popup_free(ug_app_state->passpopup);
2039 ug_app_state->passpopup = NULL;
2043 INFO_LOG(UG_NAME_NORMAL, "Fatal: Unknown Sec mode: %d",
2044 hidden_ap_data->sec_mode);
2048 viewer_manager_request_scan();
2049 viewer_manager_hidden_confirm_cleanup();
2051 __COMMON_FUNC_EXIT__;
2054 static void __hidden_ap_cancel_mouseup_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
2056 __COMMON_FUNC_ENTER__;
2058 Evas_Event_Mouse_Up *event = event_info;
2060 if (event->button == 3)
2061 hidden_ap_connect_cancel_cb(data, obj, event_info);
2063 __COMMON_FUNC_EXIT__;
2066 static void __hidden_ap_cancel_keydown_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
2068 __COMMON_FUNC_ENTER__;
2070 Evas_Event_Key_Down *event = event_info;
2072 if (g_strcmp0(event->keyname, "XF86Back") == 0)
2073 hidden_ap_connect_cancel_cb(data, obj, event_info);
2075 __COMMON_FUNC_EXIT__;
2078 void viewer_manager_eap_view_deref(void)
2080 __COMMON_FUNC_ENTER__;
2082 ug_app_state->eap_view = NULL;
2084 __COMMON_FUNC_EXIT__;
2087 void viewer_manager_specific_scan_response_hlr(
2088 GSList *bss_info_list, void *user_data)
2090 hidden_ap_data_t *hidden_ap_data = NULL;
2091 const char *ssid = (const char *)user_data;
2092 wifi_manager_security_type_e sec_mode = 0;
2093 bool favorite = false;
2094 ug_genlist_data_t* gdata = NULL;
2095 Evas_Object *popup = NULL;
2096 int hidden_ap_count = (int)g_slist_length(bss_info_list);
2097 Elm_Object_Item *item = NULL;
2099 viewer_manager_hide(VIEWER_WINSET_SEARCHING);
2100 viewer_manager_header_mode_set(HEADER_MODE_ON);
2102 if (view_hidden_ap_popup_data_get() == NULL) {
2103 ERROR_LOG(UG_NAME_RESP, "Popup is already destroyed");
2109 * We will delete the popup anyway
2111 view_hidden_ap_popup_destroy();
2114 ERROR_LOG(UG_NAME_RESP, "SSID is empty");
2118 INFO_LOG(UG_NAME_RESP, "Recieved %s(%d) hidden Wi-Fi networks",
2119 ssid, hidden_ap_count);
2120 viewer_list_item_clear();
2121 hidden_ap_count = viewer_manager_update_list_all((char *)ssid);
2122 INFO_LOG(UG_NAME_NORMAL, "Found %s(%d) Wi-Fi networks", ssid,
2125 if (hidden_ap_count > 1)
2128 viewer_manager_refresh();
2129 if (hidden_ap_count == 0) {
2130 INFO_LOG(UG_NAME_ERR, "no ap found");
2131 common_utils_send_message_to_net_popup("Network connection popup",
2132 "no ap found", "toast_popup", NULL);
2133 /*Recreate the popup*/
2134 view_hidden_ap_popup_create(ug_app_state->layout_main, PACKAGE);
2138 item = item_get_for_ssid(ssid);
2140 gdata = elm_object_item_data_get(item);
2141 if (gdata == NULL || gdata->device_info == NULL ||
2142 gdata->radio_mode == VIEWER_ITEM_RADIO_MODE_CONNECTED)
2144 sec_mode = gdata->device_info->security_mode;
2145 gdata->device_info->is_hidden = true;
2146 wifi_manager_ap_is_favorite(gdata->device_info->ap, &favorite);
2147 if (favorite == true) {
2148 wlan_manager_connect(gdata->device_info->ap);
2152 /* Only if there is one AP found then we need Users further action */
2154 case WIFI_MANAGER_SECURITY_TYPE_NONE:
2155 SECURE_INFO_LOG(UG_NAME_NORMAL, "%s open network found", ssid);
2157 hidden_ap_data = g_new0(hidden_ap_data_t, 1);
2158 hidden_ap_data->sec_mode = sec_mode;
2159 hidden_ap_data->ssid = g_strdup(ssid);
2161 popup_btn_info_t popup_btn_data;
2162 memset(&popup_btn_data, 0, sizeof(popup_btn_data));
2163 popup_btn_data.title_txt = g_strdup(ssid);
2164 popup_btn_data.info_txt = "IDS_WIFI_BODY_A_WI_FI_NETWORK_HAS_BEEN_DETECTED_YOU_WILL_BE_CONNECTED";
2165 popup_btn_data.btn1_txt = "IDS_WIFI_SK_CANCEL";
2166 popup_btn_data.btn1_cb = hidden_ap_connect_cancel_cb;
2167 popup_btn_data.btn1_data = popup_btn_data.btn2_data = hidden_ap_data;
2168 popup_btn_data.btn2_txt = "IDS_WIFI_BODY_CONNECT";
2169 popup_btn_data.btn2_cb = hidden_ap_connect_ok_cb;
2171 popup = common_utils_show_info_popup(ug_app_state->layout_main,
2173 g_free(popup_btn_data.title_txt);
2175 hidden_ap_data->confirm_popup = popup;
2177 evas_object_event_callback_add(popup,
2178 EVAS_CALLBACK_MOUSE_UP,
2179 __hidden_ap_cancel_mouseup_cb,
2181 evas_object_event_callback_add(popup,
2182 EVAS_CALLBACK_KEY_DOWN,
2183 __hidden_ap_cancel_keydown_cb,
2186 manager_object->hidden_popup_data = hidden_ap_data;
2189 case WIFI_MANAGER_SECURITY_TYPE_EAP:
2190 SECURE_INFO_LOG(UG_NAME_NORMAL, "%s IEEE8021X found", ssid);
2192 wifi_device_info_t device_info;
2193 wifi_manager_ap_h ap;
2195 wlan_manager_ap_create(ssid, &ap);
2196 wifi_manager_ap_set_security_type(ap, WIFI_MANAGER_SECURITY_TYPE_EAP);
2198 struct ug_data *ugd = (struct ug_data *)ug_app_state->gadget;
2200 memset(&device_info, 0, sizeof(device_info));
2201 device_info.security_mode = WIFI_MANAGER_SECURITY_TYPE_EAP;
2202 device_info.ssid = (char *)ssid;
2203 device_info.ap = ap;
2204 ug_app_state->eap_view =
2205 create_eap_view(ug_app_state->parent_layout,
2207 ug_app_state->conformant,
2208 PACKAGE, &device_info,
2209 viewer_manager_eap_view_deref);
2211 wifi_manager_ap_destroy(ap);
2215 case WIFI_MANAGER_SECURITY_TYPE_WEP:
2216 case WIFI_MANAGER_SECURITY_TYPE_WPA_PSK:
2217 case WIFI_MANAGER_SECURITY_TYPE_WPA2_PSK:
2218 SECURE_INFO_LOG(UG_NAME_NORMAL,
2219 "Secured(%d) %s found", sec_mode, ssid);
2221 pswd_popup_create_req_data_t popup_info;
2223 hidden_ap_data = g_try_new0(hidden_ap_data_t, 1);
2224 if (hidden_ap_data == NULL) {
2225 ERROR_LOG(UG_NAME_RESP, "Memory allocation error.");
2228 hidden_ap_data->sec_mode = sec_mode;
2229 hidden_ap_data->ssid = g_strdup(ssid);
2230 if (gdata && gdata->device_info) {
2231 hidden_ap_data->device_info = view_list_item_device_info_create(
2232 gdata->device_info->ap);
2234 memset(&popup_info, 0, sizeof(pswd_popup_create_req_data_t));
2235 /* Wi-Fi hidden network cannot be connected by WPS method.
2236 * In addition, Wi-Fi network info is also impossible to be set.
2237 * It's ConnMan agent limitation.
2238 * Do not use WPS method in here.
2240 popup_info.title = (char *)ssid;
2241 popup_info.ok_cb = hidden_ap_connect_ok_cb;
2242 popup_info.cancel_cb = hidden_ap_connect_cancel_cb;
2243 popup_info.cb_data = hidden_ap_data;
2244 popup_info.sec_type = sec_mode;
2246 ug_app_state->passpopup =
2247 create_passwd_popup(
2248 ug_app_state->conformant,
2249 ug_app_state->layout_main,
2250 PACKAGE, &popup_info);
2251 if (ug_app_state->passpopup == NULL)
2252 INFO_LOG(UG_NAME_ERR, "Fail to create password popup");
2254 manager_object->hidden_popup_data = hidden_ap_data;
2258 INFO_LOG(UG_NAME_NORMAL, "Unknown security mode: %d", sec_mode);
2267 wifi_device_info_t *view_list_item_device_info_create(wifi_manager_ap_h ap)
2270 wifi_device_info_t* wifi_device = NULL;
2273 wifi_device = g_try_new0(wifi_device_info_t, 1);
2274 retvm_if(NULL == wifi_device, NULL);
2276 if (WIFI_MANAGER_ERROR_NONE != wifi_manager_ap_clone(&(wifi_device->ap), ap))
2277 goto FREE_DEVICE_INFO;
2278 else if (WIFI_MANAGER_ERROR_NONE != wifi_manager_ap_get_essid(ap, &(wifi_device->ssid)))
2279 goto FREE_DEVICE_INFO;
2280 else if (WIFI_MANAGER_ERROR_NONE != wifi_manager_ap_get_rssi(ap, &(wifi_device->rssi)))
2281 goto FREE_DEVICE_INFO;
2282 else if (WIFI_MANAGER_ERROR_NONE != wifi_manager_ap_get_security_type(ap, &(wifi_device->security_mode)))
2283 goto FREE_DEVICE_INFO;
2284 else if (WIFI_MANAGER_ERROR_NONE != wifi_manager_ap_is_wps_supported(ap, &(wifi_device->wps_mode)))
2285 goto FREE_DEVICE_INFO;
2287 common_utils_get_device_icon(wifi_device, &wifi_device->ap_image_path);
2292 if (ret == false && wifi_device) {
2293 wifi_manager_ap_destroy(wifi_device->ap);
2294 g_free(wifi_device->ap_image_path);
2295 g_free(wifi_device->ap_status_txt);
2296 g_free(wifi_device->ssid);
2297 g_free(wifi_device);
2306 view_manager_view_type_t viewer_manager_view_type_get(void)
2308 __COMMON_FUNC_ENTER__;
2310 Evas_Object* navi_frame = NULL;
2311 view_manager_view_type_t top_view_id;
2313 navi_frame = viewer_manager_get_naviframe();
2314 top_view_id = (view_manager_view_type_t)evas_object_data_get(
2316 SCREEN_TYPE_ID_KEY);
2318 __COMMON_FUNC_EXIT__;
2322 void viewer_manager_request_scan(void)
2324 __COMMON_FUNC_ENTER__;
2326 HEADER_MODES current_state;
2328 current_state = viewer_manager_header_mode_get();
2330 if (current_state == HEADER_MODE_ON ||
2331 current_state == HEADER_MODE_CONNECTED) {
2334 INFO_LOG(UG_NAME_NORMAL, "Time to make a scan..");
2336 viewer_manager_show(VIEWER_WINSET_SEARCHING_GRP_TITLE);
2337 viewer_manager_header_mode_set(HEADER_MODE_SEARCHING);
2339 scan_result = wlan_manager_scan();
2340 if (scan_result != WLAN_MANAGER_ERR_NONE)
2341 viewer_manager_header_mode_set(current_state);
2344 __COMMON_FUNC_EXIT__;
2347 void viewer_manager_ctxpopup_cleanup(void)
2349 if (manager_object->ctxpopup) {
2350 evas_object_del(manager_object->ctxpopup);
2351 manager_object->ctxpopup = NULL;
2355 void viewer_manager_hidden_confirm_cleanup(void)
2357 if (manager_object == NULL)
2360 hidden_ap_data_t *hidden_data = manager_object->hidden_popup_data;
2362 if (hidden_data != NULL) {
2363 if (hidden_data->confirm_popup != NULL) {
2364 evas_object_del(hidden_data->confirm_popup);
2365 hidden_data->confirm_popup = NULL;
2368 if (hidden_data->device_info)
2369 g_free(hidden_data->device_info);
2370 g_free(hidden_data->ssid);
2371 g_free(hidden_data);
2373 manager_object->hidden_popup_data = NULL;
2377 void viewer_manager_cleanup_views(void)
2379 viewer_manager_ctxpopup_cleanup();
2381 viewer_manager_pop_naviframe_item();
2382 view_hidden_ap_popup_delete();
2383 viewer_manager_hidden_confirm_cleanup();
2386 void viewer_manager_rotate_top_setupwizard_layout(void)
2388 Evas_Object *layout = NULL;
2389 struct ug_data *ugd;
2391 Elm_Object_Item *navi_it = NULL;
2393 navi_it = elm_naviframe_top_item_get(manager_object->nav);
2394 layout = elm_object_item_content_get(navi_it);
2396 ugd = (struct ug_data *)ug_app_state->gadget;
2397 change_ang = elm_win_rotation_get(ugd->win_main);
2398 if (change_ang == 0 || change_ang == 180) {
2399 common_utils_contents_rotation_adjust(UG_EVENT_ROTATE_PORTRAIT);
2400 edje_object_signal_emit((Evas_Object *)elm_layout_edje_get(layout),
2401 "location,vertical", "elm");
2403 common_utils_contents_rotation_adjust(UG_EVENT_ROTATE_LANDSCAPE);
2404 edje_object_signal_emit((Evas_Object *)elm_layout_edje_get(layout),
2405 "location,horizontal", "elm");