Added the mouse click event handling for sort button 74/45174/1
authorHyojung Jo <hj903.jo@samsung.com>
Mon, 3 Aug 2015 08:54:52 +0000 (17:54 +0900)
committerHyojung Jo <hj903.jo@samsung.com>
Mon, 3 Aug 2015 08:54:52 +0000 (17:54 +0900)
Change-Id: Iaaba512943f3d2a44fa81440417d891d85d30d55
Signed-off-by: Hyojung Jo <hj903.jo@samsung.com>
src/view/view_base.c

index 7af5126..2ab263c 100644 (file)
@@ -79,11 +79,6 @@ static void _mouse_move_cb(int id, void *data, Evas *e, Evas_Object *obj,
                elm_object_focus_set(obj, EINA_TRUE);
 }
 
-static void _menu_clicked_cb(int id, void *data, Evas_Object *obj)
-{
-       /* It will be implemented later. */
-}
-
 static void _menu_focused_cb(int id, void *data, Evas_Object *obj,
                Elm_Object_Item *item)
 {
@@ -265,6 +260,41 @@ static void _sort_by_recently_used(struct _priv *priv)
        }
 }
 
+static void _sort_option_selected(struct _priv *priv, int id, Evas_Object *obj)
+{
+       if (!priv || !obj) {
+               _ERR("Invalid argument.");
+               return;
+       }
+
+       switch (id) {
+       case SORT_RECENT:
+               _sort_by_recently_used(priv);
+               priv->sort_type = SORT_RECENT;
+
+               break;
+
+       case SORT_A_TO_Z:
+               priv->app_list = eina_list_sort(priv->app_list, 0,
+                               _sort_by_a_to_z);
+               priv->sort_type = SORT_A_TO_Z;
+               break;
+
+       case SORT_Z_TO_A:
+               priv->app_list = eina_list_sort(priv->app_list, 0,
+                               _sort_by_z_to_a);
+               priv->sort_type = SORT_Z_TO_A;
+               break;
+
+       default:
+               _ERR("Invalid sort type.");
+       }
+
+       _destroy_sort_ctxpopup(priv);
+       elm_object_text_set(priv->sort_btn, elm_object_text_get(obj));
+       gridmgr_append_list(priv->gmgr, STR_MYAPPS, priv->app_list);
+}
+
 static void _option_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
                Evas_Event_Key_Down *ev)
 {
@@ -277,43 +307,31 @@ static void _option_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
        priv = data;
 
        if (!strcmp(ev->keyname, KEY_BACK)
-                       || !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
+                       || !strcmp(ev->keyname, KEY_BACK_REMOTE))
                _destroy_sort_ctxpopup(priv);
-       } else if (!strcmp(ev->keyname, KEY_ENTER)
-                       || !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
-               switch (id) {
-               case SORT_RECENT:
-                       _sort_by_recently_used(priv);
-                       priv->sort_type = SORT_RECENT;
-
-                       break;
-
-               case SORT_A_TO_Z:
-                       priv->app_list = eina_list_sort(priv->app_list, 0,
-                                       _sort_by_a_to_z);
-                       priv->sort_type = SORT_A_TO_Z;
-                       break;
-
-               case SORT_Z_TO_A:
-                       priv->app_list = eina_list_sort(priv->app_list, 0,
-                                       _sort_by_z_to_a);
-                       priv->sort_type = SORT_Z_TO_A;
-                       break;
+       else if (!strcmp(ev->keyname, KEY_ENTER)
+                       || !strcmp(ev->keyname, KEY_ENTER_REMOTE))
+               _sort_option_selected(priv, id, obj);
+}
 
-               default:
-                       _ERR("Invalid sort type.");
-               }
+static void _option_mouse_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
+               Evas_Event_Mouse_Down *ev)
+{
+       struct _priv *priv;
 
-               _destroy_sort_ctxpopup(priv);
-               elm_object_text_set(priv->sort_btn, elm_object_text_get(obj));
-               gridmgr_append_list(priv->gmgr, STR_MYAPPS, priv->app_list);
+       if (!data || !obj || !ev) {
+               _ERR("Invalid argument.");
+               return;
        }
+       priv = data;
+
+       _sort_option_selected(priv, id, obj);
 }
 
 static input_handler _option_input_handler = {
        .mouse_move = _mouse_move_cb,
-       .key_down = _option_key_down_cb
-       /* It will be implemented later. */
+       .key_down = _option_key_down_cb,
+       .mouse_down = _option_mouse_down_cb
 };
 
 static bool _draw_sort_option(struct _priv *priv)
@@ -322,11 +340,13 @@ static bool _draw_sort_option(struct _priv *priv)
        Evas_Coord x, y, w, h;
        int i;
 
-       if (!priv) {
+       if (!priv || !priv->sort_btn) {
                _ERR("Invalid argument.");
                return false;
        }
 
+       elm_object_signal_emit(priv->sort_btn, SIG_SELECTED, SRC_SORT_BTN);
+
        ctxpopup = elm_ctxpopup_add(priv->base);
        if (!ctxpopup) {
                _ERR("elm_ctxpopup_add failed.");
@@ -377,41 +397,39 @@ static bool _draw_sort_option(struct _priv *priv)
        return true;
 }
 
-static void _sort_clicked_cb(int id, void *data, Evas_Object *obj)
+static void _sort_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
+               Evas_Event_Key_Down *ev)
 {
        struct _priv *priv;
 
-       if (!data || !obj) {
+       if (!data || !obj || !ev) {
                _ERR("Invalid argument.");
                return;
        }
        priv = data;
 
-       if (!_draw_sort_option(priv)) {
-               _ERR("Draw sort ctxpopup failed.");
-               return;
-       }
-
-       elm_object_signal_emit(obj, SIG_SELECTED, SRC_SORT_BTN);
+       if (!strcmp(ev->keyname, KEY_BACK)
+                       || !strcmp(ev->keyname, KEY_BACK_REMOTE))
+               ui_app_exit();
+       else if (!strcmp(ev->keyname, KEY_ENTER)
+                       || !strcmp(ev->keyname, KEY_ENTER_REMOTE))
+               if (!_draw_sort_option(priv))
+                       _ERR("Draw sort ctxpopup failed.");
 }
 
-static void _sort_focused_cb(int id, void *data, Evas_Object *obj,
-               Elm_Object_Item *item)
+static void _sort_mouse_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
+               Evas_Event_Mouse_Down *ev)
 {
-       /* It will be implemented later. */
-}
+       struct _priv *priv;
 
-static void _sort_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
-               Evas_Event_Key_Down *ev)
-{
-       if (!ev) {
+       if (!data || !obj || !ev) {
                _ERR("Invalid argument.");
                return;
        }
+       priv = data;
 
-       if (!strcmp(ev->keyname, KEY_BACK)
-                       || !strcmp(ev->keyname, KEY_BACK_REMOTE))
-               ui_app_exit();
+       if (!_draw_sort_option(priv))
+               _ERR("Draw sort ctxpopup failed.");
 }
 
 static void _grid_mouse_move_cb(int id, void *data, Evas *e, Evas_Object *obj,
@@ -544,19 +562,15 @@ static void _grid_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
 
 static input_handler _menu_input_handler = {
        .mouse_move = _mouse_move_cb,
-       .clicked = _menu_clicked_cb,
        .focused = _menu_focused_cb,
        .key_down = _menu_key_down_cb,
        .key_up = _menu_key_up_cb
-       /* It will be implemented later. */
 };
 
 static input_handler _sort_input_handler = {
        .mouse_move = _mouse_move_cb,
-       .clicked = _sort_clicked_cb,
-       .focused = _sort_focused_cb,
-       .key_down = _sort_key_down_cb
-       /* It will be implemented later. */
+       .key_down = _sort_key_down_cb,
+       .mouse_down = _sort_mouse_down_cb
 };
 
 static input_handler _grid_input_handler = {
@@ -565,7 +579,6 @@ static input_handler _grid_input_handler = {
        .realized = _grid_realized_cb,
        .unrealized = _grid_unrealized_cb,
        .key_down = _grid_key_down_cb
-       /* It will be implemented later. */
 };
 
 static bool _draw_top_area(struct _priv *priv)