Add key handler for exit application 23/42423/2
authorjinwoo.shin <jw0227.shin@samsung.com>
Mon, 29 Jun 2015 06:48:02 +0000 (15:48 +0900)
committerjinwoo.shin <jw0227.shin@samsung.com>
Mon, 29 Jun 2015 06:50:08 +0000 (15:50 +0900)
Change-Id: Ic4c86982fe48a735910179986b4ac26735bd240f
Signed-off-by: jinwoo.shin <jw0227.shin@samsung.com>
src/notification_view.c
src/square_view.c

index b12e767..dbe15e7 100644 (file)
@@ -55,11 +55,16 @@ struct _priv {
        Elm_Gengrid_Item_Class *grid_class;
 };
 
+static void _base_key_up_cb(int id, void *data, Evas *e, Evas_Object *obj,
+               Evas_Event_Key_Up *ev);
 static void _clear_key_up_cb(int id, void *data,
                Evas *e, Evas_Object *obj, Evas_Event_Key_Up *ev);
 static void _clear_mouse_up_cb(int id, void *data,
                Evas *e, Evas_Object *obj, Evas_Event_Mouse_Up *ev);
 
+static input_handler base_handler = {
+       .key_up = _base_key_up_cb,
+};
 static input_handler clear_handler = {
        .key_up = _clear_key_up_cb,
        .mouse_up = _clear_mouse_up_cb
@@ -250,6 +255,8 @@ static Evas_Object *_create(Evas_Object *win, void *data)
        evas_object_size_hint_weight_set(priv->base,
                        EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
        elm_win_resize_object_add(win, priv->base);
+       elm_object_focus_allow_set(priv->base, EINA_TRUE);
+       inputmgr_add_callback(priv->base, 0, &base_handler, NULL);
 
        scroller = elm_scroller_add(priv->base);
        evas_object_size_hint_align_set(scroller, 0.0, 0.0);
@@ -342,6 +349,15 @@ static view_class vclass = {
        .destroy = _destroy,
 };
 
+static void _base_key_up_cb(int id, void *data, Evas *e, Evas_Object *obj,
+               Evas_Event_Key_Up *ev)
+{
+       if (!strcmp(ev->keyname, KEY_BACK) ||
+                       !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
+               ui_app_exit();
+       }
+}
+
 static void _clear_key_up_cb(int id, void *data, Evas *e,
                Evas_Object *obj, Evas_Event_Key_Up *ev)
 {
index 1da5650..16db8a1 100644 (file)
@@ -31,6 +31,8 @@
 #define NOTIFICATION_ITEM_PADDING_Y 20
 #define SIG_CHILD_REMOVED "child,removed"
 
+static void _base_key_up_cb(int id, void *data, Evas *e, Evas_Object *obj,
+               Evas_Event_Key_Up *ev);
 static void _button_key_up_cb(int id, void *data,
                Evas *e, Evas_Object *obj, Evas_Event_Key_Up *ev);
 static void _button_mouse_up_cb(int id, void *data,
@@ -53,11 +55,13 @@ enum _button_id {
        BUTTON_NOTIFICATION
 };
 
+static input_handler base_handler = {
+       .key_up = _base_key_up_cb,
+};
 static input_handler button_handler = {
        .key_up = _button_key_up_cb,
        .mouse_up = _button_mouse_up_cb
 };
-
 static input_handler scroller_handler = {
        .focused = _scroller_focused_cb
 };
@@ -223,6 +227,30 @@ static void _noti_changed_cb(void *data, notification_type_e type)
                _update_list(priv);
 }
 
+static void _create_button(struct _priv *priv)
+{
+       priv->clear_btn = elm_layout_add(priv->base);
+       elm_layout_file_set(priv->clear_btn,
+                       EDJEFILE, GRP_SQUARE_NOTIFICATION_CLEAR);
+       elm_object_focus_allow_set(priv->clear_btn, EINA_TRUE);
+       elm_object_part_content_set(priv->base,
+                       PART_NOTIFICATION_CLEAR, priv->clear_btn);
+       evas_object_show(priv->clear_btn);
+       inputmgr_add_callback(priv->clear_btn,
+                       BUTTON_CLEAR, &button_handler, NULL);
+
+       priv->launch_btn = elm_layout_add(priv->base);
+       elm_layout_file_set(priv->launch_btn,
+                       EDJEFILE, GRP_NOTIFICATION_LAUNCH);
+       elm_object_focus_allow_set(priv->launch_btn, EINA_TRUE);
+       elm_object_part_content_set(priv->base,
+                       PART_NOTIFICATION_LAUNCH, priv->launch_btn);
+       evas_object_show(priv->launch_btn);
+       elm_object_focus_set(priv->launch_btn, EINA_TRUE);
+       inputmgr_add_callback(priv->launch_btn,
+                       BUTTON_LAUNCH, &button_handler, NULL);
+}
+
 static Evas_Object *_create(Evas_Object *win, void *data)
 {
        struct _priv *priv;
@@ -249,6 +277,7 @@ static Evas_Object *_create(Evas_Object *win, void *data)
        evas_object_size_hint_weight_set(priv->base,
                        EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
        elm_win_resize_object_add(win, priv->base);
+       inputmgr_add_callback(priv->base, 0, &base_handler, NULL);
 
        scroller = elm_scroller_add(priv->base);
        if (!scroller)
@@ -274,25 +303,7 @@ static Evas_Object *_create(Evas_Object *win, void *data)
        evas_object_smart_callback_add(priv->list, SIG_CHILD_REMOVED,
                        _child_removed_cb, NULL);
 
-       priv->clear_btn = elm_layout_add(priv->base);
-       elm_layout_file_set(priv->clear_btn,
-                       EDJEFILE, GRP_SQUARE_NOTIFICATION_CLEAR);
-       elm_object_focus_allow_set(priv->clear_btn, EINA_TRUE);
-       elm_object_part_content_set(priv->base,
-                       PART_NOTIFICATION_CLEAR, priv->clear_btn);
-       evas_object_show(priv->clear_btn);
-       inputmgr_add_callback(priv->clear_btn,
-                       BUTTON_CLEAR, &button_handler, NULL);
-
-       priv->launch_btn = elm_layout_add(priv->base);
-       elm_layout_file_set(priv->launch_btn,
-                       EDJEFILE, GRP_NOTIFICATION_LAUNCH);
-       elm_object_focus_allow_set(priv->launch_btn, EINA_TRUE);
-       elm_object_part_content_set(priv->base,
-                       PART_NOTIFICATION_LAUNCH, priv->launch_btn);
-       evas_object_show(priv->launch_btn);
-       inputmgr_add_callback(priv->launch_btn,
-                       BUTTON_LAUNCH, &button_handler, NULL);
+       _create_button(priv);
 
        viewmgr_set_view_data(SQUARE_VIEW, priv);
 
@@ -364,6 +375,15 @@ static void _destroy(void *view_data)
        free(priv);
 }
 
+static void _base_key_up_cb(int id, void *data, Evas *e, Evas_Object *obj,
+               Evas_Event_Key_Up *ev)
+{
+       if (!strcmp(ev->keyname, KEY_BACK) ||
+                       !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
+                ui_app_exit();
+       }
+}
+
 static void _button_key_up_cb(int id, void *data, Evas *e,
                Evas_Object *obj, Evas_Event_Key_Up *ev)
 {