Implement async connect 19/17619/2
authorHyunjee Kim <hj0426.kim@samsung.com>
Mon, 20 Jan 2014 07:40:57 +0000 (16:40 +0900)
committerhyunjee Kim <hj0426.kim@samsung.com>
Fri, 7 Mar 2014 08:26:55 +0000 (00:26 -0800)
Change-Id: I050d34286c9f722ac1aed706084c97e44e1adaf8
Signed-off-by: Hyunjee Kim <hj0426.kim@samsung.com>
packaging/wifi-efl-ug.spec
sources/ui-gadget/include/viewer_list.h
sources/ui-gadget/viewers-layout/wifi_viewer_list.c

index 346b4e7..712854b 100644 (file)
@@ -1,6 +1,6 @@
 Name:       wifi-efl-ug
 Summary:    Wi-Fi UI Gadget
-Version:    0.5.2_49
+Version:    0.5.2_50
 Release:    1
 Group:      App/Network
 License:    Flora License
index 8ae8c81..0b049a0 100644 (file)
@@ -54,6 +54,7 @@ void viewer_list_item_del(Elm_Object_Item *item);
 Elm_Object_Item *viewer_list_item_first_get(Evas_Object* list);
 Elm_Object_Item *viewer_list_item_next_get(const Elm_Object_Item* current);
 Elm_Object_Item *viewer_list_item_at_index(int index);
+Elm_Object_Item *viewer_list_connecting_item_get(VIEWER_ITEM_RADIO_MODES mode);
 /////////////////////////////////////////////////////////////////////////////////////////////////
 
 //////// item control /////////////////////////////////////////////////////////////////////////
index 1eacc54..acd088b 100644 (file)
@@ -444,6 +444,46 @@ static void __viewer_list_wifi_connect(wifi_device_info_t *device_info)
        }
 }
 
+Elm_Object_Item *viewer_list_target_item_get(VIEWER_ITEM_RADIO_MODES mode)
+{
+       __COMMON_FUNC_ENTER__;
+
+       Elm_Object_Item *target = viewer_list_get_first_item();
+
+       while(target) {
+               ug_genlist_data_t *gdata = (ug_genlist_data_t *)elm_object_item_data_get(target);
+               retvm_if(NULL == gdata, NULL);
+               if (gdata->radio_mode == mode)
+                       return target;
+
+               if (target == viewer_list_get_last_item())
+                       break;
+               else
+                       target = elm_genlist_item_next_get(target);
+       }
+
+       __COMMON_FUNC_EXIT__;
+       return NULL;
+}
+
+static void __viewer_list_force_set_wifi_status_connecting(Elm_Object_Item *target)
+{
+       __COMMON_FUNC_ENTER__;
+
+       Elm_Object_Item *connecting_target = viewer_list_target_item_get(VIEWER_ITEM_RADIO_MODE_CONNECTING);
+
+       ug_genlist_data_t *target_data = NULL;
+
+       if (viewer_manager_header_mode_get() == HEADER_MODE_CONNECTING) {
+               target_data = (ug_genlist_data_t *)elm_object_item_data_get(connecting_target);
+               if (target_data)
+                       wlan_manager_disconnect(target_data->device_info->ap);
+               viewer_list_item_radio_mode_set(connecting_target, VIEWER_ITEM_RADIO_MODE_OFF);
+       }
+
+       __COMMON_FUNC_EXIT__;
+}
+
 static void __viewer_list_item_clicked_cb(void *data, Evas_Object *obj,
                void *event_info)
 {
@@ -482,6 +522,8 @@ static void __viewer_list_item_clicked_cb(void *data, Evas_Object *obj,
                case HEADER_MODE_ON:
                case HEADER_MODE_CONNECTING:
                        __viewer_list_wifi_connect(device_info);
+                       __viewer_list_force_set_wifi_status_connecting(it);
+                       viewer_list_item_radio_mode_set(it, VIEWER_ITEM_RADIO_MODE_CONNECTING);
                        break;
 
                case HEADER_MODE_OFF: