Change logic to show passcode popup again for same list item 57/91057/2
authorJiwan Kim <ji-wan.kim@samsung.com>
Wed, 5 Oct 2016 11:49:10 +0000 (20:49 +0900)
committerJiwan Kim <ji-wan.kim@samsung.com>
Wed, 5 Oct 2016 11:56:57 +0000 (20:56 +0900)
 - This patch is for TSAM-8452

Change-Id: Ibc33690027d04b5d3cdd34564f9815c1b977f87c
Signed-off-by: Jiwan Kim <ji-wan.kim@samsung.com>
src/layout/layout_network.c

index 25f5e6a8cb15957c6d2ceeb3094e26f7ad752919..ff93b9efeb6ce55e36b12a1cbdba24f6f2ef2096 100644 (file)
@@ -71,6 +71,7 @@ struct _priv {
        struct listmgr *listmgr;
        struct datamgr *wirelessmgr;
        Elm_Object_Item *selected_wireless_item;
+       Elm_Object_Item *focused_wireless_item;
        Evas_Object *passcode_popup;
        Evas_Object *passcode_entry;
        enum network_type cur_type;
@@ -84,6 +85,7 @@ struct _priv {
 static void _remove_wifi_passcode_popup(struct _priv *priv);
 static void _retry_wired_network(struct _priv *priv);
 static void _retry_wireless_network(struct _priv *priv);
+static void _wireless_selected_cb(Elm_Object_Item *it, void *data);
 
 static void _mouse_move_cb(int id, void *data, Evas *e, Evas_Object *obj,
                Evas_Event_Mouse_Move *ev)
@@ -433,6 +435,29 @@ static void _grid_realized_cb(int id, void *data, Evas_Object *obj,
        }
 }
 
+static void _grid_focused_cb(int id, void *data, Evas_Object *obj, Elm_Object_Item *item)
+{
+       struct _priv *priv = data;
+       if (NULL == priv) {
+               _ERR("User data not found");
+               return;
+       }
+
+       priv->focused_wireless_item = item;
+}
+
+static void _grid_pressed_cb(int id, void *data, Evas_Object *obj)
+{
+       struct _priv *priv = data;
+       if (NULL == priv) {
+               _ERR("User data not found");
+               return;
+       }
+
+       priv->selected_wireless_item = priv->focused_wireless_item;
+       _wireless_selected_cb(priv->selected_wireless_item, data);
+}
+
 static void _focused(int id, void *data, Evas_Object *obj, Elm_Object_Item *item)
 {
        viewmgr_update_view(VIEW_BASE, UPDATE_SUB_ITEM_SELECTED, (void *)LAYOUT_NETWORK);
@@ -454,7 +479,8 @@ static input_handler _action_input_handler = {
 
 static input_handler _grid_input_handler = {
        .realized = _grid_realized_cb,
-       .focused = _focused
+       .pressed = _grid_pressed_cb,
+       .focused = _grid_focused_cb
 };
 
 static void _draw_no_contents_message(struct _priv *priv)
@@ -858,8 +884,6 @@ static void _wireless_selected_cb(Elm_Object_Item *it, void *data)
                return;
        }
 
-       priv->selected_wireless_item = it;
-
        if (ap_info->secure_type != WIFI_SECURITY_TYPE_NONE) {
                wifi_name = ap_info->essid;
                if (!wifi_name)
@@ -970,8 +994,8 @@ static bool _create(layoutmgr *lmgr, void *data)
                goto err;
        }
 
-       if (!listmgr_add_list(listmgr, LIST_WIRELESS, get_wireless_grid_class(),
-                               _wireless_selected_cb, priv)) {
+       if (!listmgr_add_list(listmgr, LIST_WIRELESS,
+                               get_wireless_grid_class(), NULL, priv)) {
                _ERR("Add wireless list failed.");
                listmgr_destroy(listmgr);
                goto err;
@@ -999,7 +1023,7 @@ static bool _create(layoutmgr *lmgr, void *data)
        layoutmgr_set_layout_data(lmgr, LAYOUT_ID_NETWORK, priv);
 
        listmgr_add_inner_grid_cb(priv->listmgr, LIST_WIRELESS,
-                       &_grid_input_handler, NULL);
+                       &_grid_input_handler, priv);
 
        if(data) {
                listmgr_set_list_next_focus(priv->listmgr, LIST_WIRELESS,