4 * Copyright 2012 Samsung Electronics Co., Ltd
6 * Licensed under the Flora License, Version 1.0 (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 <efl_assist.h>
22 #include <vconf-keys.h>
23 #include <ui-gadget.h>
24 #include <app_control_internal.h>
25 #include <efl_extension.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 wlan_security_mode_type_t 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 HEADER_MODES header_mode;
60 Evas_Object *ctxpopup;
61 bool is_first_time_no_profiles;
64 hidden_ap_data_t *hidden_popup_data;
65 } viewer_manager_object;
69 Elm_Object_Item *last_appended_item;
70 int total_items_added;
71 } view_manager_list_update_info_t;
73 static viewer_manager_object *manager_object = NULL;
75 extern wifi_appdata *ug_app_state;
77 static Elm_Genlist_Item_Class wifi_onoff_itc;
79 static GList *wifi_device_list = NULL;
80 static Eina_Bool rotate_flag = EINA_FALSE;
82 static bool show_more = TRUE;
84 static void _hidden_button_callback(void* data, Evas_Object* obj, void* event_info);
85 static void viewer_manager_hidden_confirm_cleanup(void);
87 #ifdef MODEL_BUILD_FEATURE_WLAN_CONCURRENT_MODE
88 static void _launch_wifi_direct_app(void)
90 int ret = APP_CONTROL_ERROR_NONE;
91 app_control_h app_control;
93 app_control_create(&app_control);
94 app_control_set_operation(app_control, APP_CONTROL_OPERATION_DEFAULT);
95 app_control_set_launch_mode(app_control, APP_CONTROL_LAUNCH_MODE_GROUP);
96 app_control_set_app_id(app_control, "setting-wifidirect-efl");
98 ret = app_control_send_launch_request(app_control, NULL, NULL);
99 if(ret == APP_CONTROL_ERROR_NONE) {
100 INFO_LOG(UG_NAME_NORMAL, "Launch Wi-Fi Direct successful");
102 ERROR_LOG(UG_NAME_NORMAL, "Fail to launch Wi-Fi Direct");
105 app_control_destroy(app_control);
109 static gboolean viewer_manager_is_passwd_popup_exists(void)
111 if (ug_app_state->passpopup != NULL)
117 void language_changed_refresh()
119 if (UG_VIEW_SETUP_WIZARD == ug_app_state->ug_type) {
120 elm_genlist_realized_items_update(manager_object->list);
121 viewer_manager_refresh();
125 void viewer_manager_update_item_favorite_status(wifi_ap_h ap)
130 Elm_Object_Item *target_item = item_get_for_ap(ap);
131 if (target_item == NULL)
134 ug_genlist_data_t *gdata = NULL;
136 gdata = (ug_genlist_data_t *)elm_object_item_data_get(target_item);
137 if (gdata == NULL || gdata->device_info == NULL) {
138 INFO_LOG(COMMON_NAME_ERR, "gdata or device_info is NULL");
142 gdata->radio_mode = VIEWER_ITEM_RADIO_MODE_OFF;
143 if (gdata->device_info->ap_status_txt) {
144 g_free(gdata->device_info->ap_status_txt);
145 gdata->device_info->ap_status_txt =
146 common_utils_get_ap_security_type_info_txt(PACKAGE,
147 gdata->device_info, false);
150 if(target_item != NULL)
151 elm_genlist_item_update(target_item);
154 void power_control(void)
156 __COMMON_FUNC_ENTER__;
159 cur_state = viewer_manager_header_mode_get();
161 INFO_LOG(UG_NAME_NORMAL, "current state %d\n", cur_state);
166 case HEADER_MODE_OFF:
167 case HEADER_MODE_ACTIVATING:
168 ug_app_state->is_first_scan = true;
169 ret = wlan_manager_power_on();
171 case WLAN_MANAGER_ERR_NONE:
172 viewer_manager_show(VIEWER_WINSET_SEARCHING);
173 viewer_manager_header_mode_set(HEADER_MODE_ACTIVATING);
174 viewer_manager_create_scan_btn();
177 #if defined TIZEN_TETHERING_ENABLE
178 case WLAN_MANAGER_ERR_WIFI_TETHERING_OCCUPIED:
179 winset_popup_mode_set(ug_app_state->popup_manager,
180 POPUP_OPTION_POWER_ON_FAILED_TETHERING_OCCUPIED, NULL);
183 case WLAN_MANAGER_ERR_WIFI_AP_TETHERING_OCCUPIED:
184 winset_popup_mode_set(ug_app_state->popup_manager,
185 POPUP_OPTION_POWER_ON_FAILED_TETHERING_AP_OCCUPIED, NULL);
188 case WLAN_MANAGER_ERR_IN_PROGRESS:
193 viewer_manager_header_mode_set(HEADER_MODE_OFF);
194 INFO_LOG(UG_NAME_NORMAL, "power on failed. ret = %d", ret);
201 case HEADER_MODE_CONNECTING:
202 case HEADER_MODE_CONNECTED:
203 case HEADER_MODE_SEARCHING:
204 ret = wlan_manager_power_off();
206 case WLAN_MANAGER_ERR_NONE:
207 viewer_manager_show(VIEWER_WINSET_SEARCHING);
208 viewer_manager_header_mode_set(HEADER_MODE_DEACTIVATING);
210 // Lets ignore all the scan updates because we are powering off now.
211 wlan_manager_disable_scan_result_update();
214 case WLAN_MANAGER_ERR_IN_PROGRESS:
219 INFO_LOG(UG_NAME_NORMAL, "power off failed. ret = %d", ret);
225 case HEADER_MODE_DEACTIVATING:
227 INFO_LOG(UG_NAME_NORMAL, "Powering off in progress. Let it complete. \n");
231 __COMMON_FUNC_EXIT__;
234 static void _transition_finished_main_cb(void *data, Evas_Object *obj, void *event_info)
236 __COMMON_FUNC_ENTER__;
238 view_manager_view_type_t top_view_id;
240 top_view_id = (view_manager_view_type_t)evas_object_data_get(
241 obj, SCREEN_TYPE_ID_KEY);
243 if (data == elm_naviframe_top_item_get(obj)) {
244 /* We are now in main view */
245 if (viewer_manager_is_passwd_popup_exists() == TRUE) {
246 top_view_id = VIEW_MANAGER_VIEW_TYPE_PASSWD_POPUP;
248 top_view_id = VIEW_MANAGER_VIEW_TYPE_MAIN;
249 if (wifi_is_scan_required() == true) {
250 viewer_manager_request_scan();
253 evas_object_data_set(obj, SCREEN_TYPE_ID_KEY,
254 (void *)VIEW_MANAGER_VIEW_TYPE_MAIN);
256 viewer_manager_rotate_top_setupwizard_layout();
259 INFO_LOG(UG_NAME_NORMAL, "top view id = %d", top_view_id);
261 switch(top_view_id) {
262 case VIEW_MANAGER_VIEW_TYPE_MAIN:
263 /* Lets enable the scan updates */
264 wlan_manager_enable_scan_result_update();
267 case VIEW_MANAGER_VIEW_TYPE_DETAIL:
268 case VIEW_MANAGER_VIEW_TYPE_EAP:
269 case VIEW_MANAGER_VIEW_TYPE_PASSWD_POPUP:
271 /* Lets disable the scan updates so that the UI is not refreshed */
272 wlan_manager_disable_scan_result_update();
273 if (top_view_id == VIEW_MANAGER_VIEW_TYPE_PASSWD_POPUP) {
274 passwd_popup_show(ug_app_state->passpopup);
279 __COMMON_FUNC_EXIT__;
282 static void _lbutton_click_cb(void *data, Evas_Object *obj, void *event_info)
284 __COMMON_FUNC_ENTER__;
286 app_control_h app_control;
289 ret = app_control_create(&app_control);
290 if (ret != APP_CONTROL_ERROR_NONE) {
291 INFO_LOG(UG_NAME_ERR, "app_control_create failed: %d", ret);
295 app_control_add_extra_data(app_control, "result", "lbutton_click");
296 ug_send_result(ug_app_state->ug, app_control);
298 app_control_destroy(app_control);
299 ug_destroy_me(ug_app_state->ug);
301 __COMMON_FUNC_EXIT__;
304 static void _rbutton_click_cb(void *data, Evas_Object *obj, void *event_info)
306 __COMMON_FUNC_ENTER__;
308 app_control_h app_control;
311 ret = app_control_create(&app_control);
312 if (ret != APP_CONTROL_ERROR_NONE) {
313 INFO_LOG(UG_NAME_ERR, "app_control_create failed: %d", ret);
317 app_control_add_extra_data(app_control, "result", "rbutton_click");
318 ug_send_result(ug_app_state->ug, app_control);
320 app_control_destroy(app_control);
321 ug_destroy_me(ug_app_state->ug);
323 __COMMON_FUNC_EXIT__;
326 static void __back_cb(void *data, Evas_Object *obj, void *event_info)
328 __COMMON_FUNC_ENTER__;
330 if ((view_manager_view_type_t)evas_object_data_get(obj, SCREEN_TYPE_ID_KEY) !=
331 VIEW_MANAGER_VIEW_TYPE_MAIN) {
332 eext_naviframe_back_cb(data, obj, event_info);
333 __COMMON_FUNC_EXIT__;
337 if (viewer_manager_is_passwd_popup_exists() == TRUE ||
338 ug_app_state->bAlive == EINA_FALSE) {
339 __COMMON_FUNC_EXIT__;
345 __COMMON_FUNC_EXIT__;
348 static Eina_Bool _back_sk_cb(void *data, Elm_Object_Item *it)
350 __COMMON_FUNC_ENTER__;
352 if (ug_app_state->bAlive == EINA_FALSE) {
353 __COMMON_FUNC_EXIT__;
359 __COMMON_FUNC_EXIT__;
363 #ifdef MODEL_BUILD_FEATURE_WLAN_CONCURRENT_MODE
364 static gboolean __activate_more_btn(gpointer pdata)
368 if (ug_app_state->timeout) {
369 g_source_remove(ug_app_state->timeout);
370 ug_app_state->timeout = 0;
377 static void _ctxpopup_item_select_cb(void *data, Evas_Object *obj,
380 const char *label = elm_object_item_text_get((Elm_Object_Item *) event_info);
382 SECURE_INFO_LOG(UG_NAME_NORMAL, "text(%s) is clicked\n", label);
385 if (g_strcmp0(label, sc(PACKAGE, I18N_TYPE_Advanced)) == 0) {
387 } else if (g_strcmp0(label, sc(PACKAGE, I18N_TYPE_Find_Hidden_Network)) == 0) {
388 _hidden_button_callback(data, obj, event_info);
390 #ifdef MODEL_BUILD_FEATURE_WLAN_CONCURRENT_MODE
391 else if (g_strcmp0(label, sc(PACKAGE, I18N_TYPE_WiFi_direct)) == 0) {
393 ug_app_state->timeout = g_timeout_add(300, __activate_more_btn, NULL);
394 _launch_wifi_direct_app();
398 if (manager_object->ctxpopup) {
399 evas_object_del(manager_object->ctxpopup);
400 manager_object->ctxpopup = NULL;
404 static void _ctxpopup_del_cb(void *data,
405 Evas_Object *obj, void *event_info)
407 __COMMON_FUNC_ENTER__;
412 evas_object_del(manager_object->ctxpopup);
413 manager_object->ctxpopup = NULL;
415 __COMMON_FUNC_EXIT__;
418 static void _ctxpopup_move(Evas_Object *parent)
420 __COMMON_FUNC_ENTER__;
425 Evas_Coord y = 0, w = 0, h = 0;
428 elm_win_screen_size_get(parent, NULL, &y, &w, &h);
429 rotate_angle = elm_win_rotation_get(parent);
431 if (0 == rotate_angle || 180 == rotate_angle)
432 evas_object_move(manager_object->ctxpopup, w/2, h);
433 else if (90 == rotate_angle)
434 evas_object_move(manager_object->ctxpopup, h/2, w);
436 evas_object_move(manager_object->ctxpopup, h/2, w);
438 __COMMON_FUNC_EXIT__;
441 static void _ctxpopup_dismissed_cb(void *data, Evas_Object *obj,
444 __COMMON_FUNC_ENTER__;
449 Evas_Object *_win_main = data;
452 evas_object_del(manager_object->ctxpopup);
453 manager_object->ctxpopup = NULL;
455 _ctxpopup_move(_win_main);
456 evas_object_show(manager_object->ctxpopup);
457 rotate_flag = EINA_FALSE;
460 __COMMON_FUNC_EXIT__;
463 static void _ctxpopup_rotate_cb(void *data, Evas_Object *obj, void *event_info)
466 __COMMON_FUNC_ENTER__;
471 Evas_Object *_win_main = data;
473 _ctxpopup_move(_win_main);
474 evas_object_show(manager_object->ctxpopup);
476 __COMMON_FUNC_EXIT__;
479 static void _ctxpopup_resize_cb(void *data, Evas *e, Evas_Object *obj,
482 __COMMON_FUNC_ENTER__;
484 if (manager_object->ctxpopup)
485 rotate_flag = EINA_TRUE;
487 rotate_flag = EINA_FALSE;
489 __COMMON_FUNC_EXIT__;
492 static void _ctxpopup_delete_cb(void *data, Evas *e, Evas_Object *obj,
495 __COMMON_FUNC_ENTER__;
497 Evas_Object *navi = (Evas_Object *)data;
498 Evas_Object *ctx = obj;
506 evas_object_smart_callback_del(ctx, "dismissed",
507 _ctxpopup_dismissed_cb);
508 evas_object_event_callback_del(navi, EVAS_CALLBACK_RESIZE,
509 _ctxpopup_resize_cb);
510 evas_object_smart_callback_del(elm_object_top_widget_get(ctx),
511 "rotation,changed", _ctxpopup_rotate_cb);
512 evas_object_event_callback_del_full(ctx, EVAS_CALLBACK_DEL,
513 _ctxpopup_delete_cb, navi);
515 __COMMON_FUNC_EXIT__;
519 static void _more_button_cb(void *data, Evas_Object *obj, void *event_info)
521 Evas_Object *_win_main = (Evas_Object*)data;
522 HEADER_MODES current_state;
523 struct ug_data *ugd = NULL;
524 Evas_Object *parent = NULL;
525 Elm_Object_Item *item = NULL;
528 ugd = (struct ug_data *)ug_app_state->gadget;
529 retm_if(ugd == NULL || show_more == FALSE);
531 parent = ugd->win_main;
532 if (!parent || !manager_object) {
536 current_state = viewer_manager_header_mode_get();
538 if (manager_object->ctxpopup) {
539 evas_object_del(manager_object->ctxpopup);
542 ps_mode = common_util_get_system_registry(VCONFKEY_SETAPPL_PSMODE);
543 INFO_LOG(UG_NAME_NORMAL, "PS mode - [%d]", ps_mode);
545 manager_object->ctxpopup = elm_ctxpopup_add(parent);
546 elm_ctxpopup_auto_hide_disabled_set(manager_object->ctxpopup, EINA_TRUE);
547 elm_object_style_set(manager_object->ctxpopup, "more/default");
548 eext_object_event_callback_add(manager_object->ctxpopup, EEXT_CALLBACK_BACK,
549 _ctxpopup_del_cb, NULL);
550 eext_object_event_callback_add(manager_object->ctxpopup, EEXT_CALLBACK_MORE,
551 _ctxpopup_del_cb, NULL);
552 evas_object_smart_callback_add(manager_object->ctxpopup, "dismissed",
553 _ctxpopup_dismissed_cb, _win_main);
554 evas_object_event_callback_add(manager_object->ctxpopup, EVAS_CALLBACK_DEL,
555 _ctxpopup_delete_cb, parent);
556 evas_object_event_callback_add(parent, EVAS_CALLBACK_RESIZE,
557 _ctxpopup_resize_cb, _win_main);
558 evas_object_smart_callback_add(elm_object_top_widget_get(manager_object->ctxpopup),
559 "rotation,changed", _ctxpopup_rotate_cb, _win_main);
561 if (current_state != HEADER_MODE_OFF &&
562 current_state != HEADER_MODE_DEACTIVATING) {
563 item = elm_ctxpopup_item_append(manager_object->ctxpopup,
564 "IDS_WIFI_BUTTON_FIND_HIDDEN_NETWORK", NULL,
565 _ctxpopup_item_select_cb, parent);
566 elm_object_item_domain_text_translatable_set(item, PACKAGE, EINA_TRUE);
569 item = elm_ctxpopup_item_append(manager_object->ctxpopup,
570 "IDS_ST_BODY_ADVANCED", NULL,
571 _ctxpopup_item_select_cb, parent);
572 elm_object_item_domain_text_translatable_set(item, PACKAGE, EINA_TRUE);
574 #ifdef MODEL_BUILD_FEATURE_WLAN_CONCURRENT_MODE
575 if (ps_mode <= SETTING_PSMODE_POWERFUL &&
576 current_state != HEADER_MODE_OFF &&
577 current_state != HEADER_MODE_DEACTIVATING) {
578 item = elm_ctxpopup_item_append(manager_object->ctxpopup,
579 "IDS_WIFI_BODY_WI_FI_DIRECT_ABB", NULL,
580 _ctxpopup_item_select_cb, parent);
581 elm_object_item_domain_text_translatable_set(item, PACKAGE, EINA_TRUE);
585 elm_ctxpopup_direction_priority_set(manager_object->ctxpopup,
586 ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_UNKNOWN,
587 ELM_CTXPOPUP_DIRECTION_UNKNOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN);
589 _ctxpopup_move(_win_main);
590 evas_object_show(manager_object->ctxpopup);
593 static void __refresh_scan_callback(void *data,
594 Evas_Object *obj, void *event_info)
596 __COMMON_FUNC_ENTER__;
599 HEADER_MODES current_state;
600 current_state = viewer_manager_header_mode_get();
602 switch (current_state) {
604 case HEADER_MODE_CONNECTED:
605 viewer_manager_show(VIEWER_WINSET_SEARCHING);
606 viewer_manager_header_mode_set(HEADER_MODE_SEARCHING);
608 scan_result = wlan_manager_scan();
609 if (scan_result != WLAN_MANAGER_ERR_NONE) {
610 viewer_manager_hide(VIEWER_WINSET_SEARCHING);
611 viewer_manager_header_mode_set(current_state);
619 __COMMON_FUNC_EXIT__;
622 static void __power_onoff_cb(void *data, Evas_Object *obj, void *event_info)
624 __COMMON_FUNC_ENTER__;
626 Elm_Object_Item *item = NULL;
627 const char *object_type;
628 HEADER_MODES current_mode;
630 item = (Elm_Object_Item *)event_info;
631 object_type = evas_object_type_get(obj);
633 current_mode = viewer_manager_header_mode_get();
635 if (current_mode == HEADER_MODE_ACTIVATING ||
636 current_mode == HEADER_MODE_DEACTIVATING) {
637 if (g_strcmp0(object_type, "elm_genlist") == 0) {
638 elm_genlist_item_selected_set(item, EINA_FALSE);
641 __COMMON_FUNC_EXIT__;
645 if (g_strcmp0(object_type, "elm_check") == 0) {
646 Eina_Bool check_mode = elm_check_state_get(obj);
648 if (check_mode == TRUE && current_mode == HEADER_MODE_OFF) {
649 elm_check_state_set(obj, EINA_FALSE);
651 } else if (check_mode != TRUE && current_mode != HEADER_MODE_OFF) {
654 } else if (g_strcmp0(object_type, "elm_genlist") == 0) {
659 elm_genlist_item_update(item);
660 elm_genlist_item_selected_set(item, EINA_FALSE);
663 __COMMON_FUNC_EXIT__;
666 static char *_gl_wifi_onoff_text_get(void *data, Evas_Object *obj, const char *part)
670 retvm_if(NULL == manager_object, NULL);
672 if (!strcmp("elm.text", part)) {
673 det = g_strdup(manager_object->item_wifi_onoff_text);
674 assertm_if(NULL == det, "NULL!!");
680 static Evas_Object *_gl_wifi_onoff_content_get(void *data,
681 Evas_Object *obj, const char *part)
683 if (manager_object == NULL)
686 Evas_Object *c = NULL;
688 #ifdef ACCESSIBLITY_FEATURE
689 Evas_Object *ao = NULL;
692 if (!strcmp("elm.swallow.end", part)) {
694 switch (manager_object -> header_mode) {
695 case HEADER_MODE_OFF:
696 /* Wi-Fi off indication button */
697 c = elm_check_add(obj);
698 elm_object_style_set(c, "on&off");
699 evas_object_propagate_events_set(c, EINA_FALSE);
700 elm_check_state_set(c, EINA_FALSE);
701 evas_object_smart_callback_add(c, "changed",
702 __power_onoff_cb, NULL);
703 #ifdef ACCESSIBLITY_FEATURE
704 ao = elm_object_item_access_object_get(manager_object->item_wifi_onoff);
705 elm_access_info_set(ao, ELM_ACCESS_TYPE, "on/off button");
706 elm_access_info_set(ao, ELM_ACCESS_STATE, "off");
710 case HEADER_MODE_ACTIVATING:
711 case HEADER_MODE_DEACTIVATING:
712 /* Progress animation */
713 c = elm_progressbar_add(obj);
714 elm_object_style_set(c, "process_medium");
715 evas_object_size_hint_align_set(c, EVAS_HINT_FILL, 0.5);
716 evas_object_size_hint_weight_set(c, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
717 elm_progressbar_pulse(c, TRUE);
721 /* Wi-Fi on indication button */
722 c = elm_check_add(obj);
723 elm_object_style_set(c, "on&off");
724 evas_object_propagate_events_set(c, EINA_FALSE);
725 elm_check_state_set(c, EINA_TRUE);
726 evas_object_smart_callback_add(c, "changed",
727 __power_onoff_cb, NULL);
728 #ifdef ACCESSIBLITY_FEATURE
729 ao = elm_object_item_access_object_get(manager_object->item_wifi_onoff);
730 elm_access_info_set(ao, ELM_ACCESS_TYPE, "on/off button");
731 elm_access_info_set(ao, ELM_ACCESS_STATE, "on");
735 evas_object_size_hint_align_set(c, EVAS_HINT_FILL, EVAS_HINT_FILL);
736 evas_object_size_hint_weight_set(c, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
742 static void __viewer_manager_wifi_onoff_item_create(Evas_Object* genlist)
744 __COMMON_FUNC_ENTER__;
746 manager_object->item_wifi_onoff_text = g_strdup(sc(PACKAGE, I18N_TYPE_Wi_Fi));
748 wifi_onoff_itc.item_style = WIFI_GENLIST_1LINE_TEXT_ICON_STYLE;
749 wifi_onoff_itc.func.text_get = _gl_wifi_onoff_text_get;
750 wifi_onoff_itc.func.content_get = _gl_wifi_onoff_content_get;
751 wifi_onoff_itc.func.state_get = NULL;
752 wifi_onoff_itc.func.del = NULL;
754 manager_object->item_wifi_onoff = elm_genlist_item_append(genlist,
755 &wifi_onoff_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE,
756 __power_onoff_cb, NULL);
758 __COMMON_FUNC_EXIT__;
761 static void _hidden_button_callback(void* data, Evas_Object* obj, void* event_info)
763 __COMMON_FUNC_ENTER__;
765 view_hidden_ap_popup_create(ug_app_state->layout_main, PACKAGE);
767 __COMMON_FUNC_EXIT__;
770 static void __viewer_manager_hidden_button_create(Evas_Object *genlist)
772 __COMMON_FUNC_ENTER__;
774 if (manager_object->sw_hidden_btn != NULL ||
775 ug_app_state->ug_type != UG_VIEW_SETUP_WIZARD) {
776 __COMMON_FUNC_EXIT__;
780 Evas_Object *btn = NULL;
781 Evas_Object *layout = NULL;
782 Elm_Object_Item *navi_it = NULL;
784 navi_it = elm_naviframe_top_item_get(manager_object->nav);
785 layout = elm_object_item_content_get(navi_it);
787 btn = elm_button_add(layout);
788 elm_object_style_set(btn, "default");
789 evas_object_propagate_events_set(btn, EINA_FALSE);
791 evas_object_smart_callback_add(btn, "clicked", _hidden_button_callback,
793 elm_object_domain_translatable_text_set(btn, PACKAGE,
794 "IDS_WIFI_BUTTON_FIND_HIDDEN_NETWORK");
795 elm_object_part_content_set(layout, "button1", btn);
797 switch (viewer_manager_header_mode_get()) {
798 case HEADER_MODE_ACTIVATING:
799 case HEADER_MODE_DEACTIVATING:
800 case HEADER_MODE_SEARCHING:
801 elm_object_disabled_set(btn, EINA_TRUE);
804 elm_object_disabled_set(btn, EINA_FALSE);
808 evas_object_show(btn);
809 manager_object->sw_hidden_btn = btn;
811 __COMMON_FUNC_EXIT__;
815 static void __viewer_manager_setup_wizard_scan_btn_create(Evas_Object *genlist)
817 __COMMON_FUNC_ENTER__;
819 if (manager_object->sw_scan_btn != NULL ||
820 ug_app_state->ug_type != UG_VIEW_SETUP_WIZARD) {
821 __COMMON_FUNC_EXIT__;
825 Evas_Object *btn = NULL;
826 Evas_Object *layout = NULL;
827 Elm_Object_Item *navi_it = NULL;
829 navi_it = elm_naviframe_top_item_get(manager_object->nav);
830 layout = elm_object_item_content_get(navi_it);
832 btn = elm_button_add(layout);
833 elm_object_style_set(btn, "default");
834 evas_object_propagate_events_set(btn, EINA_FALSE);
836 evas_object_smart_callback_add(btn, "clicked", __refresh_scan_callback,
838 elm_object_domain_translatable_text_set(btn, PACKAGE,
839 "IDS_WIFI_BUTTON_SCAN");
840 elm_object_part_content_set(layout, "button2", btn);
842 switch (viewer_manager_header_mode_get()) {
843 case HEADER_MODE_ACTIVATING:
844 case HEADER_MODE_DEACTIVATING:
845 case HEADER_MODE_SEARCHING:
846 elm_object_disabled_set(btn, EINA_TRUE);
849 elm_object_disabled_set(btn, EINA_FALSE);
853 evas_object_show(btn);
854 manager_object->sw_scan_btn = btn;
856 __COMMON_FUNC_EXIT__;
859 static void viewer_manager_setup_wizard_scan_btn_set(Eina_Bool show_state)
861 __COMMON_FUNC_ENTER__;
863 if (ug_app_state->ug_type != UG_VIEW_SETUP_WIZARD ||
864 manager_object == NULL ||
865 manager_object->sw_scan_btn == NULL) {
866 __COMMON_FUNC_EXIT__;
870 elm_object_disabled_set(manager_object->sw_scan_btn, !show_state);
872 __COMMON_FUNC_EXIT__;
875 static Eina_Bool viewer_manager_scan_button_set(Eina_Bool show_state)
877 __COMMON_FUNC_ENTER__;
879 if (manager_object == NULL) {
880 __COMMON_FUNC_EXIT__;
884 if (manager_object->scan_button == NULL) {
885 viewer_manager_create_scan_btn();
887 /* TODO: need to check VIEW_MANAGER_VIEW_TYPE_MAIN ?
888 * Evas_Object* navi_frame = viewer_manager_get_naviframe();
889 * view_manager_view_type_t top_view_id =
890 * (view_manager_view_type_t)evas_object_data_get(
891 * navi_frame, SCREEN_TYPE_ID_KEY);
894 if (show_state == EINA_TRUE && manager_object->scan_button != NULL) {
895 elm_object_disabled_set(manager_object->scan_button, EINA_FALSE);
896 } else if (show_state == EINA_FALSE && manager_object->scan_button != NULL) {
897 elm_object_disabled_set(manager_object->scan_button, EINA_TRUE);
900 viewer_manager_setup_wizard_scan_btn_set(show_state);
902 __COMMON_FUNC_EXIT__;
906 static void __ea_setup_wizard_back_cb(void *data, Evas_Object *obj,
909 if ((view_manager_view_type_t)evas_object_data_get(obj, SCREEN_TYPE_ID_KEY) !=
910 VIEW_MANAGER_VIEW_TYPE_MAIN) {
911 eext_naviframe_back_cb(data, obj, event_info);
915 if (viewer_manager_is_passwd_popup_exists() == TRUE ||
916 ug_app_state->bAlive == EINA_FALSE) {
920 _lbutton_click_cb(data, obj, event_info);
923 static void __viewer_manager_create_setup_wizard_content(Evas_Object *layout)
925 __COMMON_FUNC_ENTER__;
927 Elm_Object_Item *navi_it = NULL;
929 elm_layout_file_set(layout, SETUP_WIZARD_EDJ_PATH, "main_pwlock");
930 elm_object_domain_translatable_part_text_set(layout, "text.title",
931 PACKAGE, sc(PACKAGE, I18N_TYPE_Wi_Fi));
933 eext_object_event_callback_add(manager_object->nav, EEXT_CALLBACK_BACK,
934 __ea_setup_wizard_back_cb, NULL);
936 __viewer_manager_wifi_onoff_item_create(manager_object->list);
938 elm_object_part_content_set(layout, "elm.swallow.content",
939 manager_object->list);
941 navi_it = elm_naviframe_item_push(manager_object->nav, NULL, NULL, NULL, layout, NULL);
942 elm_naviframe_item_title_enabled_set(navi_it, EINA_FALSE, EINA_FALSE);
944 evas_object_data_set(manager_object->nav, SCREEN_TYPE_ID_KEY,
945 (void *)VIEW_MANAGER_VIEW_TYPE_MAIN);
946 evas_object_smart_callback_add(manager_object->nav,
947 "transition,finished", _transition_finished_main_cb, navi_it);
949 Evas_Object *prev_btn = elm_button_add(layout);
950 elm_object_style_set(prev_btn, "bottom");
951 elm_object_part_content_set(layout, "button.prev", prev_btn);
952 elm_object_text_set(prev_btn, sc(PACKAGE, I18N_TYPE_Prev));
953 evas_object_smart_callback_add(prev_btn, "clicked", _lbutton_click_cb, manager_object);
954 manager_object->prev_button = prev_btn;
956 Evas_Object *next_btn = elm_button_add(layout);
957 elm_object_style_set(next_btn, "bottom");
958 elm_object_part_content_set(layout, "button.next", next_btn);
959 elm_object_text_set(next_btn, sc(PACKAGE, I18N_TYPE_Next));
960 evas_object_smart_callback_add(next_btn, "clicked", _rbutton_click_cb, manager_object);
961 manager_object->next_button = next_btn;
963 __COMMON_FUNC_EXIT__;
966 static void __viewer_manager_create_wifi_ug_content(Evas_Object *layout,
967 Evas_Object *_win_main)
969 __COMMON_FUNC_ENTER__;
971 Elm_Object_Item *navi_it = NULL;
972 Evas_Object *back_btn = NULL;
973 Evas_Object *more_btn = NULL;
975 elm_layout_theme_set(layout, "layout", "application", "default");
976 edje_object_signal_emit(elm_layout_edje_get(layout), "elm,state,show,content", "elm");
977 edje_object_signal_emit(elm_layout_edje_get(layout), "elm,bg,show,group_list", "elm");
979 __viewer_manager_wifi_onoff_item_create(manager_object->list);
981 elm_object_part_content_set(layout, "elm.swallow.content", manager_object->list);
983 eext_object_event_callback_add(manager_object->nav, EEXT_CALLBACK_BACK, eext_naviframe_back_cb, NULL);
985 back_btn = elm_button_add(manager_object->nav);
986 elm_object_style_set(back_btn, "naviframe/back_btn/default");
987 evas_object_smart_callback_add(back_btn, "clicked",__back_cb, _win_main);
988 elm_object_focus_allow_set(back_btn, EINA_FALSE);
990 manager_object->navi_it = navi_it = elm_naviframe_item_push(manager_object->nav,
991 sc(PACKAGE, I18N_TYPE_Wi_Fi), back_btn, NULL,
993 evas_object_data_set(manager_object->nav, SCREEN_TYPE_ID_KEY,
994 (void *)VIEW_MANAGER_VIEW_TYPE_MAIN);
995 evas_object_smart_callback_add(manager_object->nav,
996 "transition,finished", _transition_finished_main_cb, navi_it);
998 more_btn = elm_button_add(manager_object->nav);
999 elm_object_style_set(more_btn, "naviframe/more/default");
1000 evas_object_smart_callback_add(more_btn, "clicked",
1001 _more_button_cb, _win_main);
1002 elm_object_item_part_content_set(navi_it, "toolbar_more_btn", more_btn);
1004 elm_naviframe_item_pop_cb_set(navi_it, _back_sk_cb, NULL);
1006 __COMMON_FUNC_EXIT__;
1009 #if 0 /* not used */
1010 Evas_Object *viewer_manager_create_bg(Evas_Object *parent, char *style)
1014 bg = elm_bg_add(parent);
1015 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
1019 elm_object_style_set(bg, style);
1021 elm_win_resize_object_add(parent, bg);
1022 evas_object_show(bg);
1028 Evas_Object *viewer_manager_create(Evas_Object *_parent, Evas_Object *_win_main)
1030 __COMMON_FUNC_ENTER__;
1032 retvm_if(NULL != manager_object || NULL == _parent, NULL);
1034 Evas_Object *layout = NULL;
1035 Evas_Object *view_content = NULL;
1037 manager_object = g_new0(viewer_manager_object, 1);
1038 retvm_if(NULL == manager_object, NULL);
1040 /* Add Full Layout */
1041 layout = elm_layout_add(_parent);
1042 retvm_if(NULL == layout, NULL);
1044 elm_layout_theme_set(layout, "layout", "application", "default");
1045 evas_object_size_hint_weight_set(layout,
1046 EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1047 edje_object_signal_emit(elm_layout_edje_get(layout),
1048 "elm,state,show,content", "elm");
1049 edje_object_signal_emit(elm_layout_edje_get(layout),
1050 "elm,bg,show,group_list", "elm");
1051 edje_object_signal_emit(elm_layout_edje_get(layout),
1052 "elm,state,show,indicator", "elm");
1055 manager_object->nav = elm_naviframe_add(layout);
1056 assertm_if(NULL == manager_object->nav, "manager_object->nav is NULL");
1057 elm_object_part_content_set(layout,
1058 "elm.swallow.content", manager_object->nav);
1059 elm_naviframe_prev_btn_auto_pushed_set(manager_object->nav, EINA_FALSE);
1060 eext_object_event_callback_add(manager_object->nav, EEXT_CALLBACK_MORE,
1061 eext_naviframe_more_cb, NULL);
1063 /* Add layout for custom styles */
1064 elm_theme_extension_add(NULL, CUSTOM_EDITFIELD_PATH);
1066 /* Add MainView Layout */
1067 view_content = elm_layout_add(manager_object->nav);
1070 manager_object->list = viewer_list_create(view_content);
1071 assertm_if(NULL == manager_object->list, "manager_object->list is NULL");
1073 /* Add app setup-wizard/wifi-ug specific contents */
1074 if (ug_app_state->ug_type == UG_VIEW_SETUP_WIZARD) {
1075 __viewer_manager_create_setup_wizard_content(view_content);
1077 __viewer_manager_create_wifi_ug_content(view_content, _win_main);
1080 evas_object_show(layout);
1081 elm_object_focus_set(layout, EINA_TRUE);
1083 __COMMON_FUNC_EXIT__;
1087 void viewer_manager_destroy(void)
1089 __COMMON_FUNC_ENTER__;
1091 if (wifi_device_list != NULL) {
1092 g_list_free(wifi_device_list);
1093 wifi_device_list = NULL;
1096 if (manager_object != NULL) {
1097 viewer_manager_cleanup_views();
1099 if (manager_object->item_wifi_onoff_text) {
1100 g_free(manager_object->item_wifi_onoff_text);
1101 manager_object->item_wifi_onoff_text = NULL;
1104 g_free(manager_object);
1105 manager_object = NULL;
1108 __COMMON_FUNC_EXIT__;
1111 Eina_Bool viewer_manager_show(VIEWER_WINSETS winset)
1113 __COMMON_FUNC_ENTER__;
1115 assertm_if(NULL == manager_object, "Manager object is NULL");
1118 case VIEWER_WINSET_SEARCHING:
1119 viewer_manager_scan_button_set(EINA_FALSE);
1120 viewer_list_item_disable_all();
1123 case VIEWER_WINSET_SUB_CONTENTS:
1124 assertm_if(NULL == manager_object->list, "List is NULL");
1126 viewer_list_title_item_set(manager_object->item_wifi_onoff);
1127 if (ug_app_state->ug_type == UG_VIEW_SETUP_WIZARD) {
1128 __viewer_manager_hidden_button_create(manager_object->list);
1129 __viewer_manager_setup_wizard_scan_btn_create(
1130 manager_object->list);
1134 case VIEWER_WINSET_SEARCHING_GRP_TITLE:
1135 viewer_manager_scan_button_set(EINA_FALSE);
1142 __COMMON_FUNC_EXIT__;
1146 static void __viewer_manager_hidden_btn_del(void)
1148 __COMMON_FUNC_ENTER__;
1150 if (manager_object->sw_hidden_btn) {
1151 evas_object_del(manager_object->sw_hidden_btn);
1152 manager_object->sw_hidden_btn = NULL;
1155 __COMMON_FUNC_EXIT__;
1158 static void __viewer_manager_setup_wizard_scan_btn_del(void)
1160 if (ug_app_state->ug_type != UG_VIEW_SETUP_WIZARD) {
1164 __COMMON_FUNC_ENTER__;
1166 if (manager_object->sw_scan_btn) {
1167 evas_object_del(manager_object->sw_scan_btn);
1168 manager_object->sw_scan_btn = NULL;
1171 __COMMON_FUNC_EXIT__;
1174 Eina_Bool viewer_manager_hide(VIEWER_WINSETS winset)
1176 __COMMON_FUNC_ENTER__;
1179 case VIEWER_WINSET_SEARCHING:
1180 /* searching view */
1181 viewer_manager_scan_button_set(EINA_TRUE);
1182 viewer_list_item_enable_all();
1185 case VIEWER_WINSET_SUB_CONTENTS:
1186 /* hidden AP and WPS PBC */
1187 if (ug_app_state->passpopup) {
1188 passwd_popup_free(ug_app_state->passpopup);
1189 ug_app_state->passpopup = NULL;
1192 if (ug_app_state->eap_view) {
1193 eap_connect_data_free(ug_app_state->eap_view);
1194 ug_app_state->eap_view = NULL;
1197 if (ug_app_state->ug_type == UG_VIEW_SETUP_WIZARD) {
1198 __viewer_manager_hidden_btn_del();
1199 __viewer_manager_setup_wizard_scan_btn_del();
1201 viewer_list_title_item_del();
1208 __COMMON_FUNC_EXIT__;
1213 /* Unused function */
1214 Eina_Bool viewer_manager_genlist_item_update(Elm_Object_Item* item)
1216 __COMMON_FUNC_ENTER__;
1218 __COMMON_FUNC_EXIT__;
1223 elm_genlist_item_update(item);
1225 __COMMON_FUNC_EXIT__;
1230 void viewer_manager_update_hidden_btn(void)
1232 if (ug_app_state->ug_type != UG_VIEW_SETUP_WIZARD) {
1236 __COMMON_FUNC_ENTER__;
1237 retm_if(NULL == manager_object->sw_hidden_btn);
1239 switch (viewer_manager_header_mode_get()) {
1240 case HEADER_MODE_ACTIVATING:
1241 case HEADER_MODE_DEACTIVATING:
1242 case HEADER_MODE_SEARCHING:
1243 elm_object_disabled_set(manager_object->sw_hidden_btn,
1247 elm_object_disabled_set(manager_object->sw_hidden_btn,
1252 __COMMON_FUNC_EXIT__;
1255 void viewer_manager_update_setup_wizard_scan_btn(void)
1257 if (ug_app_state->ug_type != UG_VIEW_SETUP_WIZARD) {
1261 __COMMON_FUNC_ENTER__;
1262 retm_if(NULL == manager_object->sw_scan_btn);
1264 switch (viewer_manager_header_mode_get()) {
1265 case HEADER_MODE_ACTIVATING:
1266 case HEADER_MODE_DEACTIVATING:
1267 case HEADER_MODE_SEARCHING:
1268 elm_object_disabled_set(manager_object->sw_scan_btn,
1272 elm_object_disabled_set(manager_object->sw_scan_btn,
1277 __COMMON_FUNC_EXIT__;
1280 void viewer_manager_setup_wizard_button_controller()
1282 __COMMON_FUNC_ENTER__;
1285 wifi_connection_state_e connection_state;
1287 ret = wifi_get_connection_state(&connection_state);
1288 if (ret != WIFI_ERROR_NONE) {
1289 INFO_LOG(UG_NAME_NORMAL, "Failed to retrieve connection state ret [%d]", ret);
1292 if (manager_object->prev_button != NULL &&
1293 ug_app_state->lbutton_setup_wizard_prev != NULL) {
1294 elm_object_text_set(manager_object->prev_button,
1295 sc(PACKAGE, I18N_TYPE_Prev));
1298 if (connection_state == WIFI_CONNECTION_STATE_CONNECTED) {
1299 if (manager_object->next_button != NULL &&
1300 ug_app_state->rbutton_setup_wizard_next != NULL) {
1301 elm_object_text_set(manager_object->next_button,
1302 sc(PACKAGE, I18N_TYPE_Next));
1305 if (manager_object->next_button != NULL &&
1306 ug_app_state->rbutton_setup_wizard_skip != NULL) {
1307 elm_object_text_set(manager_object->next_button,
1308 sc(PACKAGE, I18N_TYPE_Skip));
1312 if (manager_object->sw_hidden_btn != NULL) {
1313 elm_object_domain_translatable_text_set(
1314 manager_object->sw_hidden_btn, PACKAGE,
1315 "IDS_WIFI_BUTTON_FIND_HIDDEN_NETWORK");
1318 if (manager_object->sw_scan_btn != NULL) {
1319 elm_object_domain_translatable_text_set(
1320 manager_object->sw_scan_btn, PACKAGE,
1321 "IDS_WIFI_BUTTON_SCAN");
1325 static void viewer_manager_pop_naviframe_item(void)
1327 __COMMON_FUNC_ENTER__;
1329 view_manager_view_type_t top_viewID;
1331 top_viewID = viewer_manager_view_type_get();
1332 if (top_viewID == VIEW_MANAGER_VIEW_TYPE_DETAIL) {
1333 elm_naviframe_item_pop(viewer_manager_get_naviframe());
1336 __COMMON_FUNC_EXIT__;
1339 Evas_Object *viewer_manager_naviframe_power_item_get(void)
1341 __COMMON_FUNC_ENTER__;
1343 Elm_Object_Item *navi_it = NULL;
1344 Evas_Object *layout = NULL;
1346 if (manager_object == NULL)
1349 navi_it = elm_naviframe_top_item_get(manager_object->nav);
1351 if (navi_it == NULL) {
1352 ERROR_LOG(UG_NAME_ERR, "navi_it is NULL");
1356 if (ug_app_state->ug_type == UG_VIEW_SETUP_WIZARD) {
1357 layout = elm_object_item_content_get(navi_it);
1359 __COMMON_FUNC_EXIT__;
1360 return elm_object_part_content_get(layout, "title_right_btn");
1364 __COMMON_FUNC_EXIT__;
1365 return elm_object_item_part_content_get(navi_it, "title_right_btn");
1368 int viewer_manager_create_scan_btn(void) {
1369 __COMMON_FUNC_ENTER__;
1370 if (ug_app_state->ug_type == UG_VIEW_SETUP_WIZARD || manager_object->scan_button) {
1371 __COMMON_FUNC_EXIT__;
1374 Evas_Object *btn = elm_button_add(manager_object->nav);
1375 /* Use "bottom" style button */
1377 ERROR_LOG(UG_NAME_NORMAL, "Error creating toolbar");
1380 elm_object_style_set(btn, "bottom");
1381 elm_object_domain_translatable_text_set(btn, PACKAGE,
1382 "IDS_WIFI_BUTTON_SCAN");
1383 evas_object_smart_callback_add(btn, "clicked", __refresh_scan_callback, NULL);
1385 /* Set button into "toolbar" swallow part */
1386 elm_object_item_part_content_set(manager_object->navi_it, "toolbar", btn);
1387 manager_object->scan_button = btn;
1388 evas_object_show(manager_object->scan_button);
1389 __COMMON_FUNC_EXIT__;
1393 void viewer_manager_header_mode_set(HEADER_MODES new_mode)
1395 __COMMON_FUNC_ENTER__;
1397 HEADER_MODES old_mode;
1398 if (manager_object == NULL)
1401 if (HEADER_MODE_OFF > new_mode || HEADER_MODE_MAX <= new_mode) {
1402 ERROR_LOG(UG_NAME_ERR, "Invalid mode %d", new_mode);
1406 old_mode = manager_object->header_mode;
1407 if (old_mode == new_mode) {
1408 if (new_mode == HEADER_MODE_OFF && manager_object->scan_button) {
1409 evas_object_del(manager_object->scan_button);
1410 manager_object->scan_button = NULL;
1415 DEBUG_LOG(UG_NAME_NORMAL, "Header mode %d --> %d", old_mode, new_mode);
1417 manager_object->header_mode = new_mode;
1420 case HEADER_MODE_OFF:
1421 if (manager_object->scan_button) {
1422 evas_object_del(manager_object->scan_button);
1423 manager_object->scan_button = NULL;
1425 if (ug_app_state->ug_type == UG_VIEW_SETUP_WIZARD) {
1426 __viewer_manager_hidden_btn_del();
1427 __viewer_manager_setup_wizard_scan_btn_del();
1430 case HEADER_MODE_ON:
1431 case HEADER_MODE_CONNECTED:
1432 viewer_manager_scan_button_set(EINA_TRUE);
1438 if(manager_object->item_wifi_onoff != NULL)
1439 elm_genlist_item_update(manager_object->item_wifi_onoff);
1440 viewer_list_title_item_update();
1441 if (ug_app_state->ug_type == UG_VIEW_SETUP_WIZARD) {
1442 viewer_manager_update_hidden_btn();
1443 viewer_manager_update_setup_wizard_scan_btn();
1444 viewer_manager_setup_wizard_button_controller();
1447 __COMMON_FUNC_EXIT__;
1450 HEADER_MODES viewer_manager_header_mode_get(void)
1452 return manager_object->header_mode;
1455 Evas_Object* viewer_manager_get_naviframe()
1457 return manager_object->nav;
1460 void viewer_manager_refresh_ap_info(Elm_Object_Item *item)
1466 ug_genlist_data_t *gdata = elm_object_item_data_get(item);
1470 wifi_device_info_t *wifi_device = gdata->device_info;
1475 wifi_ap_refresh(wifi_device->ap);
1480 static gboolean __viewer_manager_list_scroll_to_top(void *data)
1483 elm_genlist_item_bring_in((Elm_Object_Item *)data, ELM_GENLIST_ITEM_SCROLLTO_TOP);
1488 void viewer_manager_move_to_top(void)
1490 __COMMON_FUNC_ENTER__;
1492 Elm_Object_Item * first_item = NULL;
1494 if (manager_object == NULL || manager_object->list == NULL)
1497 first_item = elm_genlist_first_item_get(manager_object->list);
1498 if (first_item == NULL)
1501 common_util_managed_idle_add(__viewer_manager_list_scroll_to_top, first_item);
1503 __COMMON_FUNC_EXIT__;
1506 Elm_Object_Item *viewer_manager_move_item_to_top(Elm_Object_Item *old_item)
1508 __COMMON_FUNC_ENTER__;
1510 Elm_Object_Item *first_item = viewer_list_get_first_item();
1511 ug_genlist_data_t *gdata = NULL, *first_it_gdata = NULL;
1513 if (!old_item || !first_item) {
1514 __COMMON_FUNC_EXIT__;
1518 gdata = elm_object_item_data_get(old_item);
1519 if (!gdata || !gdata->device_info) {
1520 __COMMON_FUNC_EXIT__;
1524 if (old_item != first_item) {
1525 first_it_gdata = elm_object_item_data_get(first_item);
1526 elm_object_item_data_set(first_item, gdata);
1527 elm_object_item_data_set(old_item, first_it_gdata);
1529 if(first_item != NULL)
1530 elm_genlist_item_update(first_item);
1531 if(old_item != NULL)
1532 elm_genlist_item_update(old_item);
1535 __COMMON_FUNC_EXIT__;
1539 void viewer_manager_update_rssi(void)
1544 ret = wifi_get_connected_ap(&ap);
1545 if (WIFI_ERROR_NONE != ret) {
1549 Elm_Object_Item *item = item_get_for_ap(ap);
1551 wifi_ap_destroy(ap);
1555 ug_genlist_data_t* gdata = elm_object_item_data_get(item);
1556 if (gdata && gdata->device_info) {
1559 if (WIFI_ERROR_NONE != wifi_ap_get_rssi(ap, &rssi)) {
1560 wifi_ap_destroy(ap);
1562 } else if (gdata->device_info->rssi != rssi) {
1563 wifi_ap_refresh(gdata->device_info->ap);
1564 gdata->device_info->rssi = rssi;
1566 g_free(gdata->device_info->ap_image_path);
1568 common_utils_get_device_icon(gdata->device_info,
1569 &gdata->device_info->ap_image_path);
1572 elm_genlist_item_update(item);
1576 wifi_ap_destroy(ap);
1579 static gint compare(gconstpointer a, gconstpointer b)
1581 bool favorite1 = false, favorite2 = false;
1582 wifi_connection_state_e state1 = 0, state2 = 0;
1584 wifi_device_info_t *wifi_device1 = (wifi_device_info_t*)a;
1585 wifi_device_info_t *wifi_device2 = (wifi_device_info_t*)b;
1587 wifi_ap_get_connection_state(wifi_device1->ap, &state1);
1588 wifi_ap_get_connection_state(wifi_device2->ap, &state2);
1590 if (state1 != state2) {
1591 if (state1 == WIFI_CONNECTION_STATE_CONNECTED)
1593 if (state2 == WIFI_CONNECTION_STATE_CONNECTED)
1596 if (state1 == WIFI_CONNECTION_STATE_CONFIGURATION)
1598 if (state2 == WIFI_CONNECTION_STATE_CONFIGURATION)
1601 if (state1 == WIFI_CONNECTION_STATE_ASSOCIATION)
1603 if (state2 == WIFI_CONNECTION_STATE_ASSOCIATION)
1607 wifi_ap_is_favorite(wifi_device1->ap, &favorite1);
1608 wifi_ap_is_favorite(wifi_device2->ap, &favorite2);
1610 if (favorite1 != favorite2) {
1611 if (favorite1 == true)
1613 if (favorite2 == true)
1617 if (manager_object->sort_type == I18N_TYPE_Alphabetical) {
1618 return strcasecmp((const char *)wifi_device1->ssid,
1619 (const char *)wifi_device2->ssid);
1621 return ((wifi_device1->rssi >= wifi_device2->rssi) ? -1 : 1);
1625 static bool wifi_update_list_for_each_ap(wifi_ap_h ap, void *user_data)
1627 int *profile_size = (int *)user_data;
1628 wifi_device_info_t *wifi_device = NULL;
1630 wifi_device = view_list_item_device_info_create(ap);
1631 if (wifi_device == NULL)
1634 wifi_device_list = g_list_insert_sorted(wifi_device_list, wifi_device, compare);
1640 static int viewer_manager_update_list_all(char *ssid)
1642 int i, profiles_list_size = 0;
1643 Elm_Object_Item *item = NULL;
1644 GList* list_of_device ;
1645 wifi_device_info_t *wifi_device = NULL;
1648 __COMMON_FUNC_ENTER__;
1650 view_manager_list_update_info_t update_info;
1651 memset(&update_info, 0, sizeof(update_info));
1653 manager_object->sort_type = _convert_vconf_to_sort_by_value(
1654 common_util_get_system_registry(VCONF_SORT_BY));
1656 wifi_foreach_found_aps(wifi_update_list_for_each_ap, &profiles_list_size);
1658 list_of_device = wifi_device_list;
1659 for (i = 0; i < profiles_list_size && list_of_device != NULL; i++) {
1660 wifi_device = (wifi_device_info_t*)list_of_device->data;
1661 if (ssid == NULL || g_strcmp0(ssid, wifi_device->ssid) == 0) {
1662 item = viewer_list_item_insert_after(wifi_device, update_info.last_appended_item);
1664 update_info.last_appended_item = item;
1665 update_info.total_items_added++;
1670 list_of_device = list_of_device->next;
1673 if (wifi_device_list != NULL) {
1674 g_list_free(wifi_device_list);
1675 wifi_device_list = NULL;
1678 INFO_LOG(UG_NAME_NORMAL, "total items added = %d", update_info.total_items_added);
1680 if (0 == update_info.total_items_added) {
1681 /* Check if whether it's the first time we get no profiles,
1682 * if so, send one more scan request. This avoids the issue of
1683 * showing 'No Wi-Fi AP found' during launch time.
1685 if (manager_object->is_first_time_no_profiles == false) {
1686 HEADER_MODES current_state;
1687 int scan_result = WLAN_MANAGER_ERR_NONE;
1688 current_state = viewer_manager_header_mode_get();
1690 viewer_manager_show(VIEWER_WINSET_SEARCHING);
1691 viewer_manager_header_mode_set(HEADER_MODE_SEARCHING);
1693 scan_result = wlan_manager_scan();
1694 if (scan_result != WLAN_MANAGER_ERR_NONE) {
1695 viewer_manager_hide(VIEWER_WINSET_SEARCHING);
1696 viewer_manager_header_mode_set(current_state);
1699 manager_object->is_first_time_no_profiles = true;
1701 /* if there is no scan_data, generate No-AP item */
1702 item = viewer_list_item_insert_after(NULL, NULL);
1704 elm_genlist_item_select_mode_set(item,
1705 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1710 __COMMON_FUNC_EXIT__;
1714 Eina_Bool viewer_manager_refresh(void)
1719 INFO_LOG(UG_NAME_SCAN, "viewer manager refresh");
1721 if (manager_object == NULL)
1724 header_state = viewer_manager_header_mode_get();
1725 if (header_state == HEADER_MODE_CONNECTING ||
1726 header_state == HEADER_MODE_ACTIVATING ||
1727 header_state == HEADER_MODE_DEACTIVATING) {
1731 viewer_list_item_disable_all();
1732 viewer_list_item_clear();
1734 state = wlan_manager_state_get();
1735 if (WLAN_MANAGER_ERROR == state || WLAN_MANAGER_OFF == state) {
1736 /* Some body requested to refresh the list
1737 * while the WLAN manager is OFF or Unable to get the profile state
1739 INFO_LOG(UG_NAME_ERR, "WLAN Manager state: %d", state);
1741 viewer_manager_header_mode_set(HEADER_MODE_OFF);
1746 wifi_ap_h ap = wlan_manager_get_ap_with_state(state);
1747 viewer_manager_update_list_all(NULL);
1748 if (ug_app_state->ug_type == UG_VIEW_SETUP_WIZARD) {
1749 __viewer_manager_hidden_button_create(manager_object->list);
1750 __viewer_manager_setup_wizard_scan_btn_create(
1751 manager_object->list);
1754 if (WLAN_MANAGER_CONNECTING == state) {
1755 INFO_LOG(UG_NAME_NORMAL, "Wi-Fi is connecting");
1757 Elm_Object_Item* target_item = item_get_for_ap(ap);
1759 viewer_manager_header_mode_set(HEADER_MODE_CONNECTING);
1760 viewer_list_item_radio_mode_set(target_item,
1761 VIEWER_ITEM_RADIO_MODE_CONNECTING);
1762 } else if (WLAN_MANAGER_CONNECTED == state) {
1763 INFO_LOG(UG_NAME_NORMAL, "Wi-Fi is connected");
1765 Elm_Object_Item* target_item = item_get_for_ap(ap);
1767 target_item = viewer_manager_move_item_to_top(target_item);
1768 viewer_manager_header_mode_set(HEADER_MODE_CONNECTED);
1769 viewer_list_item_radio_mode_set(target_item,
1770 VIEWER_ITEM_RADIO_MODE_CONNECTED);
1772 INFO_LOG(UG_NAME_NORMAL, "Wi-Fi state: %d", state);
1774 viewer_manager_header_mode_set(HEADER_MODE_ON);
1776 wifi_ap_destroy(ap);
1778 INFO_LOG(UG_NAME_SCAN, "viewer manager refresh finished");
1783 static void hidden_ap_connect_ok_cb (void *data,
1784 Evas_Object *obj, void *event_info)
1786 __COMMON_FUNC_ENTER__;
1788 hidden_ap_data_t *hidden_ap_data = (hidden_ap_data_t *)data;
1789 if (hidden_ap_data == NULL) {
1790 __COMMON_FUNC_EXIT__;
1794 char* szPassword = NULL;
1797 int ret = wifi_ap_hidden_create(hidden_ap_data->ssid, &ap);
1798 if (WIFI_ERROR_NONE != ret) {
1799 ERROR_LOG(UG_NAME_ERR, "Failed to create an AP handle. Err = %d", ret);
1804 SECURE_INFO_LOG(UG_NAME_NORMAL, "Hidden AP[%s]. Sec mode = %d. Connect ok cb",
1805 hidden_ap_data->ssid, hidden_ap_data->sec_mode);
1807 switch (hidden_ap_data->sec_mode) {
1808 case WLAN_SEC_MODE_NONE:
1809 INFO_LOG(UG_NAME_NORMAL, "OPEN: event %x; passpopup %x",
1810 event_info, ug_app_state->passpopup);
1812 wifi_ap_set_security_type(ap, WIFI_SECURITY_TYPE_NONE);
1815 case WLAN_SEC_MODE_WEP:
1816 case WLAN_SEC_MODE_WPA_PSK:
1817 case WLAN_SEC_MODE_WPA2_PSK:
1818 szPassword = passwd_popup_get_txt(ug_app_state->passpopup);
1820 if (WLAN_SEC_MODE_WEP == hidden_ap_data->sec_mode) {
1821 wifi_ap_set_security_type(ap, WIFI_SECURITY_TYPE_WEP);
1822 } else if (WLAN_SEC_MODE_WPA_PSK == hidden_ap_data->sec_mode) {
1823 wifi_ap_set_security_type(ap, WIFI_SECURITY_TYPE_WPA_PSK);
1825 wifi_ap_set_security_type(ap, WIFI_SECURITY_TYPE_WPA2_PSK);
1828 int ret = wifi_ap_set_passphrase(ap, szPassword);
1829 if (ret != WIFI_ERROR_NONE)
1830 INFO_LOG(UG_NAME_ERR, "Failed to set passpharse [%d]" ,ret);
1834 passwd_popup_free(ug_app_state->passpopup);
1835 ug_app_state->passpopup = NULL;
1839 INFO_LOG(UG_NAME_NORMAL, "Fatal: Unknown Sec mode: %d",
1840 hidden_ap_data->sec_mode);
1842 goto hidden_ap_connect_end;
1845 wlan_manager_connect(ap);
1847 hidden_ap_connect_end:
1848 wifi_ap_destroy(ap);
1851 viewer_manager_hidden_confirm_cleanup();
1853 __COMMON_FUNC_EXIT__;
1856 static void hidden_ap_connect_cancel_cb(void *data, Evas_Object *obj,
1859 __COMMON_FUNC_ENTER__;
1861 hidden_ap_data_t *hidden_ap_data = (hidden_ap_data_t *)data;
1862 if (hidden_ap_data == NULL) {
1863 __COMMON_FUNC_EXIT__;
1867 switch (hidden_ap_data->sec_mode) {
1868 case WLAN_SEC_MODE_NONE:
1869 INFO_LOG(UG_NAME_NORMAL, "This hidden AP is Open");
1872 case WLAN_SEC_MODE_WEP:
1873 case WLAN_SEC_MODE_WPA_PSK:
1874 case WLAN_SEC_MODE_WPA2_PSK:
1875 INFO_LOG(UG_NAME_NORMAL, "Hidden AP Secured");
1877 passwd_popup_free(ug_app_state->passpopup);
1878 ug_app_state->passpopup = NULL;
1882 INFO_LOG(UG_NAME_NORMAL, "Fatal: Unknown Sec mode: %d",
1883 hidden_ap_data->sec_mode);
1887 viewer_manager_request_scan();
1888 viewer_manager_hidden_confirm_cleanup();
1890 __COMMON_FUNC_EXIT__;
1893 static void __hidden_ap_cancel_mouseup_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
1895 __COMMON_FUNC_ENTER__;
1897 Evas_Event_Mouse_Up *event = event_info;
1899 if (event->button == 3) {
1900 hidden_ap_connect_cancel_cb(data, obj, event_info);
1903 __COMMON_FUNC_EXIT__;
1906 static void __hidden_ap_cancel_keydown_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
1908 __COMMON_FUNC_ENTER__;
1910 Evas_Event_Key_Down *event = event_info;
1912 if (g_strcmp0(event->keyname, "XF86Back") == 0) {
1913 hidden_ap_connect_cancel_cb(data, obj, event_info);
1916 __COMMON_FUNC_EXIT__;
1919 void viewer_manager_eap_view_deref(void)
1921 __COMMON_FUNC_ENTER__;
1923 ug_app_state->eap_view = NULL;
1925 __COMMON_FUNC_EXIT__;
1928 void viewer_manager_specific_scan_response_hlr(
1929 GSList *bss_info_list, void *user_data)
1931 hidden_ap_data_t *hidden_ap_data = NULL;
1932 const char *ssid = (const char *)user_data;
1933 wlan_security_mode_type_t sec_mode = 0;
1934 bool favorite = false;
1935 ug_genlist_data_t* gdata = NULL;
1936 Evas_Object *popup = NULL;
1937 int hidden_ap_count = (int)g_slist_length(bss_info_list);
1938 Elm_Object_Item *item = NULL;
1940 viewer_manager_hide(VIEWER_WINSET_SEARCHING);
1941 viewer_manager_header_mode_set(HEADER_MODE_ON);
1943 if (view_hidden_ap_popup_data_get() == NULL) {
1944 ERROR_LOG(UG_NAME_RESP, "Popup is already destroyed");
1950 * We will delete the popup anyway
1952 view_hidden_ap_popup_destroy();
1955 ERROR_LOG(UG_NAME_RESP, "SSID is empty");
1959 INFO_LOG(UG_NAME_RESP, "Recieved %s(%d) hidden Wi-Fi networks",
1960 ssid, hidden_ap_count);
1961 viewer_list_item_clear();
1962 hidden_ap_count = viewer_manager_update_list_all((char *)ssid);
1963 INFO_LOG(UG_NAME_NORMAL, "Found %s(%d) Wi-Fi networks", ssid,
1966 if (hidden_ap_count > 1)
1969 viewer_manager_refresh();
1970 if (hidden_ap_count == 0) {
1971 INFO_LOG(UG_NAME_ERR, "no ap found");
1972 common_utils_send_message_to_net_popup("Network connection popup",
1973 "no ap found", "toast_popup", NULL);
1974 /*Recreate the popup*/
1975 view_hidden_ap_popup_create(ug_app_state->layout_main, PACKAGE);
1979 item = item_get_for_ssid(ssid);
1981 gdata = elm_object_item_data_get(item);
1982 if (gdata == NULL || gdata->device_info == NULL ||
1983 gdata->radio_mode == VIEWER_ITEM_RADIO_MODE_CONNECTED)
1985 sec_mode = gdata->device_info->security_mode;
1986 gdata->device_info->is_hidden = true;
1987 wifi_ap_is_favorite(gdata->device_info->ap, &favorite);
1988 if (favorite == true) {
1989 wlan_manager_connect(gdata->device_info->ap);
1993 /* Only if there is one AP found then we need Users further action */
1995 case WLAN_SEC_MODE_NONE:
1996 SECURE_INFO_LOG(UG_NAME_NORMAL, "%s open network found", ssid);
1998 hidden_ap_data = g_new0(hidden_ap_data_t, 1);
1999 hidden_ap_data->sec_mode = WLAN_SEC_MODE_NONE;
2000 hidden_ap_data->ssid = g_strdup(ssid);
2002 popup_btn_info_t popup_btn_data;
2003 memset(&popup_btn_data, 0, sizeof(popup_btn_data));
2004 popup_btn_data.title_txt = g_strdup(ssid);
2005 popup_btn_data.info_txt = "IDS_WIFI_BODY_A_WI_FI_NETWORK_HAS_BEEN_DETECTED_YOU_WILL_BE_CONNECTED";
2006 popup_btn_data.btn1_txt = "IDS_WIFI_SK_CANCEL";
2007 popup_btn_data.btn1_cb = hidden_ap_connect_cancel_cb;
2008 popup_btn_data.btn1_data = popup_btn_data.btn2_data = hidden_ap_data;
2009 popup_btn_data.btn2_txt = "IDS_WIFI_BODY_CONNECT";
2010 popup_btn_data.btn2_cb = hidden_ap_connect_ok_cb;
2012 popup = common_utils_show_info_popup(ug_app_state->layout_main,
2015 hidden_ap_data->confirm_popup = popup;
2017 evas_object_event_callback_add(popup,
2018 EVAS_CALLBACK_MOUSE_UP,
2019 __hidden_ap_cancel_mouseup_cb,
2021 evas_object_event_callback_add(popup,
2022 EVAS_CALLBACK_KEY_DOWN,
2023 __hidden_ap_cancel_keydown_cb,
2026 manager_object->hidden_popup_data = hidden_ap_data;
2029 case WLAN_SEC_MODE_IEEE8021X:
2030 SECURE_INFO_LOG(UG_NAME_NORMAL, "%s IEEE8021X found", ssid);
2032 wifi_device_info_t device_info;
2035 wifi_ap_hidden_create(ssid, &ap);
2036 wifi_ap_set_security_type(ap, WIFI_SECURITY_TYPE_EAP);
2038 struct ug_data *ugd = (struct ug_data *)ug_app_state->gadget;
2040 memset(&device_info, 0, sizeof(device_info));
2041 device_info.security_mode = WIFI_SECURITY_TYPE_EAP;
2042 device_info.ssid = (char *)ssid;
2043 device_info.ap = ap;
2044 ug_app_state->eap_view =
2045 create_eap_view(ug_app_state->layout_main,
2047 ug_app_state->conformant,
2048 PACKAGE, &device_info,
2049 viewer_manager_eap_view_deref);
2051 wifi_ap_destroy(ap);
2055 case WLAN_SEC_MODE_WEP:
2056 case WLAN_SEC_MODE_WPA_PSK:
2057 case WLAN_SEC_MODE_WPA2_PSK:
2058 SECURE_INFO_LOG(UG_NAME_NORMAL,
2059 "Secured(%d) %s found", sec_mode, ssid);
2061 pswd_popup_create_req_data_t popup_info;
2063 hidden_ap_data = g_try_new0(hidden_ap_data_t, 1);
2064 if (hidden_ap_data == NULL) {
2065 ERROR_LOG(UG_NAME_RESP, "Memory allocation error.");
2068 hidden_ap_data->sec_mode = sec_mode;
2069 hidden_ap_data->ssid = g_strdup(ssid);
2070 if (gdata && gdata->device_info) {
2071 hidden_ap_data->device_info = view_list_item_device_info_create(
2072 gdata->device_info->ap);
2074 memset(&popup_info, 0, sizeof(pswd_popup_create_req_data_t));
2075 /* Wi-Fi hidden network cannot be connected by WPS method.
2076 * In addition, Wi-Fi network info is also impossible to be set.
2077 * It's ConnMan agent limitation.
2078 * Do not use WPS method in here.
2080 popup_info.title = (char *)ssid;
2081 popup_info.ok_cb = hidden_ap_connect_ok_cb;
2082 popup_info.cancel_cb = hidden_ap_connect_cancel_cb;
2083 popup_info.cb_data = hidden_ap_data;
2085 if (sec_mode == WLAN_SEC_MODE_WEP)
2086 popup_info.sec_type = WIFI_SECURITY_TYPE_WEP;
2087 else if (sec_mode == WLAN_SEC_MODE_WPA_PSK)
2088 popup_info.sec_type = WIFI_SECURITY_TYPE_WPA_PSK;
2089 else if (sec_mode == WLAN_SEC_MODE_WPA2_PSK)
2090 popup_info.sec_type = WIFI_SECURITY_TYPE_WPA2_PSK;
2092 ug_app_state->passpopup =
2093 create_passwd_popup(
2094 ug_app_state->conformant,
2095 ug_app_state->layout_main,
2096 PACKAGE, &popup_info);
2097 if (ug_app_state->passpopup == NULL)
2098 INFO_LOG(UG_NAME_ERR, "Fail to create password popup");
2100 manager_object->hidden_popup_data = hidden_ap_data;
2104 INFO_LOG(UG_NAME_NORMAL, "Unknown security mode: %d", sec_mode);
2113 wifi_device_info_t *view_list_item_device_info_create(wifi_ap_h ap)
2115 wifi_security_type_e sec_type;
2117 wifi_device_info_t* wifi_device = NULL;
2120 wifi_device = g_try_new0(wifi_device_info_t, 1);
2121 retvm_if(NULL == wifi_device, NULL);
2123 if (WIFI_ERROR_NONE != wifi_ap_clone(&(wifi_device->ap), ap)) {
2124 goto FREE_DEVICE_INFO;
2125 } else if (WIFI_ERROR_NONE != wifi_ap_get_essid(ap, &(wifi_device->ssid))) {
2126 goto FREE_DEVICE_INFO;
2127 } else if (WIFI_ERROR_NONE != wifi_ap_get_rssi(ap, &(wifi_device->rssi))) {
2128 goto FREE_DEVICE_INFO;
2129 } else if (WIFI_ERROR_NONE != wifi_ap_get_security_type(ap, &sec_type)) {
2130 goto FREE_DEVICE_INFO;
2131 } else if (WIFI_ERROR_NONE != wifi_ap_is_wps_supported(ap, &(wifi_device->wps_mode))) {
2132 goto FREE_DEVICE_INFO;
2135 wifi_device->security_mode = common_utils_get_sec_mode(sec_type);
2136 common_utils_get_device_icon(wifi_device, &wifi_device->ap_image_path);
2141 if (ret == false && wifi_device) {
2142 wifi_ap_destroy(wifi_device->ap);
2143 g_free(wifi_device->ap_image_path);
2144 g_free(wifi_device->ap_status_txt);
2145 g_free(wifi_device->ssid);
2146 g_free(wifi_device);
2152 view_manager_view_type_t viewer_manager_view_type_get(void)
2154 __COMMON_FUNC_ENTER__;
2156 Evas_Object* navi_frame = NULL;
2157 view_manager_view_type_t top_view_id;
2159 navi_frame = viewer_manager_get_naviframe();
2160 top_view_id = (view_manager_view_type_t)evas_object_data_get(
2162 SCREEN_TYPE_ID_KEY);
2164 __COMMON_FUNC_EXIT__;
2168 void viewer_manager_request_scan(void)
2170 __COMMON_FUNC_ENTER__;
2172 HEADER_MODES current_state;
2174 current_state = viewer_manager_header_mode_get();
2176 if (current_state == HEADER_MODE_ON ||
2177 current_state == HEADER_MODE_CONNECTED) {
2180 INFO_LOG(UG_NAME_NORMAL, "Time to make a scan..");
2182 viewer_manager_show(VIEWER_WINSET_SEARCHING_GRP_TITLE);
2183 viewer_manager_header_mode_set(HEADER_MODE_SEARCHING);
2185 scan_result = wlan_manager_scan();
2186 if (scan_result != WLAN_MANAGER_ERR_NONE) {
2187 viewer_manager_header_mode_set(current_state);
2191 __COMMON_FUNC_EXIT__;
2194 void viewer_manager_ctxpopup_cleanup(void)
2196 if (manager_object->ctxpopup) {
2197 evas_object_del(manager_object->ctxpopup);
2198 manager_object->ctxpopup = NULL;
2202 void viewer_manager_hidden_confirm_cleanup(void)
2204 if (manager_object == NULL)
2207 hidden_ap_data_t *hidden_data = manager_object->hidden_popup_data;
2209 if (hidden_data != NULL) {
2210 if (hidden_data->confirm_popup != NULL) {
2211 evas_object_del(hidden_data->confirm_popup);
2212 hidden_data->confirm_popup = NULL;
2215 if (hidden_data->device_info) {
2216 g_free(hidden_data->device_info);
2218 g_free(hidden_data->ssid);
2219 g_free(hidden_data);
2221 manager_object->hidden_popup_data = NULL;
2225 void viewer_manager_cleanup_views(void)
2227 viewer_manager_ctxpopup_cleanup();
2229 viewer_manager_pop_naviframe_item();
2230 view_hidden_ap_popup_delete();
2231 viewer_manager_hidden_confirm_cleanup();
2234 void viewer_manager_rotate_top_setupwizard_layout(void)
2236 Evas_Object *layout = NULL;
2237 struct ug_data *ugd;
2239 Elm_Object_Item *navi_it = NULL;
2241 navi_it = elm_naviframe_top_item_get(manager_object->nav);
2242 layout = elm_object_item_content_get(navi_it);
2244 ugd = (struct ug_data *)ug_app_state->gadget;
2245 change_ang = elm_win_rotation_get(ugd->win_main);
2246 if (change_ang == 0 || change_ang == 180) {
2247 common_utils_contents_rotation_adjust(UG_EVENT_ROTATE_PORTRAIT);
2248 edje_object_signal_emit((Evas_Object *)elm_layout_edje_get(layout)
2249 ,"location,vertical", "elm");
2251 common_utils_contents_rotation_adjust(UG_EVENT_ROTATE_LANDSCAPE);
2252 edje_object_signal_emit((Evas_Object *)elm_layout_edje_get(layout),
2253 "location,horizontal", "elm");