pkgmgr-info
capi-content-media-content
glib-2.0
+ aul
)
IF(NOT DEFINED PACKAGE_NAME)
#define SIG_FOCUSED "focused"
#define SIG_UNFOCUSED "unfocused"
#define SIG_SELECTED "selected"
+#define SIG_ITEM_SELECTED "item.selected"
+
+/* Source */
+#define SRC_EDC "edc"
/* Text */
#define STR_FAVORITE "Favorite"
Eina_List *(*create_item_list)(void);
void (*destroy_item_list)(Eina_List *list);
+ void (*item_selected)(Elm_Object_Item *it);
};
struct grid_data *get_tv_grid_data(void);
BuildRequires: pkgconfig(pkgmgr-info)
BuildRequires: pkgconfig(capi-content-media-content)
BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(aul)
%define _appdir /usr/apps/%{name}
%define _bindir %{_appdir}/bin
target, "part.focus.right";
}
+ program {
+ name, SIG_SELECTED;
+ signal, "elm,state,selected";
+ source, "elm";
+ after, "item_selected";
+ }
+
+ program {
+ name, "item_selected";
+ action, SIGNAL_EMIT SIG_ITEM_SELECTED SRC_EDC;
+ }
}
}
target, "part.focus.down";
target, "part.focus.right";
}
+
+ program {
+ name, SIG_SELECTED;
+ signal, "elm,state,selected";
+ source, "elm";
+ after, "item_selected";
+ }
+
+ program {
+ name, "item_selected";
+ action, SIGNAL_EMIT SIG_ITEM_SELECTED SRC_EDC;
+ }
}
}
#include <gridmgr.h>
#include <app_debug.h>
#include <app_contents.h>
+#include <aul.h>
#include "define.h"
#include "grid.h"
free_app_favorite_list(list);
}
+static void _item_selected(Elm_Object_Item *it)
+{
+ struct app_data *adata;
+ int r;
+
+ if (!it) {
+ _ERR("Invalid argument.");
+ return;
+ }
+ adata = elm_object_item_data_get(it);
+
+ r = aul_open_app(get_app_id(adata));
+ if (r == AUL_R_EINVAL)
+ _ERR("Wrong app id");
+}
+
static struct grid_data _gdata = {
.id = STR_APPS,
.item_size_x = ITEM_APPS_X,
.gclass = &_gclass,
.create_item_list = _create_item_list,
.destroy_item_list = _destroy_item_list,
+ .item_selected = _item_selected,
};
struct grid_data *get_apps_grid_data(void)
free_media_favorite_list(list);
}
+static void _item_selected(Elm_Object_Item *it)
+{
+ if (!it) {
+ _ERR("Invalid argument.");
+ return;
+ }
+
+ /* FIXME: The mediahub should be implemented. */
+}
+
static struct grid_data _gdata = {
.id = STR_GALLERY,
.item_size_x = ITEM_GALLERY_X,
.gclass = &_gclass,
.create_item_list = _create_item_list,
.destroy_item_list = _destroy_item_list,
+ .item_selected = _item_selected,
};
struct grid_data *get_gallery_grid_data(void)
free_media_favorite_list(list);
}
+static void _item_selected(Elm_Object_Item *it)
+{
+ if (!it) {
+ _ERR("Invalid argument.");
+ return;
+ }
+
+ /* FIXME: The mediahub should be implemented. */
+}
+
static struct grid_data _gdata = {
.id = STR_MOVIE,
.item_size_x = ITEM_MOVIE_X,
.gclass = &_gclass,
.create_item_list = _create_item_list,
.destroy_item_list = _destroy_item_list,
+ .item_selected = _item_selected,
};
struct grid_data *get_movie_grid_data(void)
free_media_favorite_list(list);
}
+static void _item_selected(Elm_Object_Item *it)
+{
+ if (!it) {
+ _ERR("Invalid argument.");
+ return;
+ }
+
+ /* FIXME: The mediahub should be implemented. */
+}
+
static struct grid_data _gdata = {
.id = STR_MUSIC,
.item_size_x = ITEM_MUSIC_X,
.gclass = &_gclass,
.create_item_list = _create_item_list,
.destroy_item_list = _destroy_item_list,
+ .item_selected = _item_selected,
};
struct grid_data *get_music_grid_data(void)
static void _menu_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
Evas_Event_Key_Down *ev)
{
+ struct grid_data *gdata;
+ Elm_Object_Item *first_item = NULL;
+
if (!ev) {
_ERR("Invalid argument.");
return;
}
- if (!strcmp(ev->key, KEY_BACK))
+ if (!strcmp(ev->key, KEY_BACK)) {
ui_app_exit();
+ } else if (!strcmp(ev->key, KEY_ENTER) || !strcmp(ev->key, KEY_DOWN)) {
+ gdata = _get_grid_data[id]();
+ if (!gdata || !gdata->grid)
+ return;
- /* It will be implemented later. */
+ first_item = elm_gengrid_first_item_get(gdata->grid);
+ if (!first_item)
+ return;
+
+ elm_object_focus_set(gdata->grid, EINA_TRUE);
+ elm_object_item_focus_set(first_item, EINA_TRUE);
+ }
+}
+
+static void _grid_focused_cb(int id, void *data, Evas_Object *obj,
+ Elm_Object_Item *item)
+{
+ struct _priv *priv;
+
+ if (!data) {
+ _ERR("Invalid argument.");
+ return;
+ }
+ priv = data;
+
+ elm_object_signal_emit(priv->menu[priv->cur_menu_id], SIG_SELECTED, "");
+}
+
+static void _grid_item_selected_cb(void *data, Elm_Object_Item *it,
+ const char *emission, const char *source)
+{
+ struct grid_data *gdata;
+
+ if (!data || !it) {
+ _ERR("Invalid argument.");
+ return;
+ }
+ gdata = data;
+
+ if (gdata->item_selected)
+ gdata->item_selected(it);
+
+ elm_gengrid_item_selected_set(it, EINA_FALSE);
+}
+
+static void _grid_realized_cb(int id, void *data, Evas_Object *obj,
+ Elm_Object_Item *item)
+{
+ struct grid_data *gdata;
+
+ if (!item) {
+ _ERR("Invalid argument.");
+ return;
+ }
+
+ gdata = _get_grid_data[id]();
+ if (!gdata || !gdata->id || !gdata->gclass) {
+ _ERR("Get grid data failed.");
+ return;
+ }
+
+ elm_object_item_signal_callback_add(item, SIG_ITEM_SELECTED,
+ SRC_EDC, _grid_item_selected_cb, gdata);
+}
+
+static void _grid_unrealized_cb(int id, void *data, Evas_Object *obj,
+ Elm_Object_Item *item)
+{
+ if (!item) {
+ _ERR("Invalid argument.");
+ return;
+ }
+
+ elm_object_item_signal_callback_del(item, SIG_ITEM_SELECTED,
+ SRC_EDC, _grid_item_selected_cb);
+}
+
+static void _grid_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
+ Evas_Event_Key_Down *ev)
+{
+ struct _priv *priv;
+
+ if (!data || !ev) {
+ _ERR("Invalid argument.");
+ return;
+ }
+ priv = data;
+
+ if (!strcmp(ev->keyname, KEY_BACK))
+ elm_object_focus_set(priv->menu[priv->cur_menu_id], EINA_TRUE);
}
static input_handler _menu_input_handler = {
/* It will be implemented later. */
};
+static input_handler _grid_input_handler = {
+ .focused = _grid_focused_cb,
+ .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)
{
Evas_Object *btn;
return false;
}
+ inputmgr_add_callback(grid, id, &_grid_input_handler, priv);
+
gdata->grid = grid;
return true;