From b5e4a81d8285d130c08de156bd8080e7bf77ee10 Mon Sep 17 00:00:00 2001 From: Jiwan Kim Date: Mon, 10 Oct 2016 11:21:40 +0900 Subject: [PATCH] Adjust UI component & handle remote controller input - 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 --- res/layout/network.edc | 44 ++++++-------------------------------------- src/common/utils.c | 2 +- src/grid/grid_wireless.c | 4 ++-- src/layout/layout_network.c | 37 +++++++++++++++++++++++++++++-------- 4 files changed, 38 insertions(+), 49 deletions(-) diff --git a/res/layout/network.edc b/res/layout/network.edc index 982ae52..4ded584 100644 --- a/res/layout/network.edc +++ b/res/layout/network.edc @@ -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; } diff --git a/src/common/utils.c b/src/common/utils.c index 011ad49..204370f 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -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), diff --git a/src/grid/grid_wireless.c b/src/grid/grid_wireless.c index 6dcf293..7b6bb3d 100644 --- a/src/grid/grid_wireless.c +++ b/src/grid/grid_wireless.c @@ -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) { diff --git a/src/layout/layout_network.c b/src/layout/layout_network.c index e931606..c910e02 100644 --- a/src/layout/layout_network.c +++ b/src/layout/layout_network.c @@ -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); } } -- 2.7.4