key: go to home view on hw home btn click
authorKamil Lipiszko <k.lipiszko@samsung.com>
Tue, 1 Mar 2016 14:55:54 +0000 (15:55 +0100)
committerKamil Lipiszko <k.lipiszko@samsung.com>
Tue, 1 Mar 2016 14:55:54 +0000 (15:55 +0100)
Change-Id: I2e0f832bfaf9beee94eb7d76b7b818b7834543e3

inc/conf.h
src/key.c

index 7347aab..55941ab 100644 (file)
 #define OFFSET 100
 /*========================== KEY CONFIG ======================================*/
 
-#define KEY_HOME "XF86Phone"
+#define KEY_HOME "XF86Home"
 #define KEY_MENU "XF86Send"
 #define KEY_BACK "XF86Back"
 #define KEY_RETURN "Return"
index 8e3ef0c..503ca1d 100644 (file)
--- a/src/key.c
+++ b/src/key.c
 static Eina_Bool __key_release_cb(void *data, int type, void *event);
 static Eina_Bool __key_press_cb(void *data, int type, void *event);
 
+typedef enum {
+       HW_KEY_NONE = -1,
+       HW_KEY_BACK,
+       HW_KEY_HOME,
+       HW_KEY_MENU,
+} hw_key_t;
 
 static struct {
        Eina_Bool pressed;
@@ -94,6 +100,7 @@ static Eina_Bool __key_press_cb(void *data, int type, void *event)
 static Eina_Bool __key_release_cb(void *data, int type, void *event)
 {
        Evas_Event_Key_Up *ev = event;
+       hw_key_t pressed_key = HW_KEY_NONE;
 
        if (!key_info_s.register_handler || !ev)
                return ECORE_CALLBACK_RENEW;
@@ -103,23 +110,28 @@ static Eina_Bool __key_release_cb(void *data, int type, void *event)
        if (key_info_s.pressed == EINA_FALSE)
                return ECORE_CALLBACK_RENEW;
 
-       if (!strcmp(ev->keyname, KEY_MENU)) {
-               LOGD("Menu pressed");
-               option_menu_change_state_on_hw_menu_key();
+       if (!strcmp(ev->keyname, KEY_BACK))
+               pressed_key = HW_KEY_BACK;
+       else if (!strcmp(ev->keyname, KEY_MENU))
+               pressed_key = HW_KEY_MENU;
+       else if(!strcmp(ev->keyname, KEY_HOME))
+               pressed_key = HW_KEY_HOME;
+       else {
+               key_info_s.pressed = EINA_FALSE;
 
                return ECORE_CALLBACK_RENEW;
        }
 
-       /*TODO: Keyname to key menu and key home are the same, so this code is doesn't execute*/
-       if (!strcmp(ev->keyname, KEY_HOME)) {
-               LOGD("Home pressed");
-               home_screen_set_view_type(HOMESCREEN_VIEW_HOME);
+       if (pressed_key == HW_KEY_MENU) {
+               LOGD("Menu pressed");
+               option_menu_change_state_on_hw_menu_key();
 
                return ECORE_CALLBACK_RENEW;
        }
 
-       if (!strcmp(ev->keyname, KEY_BACK)) {
-               homescreen_view_t view_t = home_screen_get_view_type();
+       homescreen_view_t view_t = home_screen_get_view_type();
+
+       if (pressed_key == HW_KEY_BACK || pressed_key == HW_KEY_HOME) {
 
                option_menu_hide();
                if (popup_destroy()) {
@@ -151,9 +163,13 @@ static Eina_Bool __key_release_cb(void *data, int type, void *event)
                        break;
                case HOMESCREEN_VIEW_ALL_APPS_CHOOSE:
                        home_screen_close_all_apps_choose_view();
+                       if(pressed_key == HW_KEY_HOME)
+                               home_screen_set_view_type(HOMESCREEN_VIEW_HOME);
                        break;
                case HOMESCREEN_VIEW_ALL_APPS_EDIT:
                        home_screen_set_view_type(HOMESCREEN_VIEW_ALL_APPS);
+                       if(pressed_key ==  HW_KEY_HOME)
+                               home_screen_set_view_type(HOMESCREEN_VIEW_HOME);
                        break;
                case HOMESCREEN_VIEW_UNKNOWN:
                        break;