target: "item_bg";
target: "item_name";
target: "item_type";
+ after: "item_focused";
+ }
+ program {
+ name: "item_focused";
+ action: SIGNAL_EMIT "item_focused" "edc";
}
program {
name: "go_passive";
#define __PLUGGED_LAYOUT_H__
class CPluggedLayout : public CBaseLayout, CListenerMgr,
- IKeyDownListener, IMouseMoveListener, IFocusedListener {
+ IKeyDownListener, IMouseMoveListener,
+ IRealizedListener, IUnrealizedListener, IFocusedListener {
private:
struct SPluggedLayout *m;
static Eina_Bool sm_CbTimerDelItem(void *data);
void m_TimerDelItem(void);
+ static void sm_CbGridItemFocused(void *cookie, Elm_Object_Item *it,
+ const char *emission, const char *source);
+ void m_OnGridItemFocused(Elm_Object_Item *it,
+ const char *emission, const char *source);
+
Evas_Object *m_DrawGengrid(Evas_Object *layout);
void m_DrawNoContentArea(void);
void m_DrawContentArea(void);
public:
CPluggedLayout(const char *pLayoutId) : CBaseLayout(pLayoutId),
IKeyDownListener(this), IMouseMoveListener(this),
+ IRealizedListener(this), IUnrealizedListener(this),
IFocusedListener(this), m(0) {}
virtual ~CPluggedLayout() {}
bool Create(CLayoutMgr *mgr, void *data);
virtual void Destroy(void);
+ void Focus(void);
void Update(void *data, enum update_ui type);
public:
void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev);
void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev);
+ void OnRealized(int id, Evas_Object *obj, Elm_Object_Item *item);
+ void OnUnrealized(int id, Evas_Object *obj, Elm_Object_Item *item);
void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item);
};
if (!strcmp(ev->keyname, KEY_BACK)
|| !strcmp(ev->keyname, KEY_BACK_REMOTE))
app_efl_exit();
+ else if (!strcmp(ev->keyname, KEY_ENTER)
+ || !strcmp(ev->keyname, KEY_ENTER_REMOTE))
+ m->pPluggedLayout->Focus();
+ break;
default:
break;
}
if (!grid)
return NULL;
- Connect(grid, PLUGGED_GRID, TYPE_KEY_DOWN | TYPE_MOUSE_MOVE | TYPE_FOCUSED);
+ Connect(grid, PLUGGED_GRID, TYPE_KEY_DOWN | TYPE_MOUSE_MOVE
+ | TYPE_REALIZED | TYPE_UNREALIZED | TYPE_FOCUSED);
return grid;
}
m->del_it = NULL;
}
+void CPluggedLayout::sm_CbGridItemFocused(void *cookie, Elm_Object_Item *it,
+ const char *emission, const char *source)
+{
+ CPluggedLayout *root = (CPluggedLayout *)cookie;
+
+ if (root)
+ root->m_OnGridItemFocused(it, emission, source);
+}
+
+void CPluggedLayout::m_OnGridItemFocused(Elm_Object_Item *it,
+ const char *emission, const char *source)
+{
+ if (!it)
+ return;
+
+ m->focus_it = (Elm_Object_Item *)it;
+}
+
+void CPluggedLayout::Focus(void)
+{
+ ASSERT(m);
+
+ elm_object_focus_set(m->grid, EINA_TRUE);
+ elm_object_item_focus_set(m->focus_it, EINA_TRUE);
+}
+
void CPluggedLayout::Update(void *data, enum update_ui type)
{
ASSERT(m);
}
}
-void CPluggedLayout::OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
+void CPluggedLayout::OnRealized(int id, Evas_Object *obj, Elm_Object_Item *item)
{
switch (id) {
case PLUGGED_GRID:
- m->focus_it = (Elm_Object_Item *)item;
+ elm_object_item_signal_callback_add(item, "item_focused",
+ "edc", sm_CbGridItemFocused, this);
+ break;
+ default:
+ break;
+ }
+}
+
+void CPluggedLayout::OnUnrealized(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case PLUGGED_GRID:
+ elm_object_item_signal_callback_del(item, "item_focused",
+ "edc", sm_CbGridItemFocused);
+ break;
+ default:
+ break;
+ }
+}
+void CPluggedLayout::OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case PLUGGED_GRID:
m->SigCb->cb(m->SigCb->cookie, E_HIGHLIGHT);
break;