Added wireless failed popup for reason other than wrong password 43/137943/3
authorAbhishek Sansanwal <abhishek.s94@samsung.com>
Mon, 10 Jul 2017 10:04:17 +0000 (15:34 +0530)
committerAbhishek Sansanwal <abhishek.s94@samsung.com>
Wed, 12 Jul 2017 06:33:55 +0000 (12:03 +0530)
Description: In some instance the failed popup should not
have the retry button because the connection failure is due
to reason other than wrong password such as timeout or if
AP is longer present in scan list.

Signed-off-by: Abhishek Sansanwal <abhishek.s94@samsung.com>
Change-Id: I7cf9dae76022c52608528273a9dcae49dc9cdd3c

include/common/datamgr.h
src/data/system/data_wireless.c
src/layout/layout_network.c

index 2d79190..2e7ad95 100644 (file)
@@ -31,6 +31,7 @@ enum event_type {
        EVENT_DATA_INIT_DONE_WIRELESS,
        EVENT_DATA_INIT_FAIL_WIRELESS,
        EVENT_DATA_INVALID_PWD_WIRELESS,
+       EVENT_DATA_CONNECT_FAIL_WIRELESS,
        EVENT_DATA_DEACTIVATE_FAIL,
        EVENT_BACKGROUND_DATA_UPDATE_DONE,
        EVENT_DATA_UPDATE_DONE,
index 0e7f78b..5062afd 100644 (file)
@@ -509,6 +509,8 @@ static void _wifi_manager_connected_cb(wifi_manager_error_e err, void *data)
                                priv->event_cb(EVENT_DATA_INVALID_PWD_WIRELESS, priv->cb_data);
                } else {
                        _DBG("Fail");
+                       if (priv->event_cb)
+                               priv->event_cb(EVENT_DATA_CONNECT_FAIL_WIRELESS, priv->cb_data);
                }
 
                return;
index fa58589..6d824d8 100644 (file)
@@ -85,6 +85,7 @@ static void _selected_menu(void *data, int id);
 static void _grid_find_retry_ap(Elm_Object_Item *it, void *data);
 void network_wireless_set_update_callbacks(void *data);
 void network_wired_set_update_callbacks(void *data);
+void _popup_failed_no_retry_wireless_status(struct _priv *priv);
 
 struct _priv * current_priv = NULL;
 
@@ -461,9 +462,15 @@ struct wifi_manager_ap_info *ap_info;
         if (!priv)
                 return;
 
+       priv->connecting_wireless_item = NULL;
        viewmgr_update_view(VIEW_WIRELESS_LIST, GRID_FOREACH,
                                _grid_find_retry_ap);
        free(priv->connecting_essid);
+       if (priv->connecting_wireless_item == NULL) {
+               _ERR("AP no longer present in scan list");
+               _popup_failed_no_retry_wireless_status(priv);
+               return;
+       }
        ap_info = elm_object_item_data_get(priv->connecting_wireless_item);
        essid = ap_info->essid;
        _destroy_wireless_status_popup();
@@ -701,6 +708,38 @@ void _popup_scanning_wireless(struct _priv *priv)
        evas_object_show(search_wireless_network_popup);
 }
 
+void _popup_failed_no_retry_wireless_status(struct _priv *priv)
+{
+        Evas_Object *ly, *close_btn;
+       _destroy_wireless_status_popup();
+        failed_wireless_popup = utils_add_popup(priv->base, STYLE_POPUP, STR_WIRELESS, NULL);
+        if (!failed_wireless_popup) {
+                _ERR("Add popup failed");
+                return;
+        }
+        ly = utils_add_layout(failed_wireless_popup, GRP_FAILED_IMAGE_NETWORK_POPUP, EINA_FALSE);
+        if (!ly) {
+                _ERR("Add layout failed.");
+                evas_object_del(failed_wireless_popup);
+                return;
+        }
+       elm_object_part_text_set(ly, "part.text.content", "Wireless network connection failed.");
+       elm_object_part_text_set(ly, "part.text.content1", "Press retry again.");
+
+        close_btn = elm_button_add(failed_wireless_popup);
+        if (!close_btn) {
+                _ERR("Add button failed.");
+                evas_object_del(failed_wireless_popup);
+                return;
+        }
+        elm_object_text_set(close_btn, "CLOSE");
+        elm_object_part_content_set(failed_wireless_popup, "button1", close_btn);
+        evas_object_smart_callback_add(close_btn, "clicked", _close_wireless_dismissed_cb, failed_wireless_popup);
+
+        elm_object_content_set(failed_wireless_popup, ly);
+        evas_object_show(failed_wireless_popup);
+}
+
 void _popup_failed_wired_status(struct _priv *priv)
 {
         Evas_Object *ly, *close_btn, *retry_btn, *new_network_btn;
@@ -1406,7 +1445,25 @@ static void _data_event_cb(enum event_type type, void *data)
 //             _draw_wifi_passcode_popup(priv, wifi_name, true);
                break;
        }
+       case EVENT_DATA_CONNECT_FAIL_WIRELESS: {
+               _popup_failed_no_retry_wireless_status(priv);
 
+               _DBG("Connect failed");
+               /* Remove connection state from other items */
+               viewmgr_update_view(VIEW_WIRELESS_LIST, GRID_FOREACH,
+                                       _grid_remove_connecting_state);
+               elm_object_item_signal_emit(priv->connecting_wireless_item,
+                               SIG_LOADING_STOP, SRC_ELM);
+               elm_object_item_signal_emit(priv->connecting_wireless_item,
+                               SIG_CONNECTION_FAIL, SRC_ELM);
+
+               /* Update connection state for all items.
+                * When profile is switched to ethernet,
+                * 'Connected' check icon still remains.. */
+
+               viewmgr_update_view(VIEW_WIRELESS_LIST, GRID_UPDATE, NULL);
+               break;
+       }
        case EVENT_DATA_UPDATE_WIRED:
                SETTING_TRACE("Updated wired network");
                /* Wired network setting is changed */