void (*selected)(void *data, int id);
};
-struct menumgr *menumgr_create(Evas_Object *table, Evas_Object **first_menu_option,
+struct menumgr *menumgr_create(Evas_Object *table, Evas_Object *tab_menu_btn,
struct menumgr_info *info, int len, void *data);
void menumgr_destroy(struct menumgr *m);
*/
#include <Elementary.h>
+#include <stdbool.h>
#include "common/viewmgr.h"
#include "common/inputmgr.h"
}
}
-struct menumgr *menumgr_create(Evas_Object *table, Evas_Object **first_menu_option,
+struct menumgr *menumgr_create(Evas_Object *table, Evas_Object *tab_menu_btn,
struct menumgr_info *info, int len, void *data)
{
SETTING_TRACE_BEGIN;
struct menumgr *m = NULL;
Evas_Object *btn = NULL;
+ Evas_Object *last_enabled_btn = NULL;
int i = 0;
int col = 0;
int row = 0;
+ bool first_option_set = false;
m = calloc(1, sizeof(struct menumgr));
if (!m) {
return NULL;
}
+ if (len > MAX_BTN) {
+ _ERR("Number of buttons exceed maximum allowed");
+ len = MAX_BTN;
+ }
m->data = data;
m->len = len;
return NULL;
}
- if (i == 0 && first_menu_option)
- *first_menu_option = btn;
-
+ if (info[i].disabled == EINA_FALSE) {
+ if (!first_option_set && tab_menu_btn) {
+ elm_object_focus_next_object_set(tab_menu_btn, btn, ELM_FOCUS_DOWN);
+ elm_object_focus_next_object_set(btn, tab_menu_btn, ELM_FOCUS_UP);
+ first_option_set = true;
+ } else if (i < MAX_BTN_COL && tab_menu_btn)
+ elm_object_focus_next_object_set(btn, tab_menu_btn, ELM_FOCUS_UP);
+ if (last_enabled_btn) {
+ elm_object_focus_next_object_set(btn, last_enabled_btn, ELM_FOCUS_LEFT);
+ elm_object_focus_next_object_set(last_enabled_btn, btn, ELM_FOCUS_RIGHT);
+ }
+ last_enabled_btn = btn;
+ }
elm_object_disabled_set(btn, info[i].disabled);
evas_object_size_hint_align_set(btn, 0, 0);
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 bool _add_layout_contents(struct _priv *priv)
+static bool _add_layout_contents(struct _priv *priv, Evas_Object *tab_button)
{
SETTING_TRACE_BEGIN;
Evas_Object *table = NULL;
elm_object_part_content_set(priv->ly, PART_PICTURE, table);
- priv->menu = menumgr_create(table, &priv->first_menu_option, menu_info,
+ priv->menu = menumgr_create(table, tab_button, menu_info,
ARRAY_SIZE(menu_info), priv);
if (!priv->menu) {
_ERR("failed to create menu manager");
SETTING_TRACE_BEGIN;
struct _priv *priv = NULL;
- Evas_Object *tab_button_evas = (Evas_Object *)tab_button;
if (!lmgr) {
_ERR("Invalid argument.");
priv->lmgr = lmgr;
- if (!_add_layout_contents(priv)) {
+ if (!_add_layout_contents(priv, (Evas_Object *)tab_button)) {
_ERR("Add layout contents failed.");
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;
Evas_Object *ly;
Evas_Object *table;
layoutmgr *lmgr;
- Evas_Object *first_menu_option;
struct menumgr *menu;
};
_ERR("viewmgr_show_view failed.");
}
-static bool _add_layout_contents(struct _priv *priv)
+static bool _add_layout_contents(struct _priv *priv, Evas_Object *tab_button)
{
Evas_Object *table = NULL;
struct menumgr *menu = NULL;
elm_object_part_content_set(priv->ly, PART_SYSTEM, table);
- menu = menumgr_create(table, &priv->first_menu_option, menu_info, ARRAY_SIZE(menu_info), priv);
+ menu = menumgr_create(table, tab_button, menu_info, ARRAY_SIZE(menu_info), priv);
if (!menu) {
_ERR("failed to create menu manager");
evas_object_del(table);
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.");
priv->base = base;
priv->ly = ly;
- if (!_add_layout_contents(priv)) {
+ if (!_add_layout_contents(priv, (Evas_Object *)tab_button)) {
_ERR("Add layout contents failed.");
evas_object_del(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_SYSTEM, priv);
return true;