bug fix - key handling in home view 76/45076/1
authorSoohye Shin <soohye.shin@samsung.com>
Fri, 31 Jul 2015 08:12:13 +0000 (17:12 +0900)
committerSoohye Shin <soohye.shin@samsung.com>
Fri, 31 Jul 2015 08:16:43 +0000 (17:16 +0900)
- block the enter key when focus is in recent arrow
- move focus to list when focus is in recent arrow

Change-Id: Ic0ef5b8a1f0ad4ce20c475c1d5f373d3276c96f3
Signed-off-by: Soohye Shin <soohye.shin@samsung.com>
src/view/view_home.c

index 11dd94d..2256c9f 100644 (file)
@@ -27,7 +27,6 @@
 #include "utils.h"
 
 enum input_handler_type {
-       INPUT_HANDLER_TYPE_BASE,
        INPUT_HANDLER_TYPE_EO,
        INPUT_HANDLER_TYPE_DOWN
 };
@@ -92,29 +91,36 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
                Evas_Event_Key_Down *ev)
 {
        struct _priv *priv;
+       struct bar_item *bi;
 
-       if (id != INPUT_HANDLER_TYPE_BASE)
+       if (!data)
                return;
 
-       if (!data) {
-               _ERR("Invalid argument");
+       switch (id) {
+       case INPUT_HANDLER_TYPE_EO:
+               bi = data;
+               priv = bi->priv;
+               if (!strcmp(ev->keyname, KEY_DOWN)) {
+                       viewmgr_push_view(VIEW_RECENT);
+               } else if (!strcmp(ev->keyname, KEY_ENTER) ||
+                               !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
+                       if (priv->foc->di->action == ITEM_SELECT_ACTION_PUSH)
+                               elm_object_signal_emit(priv->base, SIG_HIDE, SRC_PROG);
+                       else
+                               datamgr_select_item(priv->dm, priv->foc->di);
+               }
+               break;
+       case INPUT_HANDLER_TYPE_DOWN:
+               priv = data;
+               if (!strcmp(ev->keyname, KEY_UP))
+                       elm_object_focus_set(priv->foc->eo, EINA_TRUE);
+               else if (!strcmp(ev->keyname, KEY_ENTER) ||
+                               !strcmp(ev->keyname, KEY_ENTER_REMOTE))
+                       viewmgr_push_view(VIEW_RECENT);
+               break;
+       default:
                return;
        }
-
-       priv = data;
-
-       if (!strcmp(ev->keyname, KEY_DOWN)) {
-               viewmgr_push_view(VIEW_RECENT);
-       } else if (!strcmp(ev->keyname, KEY_ENTER) ||
-                       !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
-               if (priv->foc->di->action == ITEM_SELECT_ACTION_PUSH)
-                       elm_object_signal_emit(priv->base, SIG_HIDE, SRC_PROG);
-               else
-                       datamgr_select_item(priv->dm, priv->foc->di);
-       } else if (!strcmp(ev->keyname, KEY_BACK) ||
-                       !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
-               /* It should be implemented later */
-       }
 }
 
 static void _mouse_down(int id, void *data, Evas *e, Evas_Object *obj,
@@ -347,7 +353,6 @@ static Evas_Object *_create(Evas_Object *win, void *data)
        }
 
        viewmgr_set_view_data(VIEW_HOME, priv);
-       inputmgr_add_callback(base, INPUT_HANDLER_TYPE_BASE, &handler, priv);
        elm_object_signal_callback_add(base, SIG_HIDE_DONE, SRC_EDJE,
                        _hide_done, priv);