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;
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));
}
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,
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);
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);
}
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;
}
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;
.create = _create,
.show = _show,
.hide = _hide,
- .update = _update,
.destroy = _destroy,
};