Adjust UI component & handle remote controller input 06/91506/3
authorJiwan Kim <ji-wan.kim@samsung.com>
Mon, 10 Oct 2016 02:21:40 +0000 (11:21 +0900)
committerJiwan Kim <ji-wan.kim@samsung.com>
Tue, 11 Oct 2016 02:24:30 +0000 (11:24 +0900)
 - Fix grid item size on network menu
 - Handle 'selected' callback on grid item
   (To support input from remote controller)
 - Change gengrid select mode to handle selected event multiple times.
 - Fix connection animation bug

Change-Id: I1d2ac68d00cba6f75f24210a54ce2f266e417c11
Signed-off-by: Jiwan Kim <ji-wan.kim@samsung.com>
res/layout/network.edc
src/common/utils.c
src/grid/grid_wireless.c
src/layout/layout_network.c

index 982ae52..4ded584 100644 (file)
@@ -816,52 +816,20 @@ group {
                }
 
                part {
-                       name, "padding.passcode.left";
-                       type, SPACER;
-                       scale, 1;
-                       description {
-                               state, "default" 0.0;
-                               min, 8 0;
-                               rel1.to, "padding.passcode.area";
-                               rel2 {
-                                       to, "padding.passcode.area";
-                                       relative, 0.0 1.0;
-                               }
-                               align, 0.0 0.5;
-                               fixed, 1 0;
-                       }
-               }
-
-               part {
-                       name, "padding.passcode.right";
-                       type, SPACER;
-                       scale, 1;
-                       description {
-                               state, "default" 0.0;
-                               min, 8 0;
-                               rel1 {
-                                       to, "padding.passcode.area";
-                                       relative, 1.0 0.0;
-                               }
-                               rel2.to, "padding.passcode.area";
-                               align, 1.0 0.5;
-                               fixed, 1 0;
-                       }
-               }
-
-               part {
                        name, PART_WIFI_PASSCODE;
                        type, SWALLOW;
                        scale, 1;
                        description {
                                state, "default" 0.0;
                                rel1 {
-                                       to, "padding.passcode.left";
-                                       relative, 1.0 0.0;
+                                       to, "padding.passcode.area";
+                                       relative, 0.0 0.0;
+                                       offset, 1 1;
                                }
                                rel2 {
-                                       to, "padding.passcode.right";
-                                       relative, 0.0 1.0;
+                                       to, "padding.passcode.area";
+                                       relative, 1.0 1.0;
+                                       offset, -2 0;
                                }
                                fixed, 0 1;
                        }
index 011ad49..204370f 100644 (file)
@@ -283,7 +283,7 @@ Evas_Object *utils_add_gengrid(Evas_Object *parent, Eina_Bool horizontal,
        elm_gengrid_multi_select_set(grid, EINA_FALSE);
        elm_gengrid_horizontal_set(grid, horizontal);
        elm_gengrid_align_set(grid, 0.0, 0.0);
-       elm_gengrid_select_mode_set(grid, ELM_OBJECT_SELECT_MODE_DEFAULT);
+       elm_gengrid_select_mode_set(grid, ELM_OBJECT_SELECT_MODE_ALWAYS);
        elm_config_item_select_on_focus_disabled_set(EINA_TRUE);
        elm_gengrid_item_size_set(grid,
                        ELM_SCALE_SIZE(width),
index 6dcf293..7b6bb3d 100644 (file)
@@ -23,8 +23,8 @@
 #include "grid/grid_wireless.h"
 #include "layout/network.h"
 
-#define WIFI_LIST_ITEM_X (488 + 26)
-#define WIFI_LIST_ITEM_Y (134 + 26)
+#define WIFI_LIST_ITEM_X ((488 + 26) / 2)
+#define WIFI_LIST_ITEM_Y ((134 + 26) / 2)
 
 static char *_text_get(void *data, Evas_Object *obj, const char *part)
 {
index e931606..c910e02 100644 (file)
@@ -455,6 +455,18 @@ static void _grid_set_unfocus(Elm_Object_Item *it, void *data)
                elm_object_item_signal_emit(it, SIG_LIST_ITEM_UNFOCUS, SRC_ELM);
 }
 
+static void _grid_remove_connecting_state(Elm_Object_Item *it, void *data)
+{
+       struct _priv *priv = data;
+       if (NULL == priv) {
+               _ERR("User data not found");
+               return;
+       }
+
+       if (it != priv->selected_wireless_item)
+               elm_object_item_signal_emit(it, SIG_LOADING_STOP, SRC_ELM);
+}
+
 static void _grid_focused_cb(int id, void *data, Evas_Object *obj, Elm_Object_Item *item)
 {
        struct _priv *priv = data;
@@ -469,7 +481,8 @@ static void _grid_focused_cb(int id, void *data, Evas_Object *obj, Elm_Object_It
        listmgr_foreach_list(priv->listmgr, LIST_WIRELESS, _grid_set_unfocus, priv);
 }
 
-static void _grid_pressed_cb(int id, void *data, Evas_Object *obj)
+static void _grid_selected_cb(int id, void *data, Evas_Object *obj,
+                       Elm_Object_Item *item)
 {
        struct _priv *priv = data;
        if (NULL == priv) {
@@ -477,7 +490,7 @@ static void _grid_pressed_cb(int id, void *data, Evas_Object *obj)
                return;
        }
 
-       priv->selected_wireless_item = priv->focused_wireless_item;
+       priv->selected_wireless_item = item;
        _wireless_selected_cb(priv->selected_wireless_item, data);
 }
 
@@ -502,8 +515,8 @@ static input_handler _action_input_handler = {
 
 static input_handler _grid_input_handler = {
        .realized = _grid_realized_cb,
-       .pressed = _grid_pressed_cb,
-       .focused = _grid_focused_cb
+       .focused = _grid_focused_cb,
+       .selected = _grid_selected_cb
 };
 
 static void _draw_no_contents_message(struct _priv *priv)
@@ -685,6 +698,10 @@ static void _connect_wifi_with_passcode(struct _priv *priv)
        elm_object_item_signal_emit(priv->selected_wireless_item,
                        SIG_LOADING_START, SRC_ELM);
 
+       /* Remove connection state from other items */
+       listmgr_foreach_list(priv->listmgr, LIST_WIRELESS,
+                       _grid_remove_connecting_state, priv);
+
        _remove_wifi_passcode_popup(priv);
 }
 
@@ -850,7 +867,6 @@ static bool _draw_wifi_passcode_popup(struct _priv *priv, char *wifi_name)
                _ERR("Add popup failed");
                return false;
        }
-       evas_object_show(popup);
 
        ly = utils_add_layout(popup, GRP_POPUP_PASSCODE, EINA_FALSE);
        if (!ly) {
@@ -858,9 +874,7 @@ static bool _draw_wifi_passcode_popup(struct _priv *priv, char *wifi_name)
                evas_object_del(popup);
                return false;
        }
-
        elm_object_part_text_set(ly, PART_WIFI_NAME, wifi_name);
-       evas_object_show(ly);
 
        scroller = elm_scroller_add(ly);
        evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -904,7 +918,10 @@ static bool _draw_wifi_passcode_popup(struct _priv *priv, char *wifi_name)
        evas_object_event_callback_add(entry, EVAS_CALLBACK_KEY_DOWN,
                        _popup_entry_key_down_cb, priv);
 
-       elm_object_focus_set(priv->passcode_entry, EINA_TRUE);
+       /* Set focus into ok button */
+       elm_object_focus_set(priv->popup_btn2, EINA_TRUE);
+
+       evas_object_show(popup);
 
        return true;
 }
@@ -950,6 +967,10 @@ static void _wireless_selected_cb(Elm_Object_Item *it, void *data)
 
                elm_object_item_signal_emit(priv->selected_wireless_item,
                                SIG_LOADING_START, SRC_ELM);
+
+               /* Remove connection state from other items */
+               listmgr_foreach_list(priv->listmgr, LIST_WIRELESS,
+                               _grid_remove_connecting_state, priv);
        }
 }