Removed the resume callback and fixed the focus bug 57/45157/1
authorHyojung Jo <hj903.jo@samsung.com>
Mon, 3 Aug 2015 06:35:22 +0000 (15:35 +0900)
committerHyojung Jo <hj903.jo@samsung.com>
Mon, 3 Aug 2015 06:35:22 +0000 (15:35 +0900)
Change-Id: I11d233881c6172d308ec91b61c28b46ea6a3cf0b
Signed-off-by: Hyojung Jo <hj903.jo@samsung.com>
include/view_base.h
src/main.c
src/view/view_base.c

index 5c6282a..0afd592 100644 (file)
@@ -19,6 +19,4 @@
 
 view_class *view_base_get_vclass(void);
 
-#define UPDATE_LIST 0
-
 #endif /* __AIR_APPS_VIEW_BASE_H__ */
index 05a1321..52e3631 100644 (file)
@@ -117,17 +117,6 @@ static void _app_control(app_control_h control, void *data)
                _ERR("Push view failed.");
 }
 
-static void _resume(void *data)
-{
-       if (!data) {
-               _ERR("Get data failed.");
-               return;
-       }
-
-       if (!viewmgr_update_view(VIEW_BASE, UPDATE_LIST, NULL))
-               _ERR("Update view failed.");
-}
-
 int main(int argc, char *argv[])
 {
        struct _appdata ad;
@@ -135,7 +124,6 @@ int main(int argc, char *argv[])
                .create = _create,
                .terminate = _terminate,
                .app_control = _app_control,
-               .resume = _resume,
        };
 
        memset(&ad, 0x00, sizeof(ad));
index 309058c..7af5126 100644 (file)
@@ -61,7 +61,7 @@ struct _priv {
        Evas_Object *sort_btn;
        Evas_Object *sort_popup;
        Evas_Object *grid;
-       Elm_Object_Item *cur_grid_item;
+       Elm_Object_Item *cur_selected_item;
        struct gridmgr *gmgr;
        Eina_List *app_list;
        enum sort_type sort_type;
@@ -446,34 +446,25 @@ static void _grid_focused_cb(int id, void *data, Evas_Object *obj,
 
        elm_object_signal_emit(priv->focused_menu, SIG_SELECTED, SRC_MENU_BTN);
 
-       if (priv->cur_grid_item)
-               elm_object_item_focus_set(priv->cur_grid_item, EINA_TRUE);
-}
-
-static void _grid_item_focused_cb(void *data, Elm_Object_Item *it,
-               const char *emission, const char *source)
-{
-       struct _priv *priv;
-
-       if (!data) {
-               _ERR("Invalid argument.");
-               return;
+       if (priv->cur_selected_item) {
+               elm_object_item_focus_set(priv->cur_selected_item, EINA_TRUE);
+               priv->cur_selected_item = NULL;
        }
-       priv = data;
-
-       priv->cur_grid_item = (Elm_Object_Item *)it;
 }
 
 static void _grid_item_selected_cb(void *data, Elm_Object_Item *it,
                const char *emission, const char *source)
 {
-       struct app_data *adata;
+       struct _priv *priv;
+       struct app_data *adata, *new_adata;
+       Elm_Object_Item *item;
        int r;
 
-       if (!it) {
+       if (!data || !it) {
                _ERR("Invalid argument.");
                return;
        }
+       priv = data;
        adata = elm_object_item_data_get(it);
 
        r = aul_open_app(get_app_id(adata));
@@ -483,6 +474,24 @@ static void _grid_item_selected_cb(void *data, Elm_Object_Item *it,
        }
 
        elm_gengrid_item_selected_set(it, EINA_FALSE);
+
+       if (priv->sort_type == SORT_RECENT) {
+               _sort_by_recently_used(priv);
+               gridmgr_append_list(priv->gmgr, STR_MYAPPS, priv->app_list);
+
+               item = elm_gengrid_first_item_get(priv->grid);
+               priv->cur_selected_item = NULL;
+
+               while (item) {
+                       new_adata = elm_object_item_data_get(item);
+                       if (adata == new_adata) {
+                               priv->cur_selected_item = item;
+                               break;
+                       }
+
+                       item = elm_gengrid_item_next_get(item);
+               }
+       }
 }
 
 static void _grid_realized_cb(int id, void *data, Evas_Object *obj,
@@ -497,8 +506,6 @@ static void _grid_realized_cb(int id, void *data, Evas_Object *obj,
 
        adata = elm_object_item_data_get(item);
 
-       elm_object_item_signal_callback_add(item, SIG_ITEM_FOCUSED,
-                       SIG_SOURCE_EDC, _grid_item_focused_cb, data);
        elm_object_item_signal_callback_add(item, SIG_ITEM_SELECTED,
                        SIG_SOURCE_EDC, _grid_item_selected_cb, data);
 
@@ -515,8 +522,6 @@ static void _grid_unrealized_cb(int id, void *data, Evas_Object *obj,
                return;
        }
 
-       elm_object_item_signal_callback_del(item, SIG_ITEM_FOCUSED,
-                       SIG_SOURCE_EDC, _grid_item_focused_cb);
        elm_object_item_signal_callback_del(item, SIG_ITEM_SELECTED,
                        SIG_SOURCE_EDC, _grid_item_selected_cb);
 }
@@ -667,7 +672,7 @@ static bool _draw_myapps_grid(struct _priv *priv)
 
        elm_object_part_content_set(priv->base, PART_GENGRID, priv->grid);
 
-       priv->cur_grid_item = elm_gengrid_first_item_get(priv->grid);
+       priv->cur_selected_item = NULL;
 
        return true;
 }
@@ -818,22 +823,6 @@ static void _hide(void *data)
                evas_object_hide(priv->base);
 }
 
-static void _update(void *view_data, int update_type, void *data)
-{
-       struct _priv *priv;
-
-       if (!view_data) {
-               _ERR("Get data failed.");
-               return;
-       }
-       priv = view_data;
-
-       if (update_type == UPDATE_LIST && priv->sort_type == SORT_RECENT) {
-               _sort_by_recently_used(priv);
-               gridmgr_append_list(priv->gmgr, STR_MYAPPS, priv->app_list);
-       }
-}
-
 static void _destroy(void *data)
 {
        struct _priv *priv;
@@ -858,7 +847,6 @@ static view_class _vclass = {
        .create = _create,
        .show = _show,
        .hide = _hide,
-       .update = _update,
        .destroy = _destroy,
 };