summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/edc/widgets/gengrid.edc69
-rw-r--r--src/util/listmgr.c106
2 files changed, 51 insertions, 124 deletions
diff --git a/res/edc/widgets/gengrid.edc b/res/edc/widgets/gengrid.edc
index 12372b4..31e5db4 100644
--- a/res/edc/widgets/gengrid.edc
+++ b/res/edc/widgets/gengrid.edc
@@ -95,7 +95,6 @@ group {
name: PART_ELM_SWALLOW_THUMBNAIL;
type: SWALLOW;
scale: 1;
- mouse_events: 1;
description {
state : "default" 0.0;
rel1.to: "defaultbg";
@@ -328,7 +327,6 @@ group {
part {
name: "elm.bg.text";
type: RECT;
- mouse_events: 0;
scale: 1;
description {
state: "default" 0.0;
@@ -487,26 +485,6 @@ group {
target: "part_focus3";
target: "elm.bg.text";
}
- program {
- name: "selected";
- signal: "elm,state,selected";
- source: "elm";
- action: STATE_SET "selected" 0.0;
- target: "map";
- transition: TRANSITION_CLICK;
- after: "after_selected";
- }
- program {
- name: "after_selected";
- action: STATE_SET "default" 0.0;
- target: "map";
- transition: TRANSITION_CLICK;
- after: "item_selected";
- }
- program {
- name: "item_selected";
- action: SIGNAL_EMIT SIG_ITEM_SELECTED SIG_SOURCE_EDC;
- }
}
}
@@ -568,7 +546,6 @@ group {
name: "defaultbg";
scale: 1;
type: RECT;
- mouse_events: 1;
description {
state : "default" 0.0;
rel1.to: "bg";
@@ -589,7 +566,6 @@ group {
name: "default_image";
scale: 1;
type: IMAGE;
- mouse_events: 1;
description {
state: "default" 0.0;
rel1 {
@@ -618,7 +594,6 @@ group {
name: PART_ELM_SWALLOW_THUMBNAIL;
scale: 1;
type: SWALLOW;
- mouse_events: 1;
description {
state : "default" 0.0;
rel1.to: "defaultbg";
@@ -957,26 +932,6 @@ group {
target: "part_focus4";
target: PART_ELM_TEXT_PLAYTIME;
}
- program {
- name: "selected";
- signal: "elm,state,selected";
- source: "elm";
- action: STATE_SET "selected" 0.0;
- target: "map";
- transition: TRANSITION_CLICK;
- after: "after_selected";
- }
- program {
- name: "after_selected";
- action: STATE_SET "default" 0.0;
- target: "map";
- transition: TRANSITION_CLICK;
- after: "item_selected";
- }
- program {
- name: "item_selected";
- action: SIGNAL_EMIT SIG_ITEM_SELECTED SIG_SOURCE_EDC;
- }
}
}
@@ -1038,7 +993,6 @@ group {
name: "defaultbg";
type: RECT;
scale: 1;
- mouse_events: 1;
description {
state: "default" 0.0;
rel1.to: "bg";
@@ -1062,7 +1016,6 @@ group {
name: "default_image";
type: IMAGE;
scale: 1;
- mouse_events: 1;
description {
state: "default" 0.0;
rel1 {
@@ -1091,7 +1044,6 @@ group {
name: PART_ELM_SWALLOW_THUMBNAIL;
type: SWALLOW;
scale: 1;
- mouse_events: 1;
description {
state : "default" 0.0;
rel1.to: "defaultbg";
@@ -1249,7 +1201,6 @@ group {
part {
name: "elm.bg.text";
type: RECT;
- mouse_events: 0;
scale: 1;
description {
state: "default" 0.0;
@@ -1650,25 +1601,5 @@ group {
target: "part_focus3";
target: "elm.bg.text";
}
- program {
- name: "selected";
- signal: "elm,state,selected";
- source: "elm";
- action: STATE_SET "selected" 0.0;
- target: "map";
- transition: TRANSITION_CLICK;
- after: "after_selected";
- }
- program {
- name: "after_selected";
- action: STATE_SET "default" 0.0;
- target: "map";
- transition: TRANSITION_CLICK;
- after: "item_selected";
- }
- program {
- name: "item_selected";
- action: SIGNAL_EMIT SIG_ITEM_SELECTED SIG_SOURCE_EDC;
- }
}
}
diff --git a/src/util/listmgr.c b/src/util/listmgr.c
index 5ae2f61..84eb251 100644
--- a/src/util/listmgr.c
+++ b/src/util/listmgr.c
@@ -44,6 +44,8 @@ struct listmgr {
Evas_Object *play_info;
Evas_Object *focused;
+ Elm_Object_Item *selected_it;
+
struct gridmgr *gmgr;
struct listmgr_data *data;
@@ -145,106 +147,100 @@ static void _clicked_cb(int id, void *data, Evas_Object *obj)
}
}
-static void _play_info_selected_cb(void *data, Evas_Object *obj,
- const char *emission, const char *source)
+static void _focused_cb(int id, void *data, Evas_Object *obj,
+ Elm_Object_Item *it)
{
+ Evas_Object *btn;
struct listmgr *lmgr;
- struct play_info_ops *pops;
if (!data || !obj)
return;
lmgr = data;
- pops = lmgr->data->pops;
- if (pops->selected_cb)
- pops->selected_cb(pops->ops_data, obj);
+ switch (id) {
+ case LISTMGR_SCROLLER:
+ if (!lmgr->scr_focus)
+ break;
+
+ btn = elm_object_part_content_get(lmgr->focused,
+ PART_ITEM_TITLE);
+ if (!btn) {
+ _ERR("failed to get button object");
+ return;
+ }
+
+ elm_object_focus_set(btn, EINA_TRUE);
+
+ break;
+ case LISTMGR_INDEX:
+ case LISTMGR_PLAY_INFO:
+ case LISTMGR_GRID:
+ lmgr->focused = elm_object_parent_widget_get(obj);
+ lmgr->scr_focus = EINA_TRUE;
+
+ elm_object_signal_emit(lmgr->data->menu_btn, SIG_BTN_SELECTED,
+ SIG_SOURCE_SRC);
+ break;
+ default:
+ break;
+ }
}
-static void _grid_selected_cb(void *data, Elm_Object_Item *it,
- const char *emission, const char *source)
+static void _grid_selected(void *data)
{
struct listmgr *lmgr;
struct grid_ops *gops;
- if (!data || !it)
+ if (!data) {
+ _ERR("invalid argument");
return;
+ }
lmgr = data;
+
gops = lmgr->data->gops;
if (gops->selected_cb)
- gops->selected_cb(gops->ops_data, it);
-
- elm_gengrid_item_selected_set(it, EINA_FALSE);
+ gops->selected_cb(gops->ops_data, lmgr->selected_it);
}
-static void _grid_realized_cb(int id, void *data, Evas_Object *obj,
+static void _grid_selected_cb(int id, void *data, Evas_Object *obj,
Elm_Object_Item *it)
{
+ struct listmgr *lmgr;
+
if (!data || !it)
return;
- elm_object_item_signal_callback_add(it, SIG_ITEM_SELECTED,
- SIG_SOURCE_EDC, _grid_selected_cb, data);
-}
+ lmgr = data;
-static void _grid_unrealized_cb(int id, void *data, Evas_Object *obj,
- Elm_Object_Item *it)
-{
- if (!it)
- return;
+ lmgr->selected_it = it;
- elm_object_item_signal_callback_del(it, SIG_ITEM_SELECTED,
- SIG_SOURCE_EDC, _grid_selected_cb);
+ ecore_job_add(_grid_selected, lmgr);
}
-static void _focused_cb(int id, void *data, Evas_Object *obj,
- Elm_Object_Item *it)
+static void _play_info_selected_cb(void *data, Evas_Object *obj,
+ const char *emission, const char *source)
{
- Evas_Object *btn;
struct listmgr *lmgr;
+ struct play_info_ops *pops;
if (!data || !obj)
return;
lmgr = data;
+ pops = lmgr->data->pops;
- switch (id) {
- case LISTMGR_SCROLLER:
- if (!lmgr->scr_focus)
- break;
-
- btn = elm_object_part_content_get(lmgr->focused,
- PART_ITEM_TITLE);
- if (!btn) {
- _ERR("failed to get button object");
- return;
- }
-
- elm_object_focus_set(btn, EINA_TRUE);
-
- break;
- case LISTMGR_INDEX:
- case LISTMGR_PLAY_INFO:
- case LISTMGR_GRID:
- lmgr->focused = elm_object_parent_widget_get(obj);
- lmgr->scr_focus = EINA_TRUE;
-
- elm_object_signal_emit(lmgr->data->menu_btn, SIG_BTN_SELECTED,
- SIG_SOURCE_SRC);
- break;
- default:
- break;
- }
+ if (pops->selected_cb)
+ pops->selected_cb(pops->ops_data, obj);
}
static input_handler _grid_handler = {
.key_down = _key_down_cb,
.mouse_move = _mouse_move_cb,
.focused = _focused_cb,
- .realized = _grid_realized_cb,
- .unrealized = _grid_unrealized_cb
+ .selected = _grid_selected_cb
};
static input_handler _handler = {