bool layoutmgr_set_layout_data(layoutmgr *lmgr, const char *layout_id,
void *layout_data);
+
#endif
void (*selected)(void *data, int id);
};
-struct menumgr *menumgr_create(Evas_Object *table,
+struct menumgr *menumgr_create(Evas_Object *table, Evas_Object **first_menu_option,
struct menumgr_info *info, int len, void *data);
void menumgr_destroy(struct menumgr *m);
{
if (!lmgr) {
_ERR("Layout manager didn't initialized.");
- return false;
+ return NULL;
}
return lmgr->base;
}
}
-struct menumgr *menumgr_create(Evas_Object *table,
+struct menumgr *menumgr_create(Evas_Object *table, Evas_Object **first_menu_option,
struct menumgr_info *info, int len, void *data)
{
SETTING_TRACE_BEGIN;
struct menumgr *m = NULL;
Evas_Object *btn = NULL;
- int i;
- int col, row;
+ int i = 0;
+ int col = 0;
+ int row = 0;
- m = calloc(1, sizeof(*m));
+ m = calloc(1, sizeof(struct menumgr));
if (!m) {
_ERR("Calloc failed.");
return NULL;
return NULL;
}
+ if (i == 0 && first_menu_option)
+ *first_menu_option = btn;
+
elm_object_disabled_set(btn, info[i].disabled);
evas_object_size_hint_align_set(btn, 0, 0);
#define PADDING_X 26
#define PADDING_Y 26
-#define SCREEN_DEFAULT "16:9"
-
struct _priv {
Evas_Object *base;
Evas_Object *ly;
Evas_Object *table;
+ Evas_Object *first_menu_option;
layoutmgr *lmgr;
struct menumgr *menu;
};
static char *_get_tint(void *data, int id);
static char *_get_screen_adj(void *data, int id);
static void _selected(void *data, int id);
+static bool _add_layout_contents(struct _priv *priv);
+
+/* Class functions: */
+static bool _create(layoutmgr *lmgr, void *data);
+static void _show(void *layout_data);
+static void _hide(void *layout_data);
+static void _destroy(void *layout_data);
+static void _update(void *layout_data, int update_type, void *data);
static struct menumgr_info menu_info[] = {
{
},
};
+static layout_class _lclass = {
+ .layout_id = LAYOUT_ID_PICTURE,
+ .create = _create,
+ .show = _show,
+ .hide = _hide,
+ .destroy = _destroy,
+ .update = _update
+};
+
+layout_class *layout_picture_get_lclass(void)
+{
+ SETTING_TRACE_BEGIN;
+ return &_lclass;
+}
+
static char *_get_picture_mode(void *data, int id)
{
if(settings_picture_get_picture_mode() == PICTURE_MODE_STANDARD) {
static char *_get_screen_adj(void *data, int id)
{
SETTING_TRACE_BEGIN;
- return strdup(SCREEN_DEFAULT);
+ return NULL;
}
static void _selected(void *data, int id)
{
SETTING_TRACE_BEGIN;
Evas_Object *table = NULL;
- struct menumgr *menu = NULL;
if (!priv) {
_ERR("Invalid argument");
elm_object_part_content_set(priv->ly, PART_PICTURE, table);
- menu = menumgr_create(table, menu_info, ARRAY_SIZE(menu_info), priv);
- if (!menu) {
+ priv->menu = menumgr_create(table, &priv->first_menu_option, menu_info,
+ ARRAY_SIZE(menu_info), priv);
+ if (!priv->menu) {
_ERR("failed to create menu manager");
evas_object_del(table);
return false;
}
- priv->menu = menu;
-
return true;
}
-static bool _create(layoutmgr *lmgr, void *data)
+static bool _create(layoutmgr *lmgr, void *tab_button)
{
SETTING_TRACE_BEGIN;
+
struct _priv *priv = NULL;
- Evas_Object *base = NULL;
- Evas_Object *ly = NULL;
+ Evas_Object *tab_button_evas = (Evas_Object *)tab_button;
if (!lmgr) {
_ERR("Invalid argument.");
return false;
}
- base = layoutmgr_get_base(lmgr);
- if (!base) {
- _ERR("Get base layout failed.");
+ priv = calloc(1, sizeof(*priv));
+ if (!priv) {
+ _ERR("Calloc failed.");
return false;
}
- ly = utils_add_layout(base, GRP_LAYOUT_PICTURE, EINA_FALSE);
- if (!ly) {
- _ERR("Add layout failed.");
+ priv->base = layoutmgr_get_base(lmgr);
+ if (!priv->base) {
+ _ERR("Get base layout failed.");
+ free(priv);
return false;
}
- priv = calloc(1, sizeof(*priv));
- if (!priv) {
- _ERR("Calloc failed.");
- evas_object_del(ly);
+ priv->ly = utils_add_layout(priv->base, GRP_LAYOUT_PICTURE, EINA_FALSE);
+ if (!priv->ly) {
+ _ERR("Add layout failed.");
+ free(priv);
return false;
}
priv->lmgr = lmgr;
- priv->base = base;
- priv->ly = ly;
if (!_add_layout_contents(priv)) {
_ERR("Add layout contents failed.");
- evas_object_del(ly);
+ evas_object_del(priv->ly);
free(priv);
return false;
}
-
+ elm_object_focus_next_object_set(tab_button_evas, priv->first_menu_option, ELM_FOCUS_DOWN);
layoutmgr_set_layout_data(lmgr, LAYOUT_ID_PICTURE, priv);
-
+ SETTING_TRACE_END;
return true;
}
elm_object_part_content_unset(priv->base, PART_CONTENT);
}
-static void _update(void *layout_data, int update_type, void *data)
+static void _destroy(void *layout_data)
{
SETTING_TRACE_BEGIN;
struct _priv *priv = NULL;
}
priv = layout_data;
+ menumgr_destroy(priv->menu);
- menumgr_update(priv->menu);
+ evas_object_del(priv->ly);
+ free(priv);
}
-static void _destroy(void *layout_data)
+static void _update(void *layout_data, int update_type, void *data)
{
SETTING_TRACE_BEGIN;
struct _priv *priv = NULL;
}
priv = layout_data;
-
- menumgr_destroy(priv->menu);
-
- evas_object_del(priv->ly);
-
- free(priv);
+ menumgr_update(priv->menu);
}
-static layout_class _lclass = {
- .layout_id = LAYOUT_ID_PICTURE,
- .create = _create,
- .show = _show,
- .hide = _hide,
- .destroy = _destroy,
- .update = _update
-};
-
-layout_class *layout_picture_get_lclass(void)
-{
- SETTING_TRACE_BEGIN;
- return &_lclass;
-}
elm_object_part_content_set(priv->ly, PART_SUPPORT, table);
- menu = menumgr_create(table, menu_info, ARRAY_SIZE(menu_info), priv);
+ menu = menumgr_create(table, NULL, menu_info, ARRAY_SIZE(menu_info), priv);
if (!menu) {
_ERR("failed to create menu manager");
evas_object_del(table);
Evas_Object *ly;
Evas_Object *table;
layoutmgr *lmgr;
+ Evas_Object *first_menu_option;
struct menumgr *menu;
};
elm_object_part_content_set(priv->ly, PART_SYSTEM, table);
- menu = menumgr_create(table, menu_info, ARRAY_SIZE(menu_info), priv);
+ menu = menumgr_create(table, &priv->first_menu_option, menu_info, ARRAY_SIZE(menu_info), priv);
if (!menu) {
_ERR("failed to create menu manager");
evas_object_del(table);
return true;
}
-static bool _create(layoutmgr *lmgr, void *data)
+static bool _create(layoutmgr *lmgr, void *tab_button)
{
struct _priv *priv = NULL;
Evas_Object *base = NULL;
Evas_Object *ly = NULL;
+ Evas_Object *tab_button_evas = (Evas_Object *)tab_button;
if (!lmgr) {
_ERR("Invalid argument.");
free(priv);
return false;
}
-
+ elm_object_focus_next_object_set(tab_button_evas, priv->first_menu_option, ELM_FOCUS_DOWN);
layoutmgr_set_layout_data(lmgr, LAYOUT_ID_SYSTEM, priv);
return true;
elm_object_part_content_set(priv->ly, PART_VOICE, table);
- menu = menumgr_create(table, menu_info, ARRAY_SIZE(menu_info), priv);
+ menu = menumgr_create(table, NULL, menu_info, ARRAY_SIZE(menu_info), priv);
if (!menu) {
_ERR("failed to create menu manager");
evas_object_del(table);
static void _menu_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
Evas_Event_Key_Down *ev)
{
- if (!obj || !ev) {
+ struct _priv *priv = (struct _priv *)data;
+
+ if (!obj || !ev || !priv) {
_ERR("Invalid argument.");
return;
}
static Evas_Object *_create(Evas_Object *win, void *data)
{
- struct _priv *priv;
- Evas_Object *base;
- layoutmgr *lmgr;
- int i;
+ struct _priv *priv = NULL;
+ int i = 0;
if (!win) {
_ERR("Get window object failed.");
return NULL;
}
- priv = calloc(1, sizeof(*priv));
+ priv = calloc(1, sizeof(struct _priv));
if (!priv) {
_ERR("Calloc failed.");
return NULL;
}
- base = utils_add_layout(win, GRP_VIEW_BASE, EINA_TRUE);
- if (!base) {
+ priv->base = utils_add_layout(win, GRP_VIEW_BASE, EINA_TRUE);
+ if (!priv->base) {
_ERR("Add layout failed.");
free(priv);
return NULL;
}
- lmgr = layoutmgr_create(base);
- if (!lmgr) {
+ priv->lmgr = layoutmgr_create(priv->base);
+ if (!priv->lmgr) {
_ERR("Create layoutmgr failed.");
- evas_object_del(base);
+ evas_object_del(priv->base);
+ free(priv);
+ return NULL;
+ }
+
+ if (!_draw_menu_area(priv)) {
+ _ERR("Create menu area failed.");
+ evas_object_del(priv->base);
free(priv);
return NULL;
}
for (i = 0; i < LAYOUT_MAX; i++)
- layoutmgr_add_layout(lmgr, _mdata[i].get_lclass(), NULL);
+ layoutmgr_add_layout(priv->lmgr, _mdata[i].get_lclass(), priv->menu[i]);
priv->win = win;
- priv->base = base;
- priv->lmgr = lmgr;
priv->cur_menu = LAYOUT_MAX;
if (!viewmgr_set_view_data(VIEW_BASE, priv)) {
_ERR("Set view data failed.");
- evas_object_del(base);
+ evas_object_del(priv->base);
free(priv);
return NULL;
}
- _draw_menu_area(priv);
-
- return base;
+ return priv->base;
}
static void _show(void *data)