programs{
program {
+ name, "load";
+ signal, "load";
+ source, "";
+ script {
+ set_int(cur_state, STATE_NORMAL);
+ }
+ }
+
+ program {
name, SIG_FOCUSED;
signal, "elm,action,focus";
source, "elm";
script {
set_int(cur_state, STATE_NORMAL);
+ set_state(PART:"part.bottom.line", "focused", 0.0);
run_program(PROGRAM:"focused,anim");
}
}
program {
+ name, "focused,anim";
+ action, STATE_SET "focused" 0.0;
+ target, "part.bg";
+ target, "part.bg.left";
+ target, "part.bg.right";
+ target, "elm.text";
+ transition, TRANSITION_FOCUS;
+ }
+
+ program {
name, SIG_UNFOCUSED;
signal, "elm,action,unfocus";
source, "elm";
script {
new state;
state = get_int(cur_state);
+ set_int(cur_state, STATE_NORMAL);
if (state == STATE_SELECTED) {
- set_state(PART:"part.bg", "selected", 0.0);
- set_state(PART:"part.bg.left", "selected", 0.0);
- set_state(PART:"part.bg.right", "selected", 0.0);
- set_state(PART:"elm.text", "selected", 0.0);
set_state(PART:"part.bottom.line", "selected", 0.0);
+ run_program(PROGRAM:"unfocused,sel,anim");
} else {
- run_program(PROGRAM:"unfocused,anim");
+ set_state(PART:"part.bottom.line", "default", 0.0);
+ run_program(PROGRAM:"unfocused,foc,anim");
}
}
}
program {
- name, "focused,anim";
- action, STATE_SET "focused" 0.0;
+ name, "unfocused,sel,anim";
+ action, STATE_SET "selected" 0.0;
target, "part.bg";
target, "part.bg.left";
target, "part.bg.right";
target, "elm.text";
- target, "part.bottom.line";
transition, TRANSITION_FOCUS;
}
program {
- name, "unfocused,anim";
+ name, "unfocused,foc,anim";
action, STATE_SET "default" 0.0;
target, "part.bg";
target, "part.bg.left";
target, "part.bg.right";
target, "elm.text";
- target, "part.bottom.line";
transition, TRANSITION_FOCUS;
}
program {
name, SIG_SELECTED;
- signal, "selected";
- source, "";
+ signal, SIG_SELECTED;
+ source, SRC_MENU_BTN;
script {
set_int(cur_state, STATE_SELECTED);
- set_state(PART:"part.bg", "selected", 0.0);
- set_state(PART:"elm.text", "selected", 0.0);
- set_state(PART:"part.bg.left", "selected", 0.0);
- set_state(PART:"part.bg.right", "selected", 0.0);
set_state(PART:"part.bottom.line", "selected", 0.0);
+ run_program(PROGRAM:"selected,anim");
+ }
+ }
+
+ program {
+ name, "selected,anim";
+ action, STATE_SET "selected" 0.0;
+ target, "part.bg";
+ target, "part.bg.left";
+ target, "part.bg.right";
+ target, "elm.text";
+ transition, TRANSITION_FOCUS;
+ }
+
+ program {
+ name, SIG_UNSELECTED;
+ signal, SIG_UNSELECTED;
+ source, SRC_MENU_BTN;
+ script {
+ set_int(cur_state, STATE_NORMAL);
+ set_state(PART:"part.bottom.line", "default", 0.0);
+ run_program(PROGRAM:"unselected,anim");
}
}
+
+ program {
+ name, "unselected,anim";
+ action, STATE_SET "default" 0.0;
+ target, "part.bg";
+ target, "part.bg.left";
+ target, "part.bg.right";
+ target, "elm.text";
+ transition, TRANSITION_FOCUS;
+ }
}
}
return true;
}
+static void _mouse_move_cb(int id, void *data, Evas *e, Evas_Object *obj,
+ Evas_Event_Mouse_Move *ev)
+{
+ if (!obj) {
+ _ERR("Invalid argument.");
+ return;
+ }
+
+ if (!elm_object_focus_get(obj))
+ elm_object_focus_set(obj ,EINA_TRUE);
+}
+
static void _menu_clicked_cb(int id, void *data, Evas_Object *obj)
{
/* It will be implemented later. */
Elm_Object_Item *item)
{
struct _priv *priv;
+ int pre_menu_id;
if (!data || !obj ) {
_ERR("Invalid argument.");
}
priv = data;
- if (priv->cur_menu_id == id)
+ pre_menu_id = priv->cur_menu_id;
+
+ if (pre_menu_id == id)
return;
+ if (priv->menu[pre_menu_id])
+ elm_object_signal_emit(priv->menu[pre_menu_id],
+ SIG_UNSELECTED, SRC_MENU_BTN);
+
priv->cur_menu_id = id;
if (!_load_current_grid(priv, id))
}
}
+static void _grid_mouse_move_cb(int id, void *data, Evas *e, Evas_Object *obj,
+ Evas_Event_Mouse_Move *ev)
+{
+ Elm_Object_Item *it;
+
+ if (!obj || !ev) {
+ _ERR("Invalid argument.");
+ return;
+ }
+
+ it = elm_gengrid_at_xy_item_get(obj, ev->cur.canvas.x,
+ ev->cur.canvas.y, NULL, NULL);
+
+ if (!it)
+ return;
+
+ if (!elm_object_item_focus_get(it))
+ elm_object_item_focus_set(it, EINA_TRUE);
+}
+
static void _grid_focused_cb(int id, void *data, Evas_Object *obj,
Elm_Object_Item *item)
{
}
priv = data;
- elm_object_signal_emit(priv->menu[priv->cur_menu_id], SIG_SELECTED, "");
+ elm_object_signal_emit(priv->menu[priv->cur_menu_id],
+ SIG_SELECTED, SRC_MENU_BTN);
}
static void _grid_item_selected_cb(void *data, Elm_Object_Item *it,
}
static input_handler _menu_input_handler = {
+ .mouse_move = _mouse_move_cb,
.clicked = _menu_clicked_cb,
.focused = _menu_focused_cb,
.key_down = _menu_key_down_cb
};
static input_handler _grid_input_handler = {
+ .mouse_move = _grid_mouse_move_cb,
.focused = _grid_focused_cb,
.realized = _grid_realized_cb,
.unrealized = _grid_unrealized_cb,