#define MENU_VIEW "MENU_VIEW"
-class CMenuView : public CBaseView {
+class CMenuView : public CBaseView, CListenerMgr,
+ IKeyDownListener, IMouseDownListener, IMouseMoveListener {
private:
struct SMenuView* m;
+private:
+ Evas_Object *m_AddLayout(Evas_Object *win);
+ Evas_Object *m_AddBtn(Evas_Object *parent, const char *part,
+ const char *style, const char *str);
+ Evas_Object *m_AddBtnByIndex(unsigned int row, unsigned int col);
+ bool m_AddUsbMenuBtn(void);
+ bool m_AddExternalMenuBtn(void);
+ bool m_AddMenuBtn(void);
+ bool m_AddFocusItem(void);
+
public:
- CMenuView(const char *szViewId) : CBaseView(szViewId), m(0) {}
+ CMenuView(const char *szViewId) : CBaseView(szViewId),
+ IKeyDownListener(this), IMouseDownListener(this),
+ IMouseMoveListener(this), m(0) {}
+
virtual ~CMenuView() {}
virtual Evas_Object *Base(void);
virtual bool Create(void *data);
virtual void Destroy(void);
+
+public:
+ void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev);
+ void OnMouseDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Down *ev);
+ void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev);
};
#ifndef __NEARBY_LAYOUT_H__
#define __NEARBY_LAYOUT_H__
-class CNearbyLayout : public CBaseLayout {
+class CNearbyLayout : public CBaseLayout, CListenerMgr,
+ IKeyDownListener, IMouseMoveListener, IFocusedListener {
+
private:
struct SNearbyLayout *m;
virtual void t_OnHide(void);
private:
- static void sm_CbGridMouseMove(void *data,
- Evas *e, Evas_Object *obj, void *ev_info);
- static void sm_CbGridKeyDown(void *data,
- Evas *e, Evas_Object *obj, void *ev_info);
- static void sm_CbGridFocused(void *data,
- Evas_Object *obj, void *ev_info);
- static void sm_CbBtnKeyDown(void *data, Evas *e, Evas_Object *obj, void *ev_info);
- static void sm_CbBtnFocused(void *data, Evas_Object *obj, void *ev_info);
-
static Eina_Bool sm_CbTimerDelItem(void *data);
void m_TimerDelItem(void);
Evas_Object *m_DrawGengrid(Evas_Object *layout);
public:
- CNearbyLayout(const char *pLayoutId) : CBaseLayout(pLayoutId), m(0) {}
+ CNearbyLayout(const char *pLayoutId) : CBaseLayout(pLayoutId),
+ IKeyDownListener(this), IMouseMoveListener(this),
+ IFocusedListener(this), m(0) {}
+
~CNearbyLayout() {}
bool Create(CLayoutMgr *mgr, void *data);
virtual void Destroy(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 OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item);
};
#endif /* __NEARBY_LAYOUT_H__ */
#ifndef __PLUGGED_LAYOUT_H__
#define __PLUGGED_LAYOUT_H__
-class CPluggedLayout : public CBaseLayout {
+class CPluggedLayout : public CBaseLayout, CListenerMgr,
+ IKeyDownListener, IMouseMoveListener, IFocusedListener {
+
private:
struct SPluggedLayout *m;
virtual void t_OnHide(void);
private:
- static void sm_CbGridMouseMove(void *data,
- Evas *e, Evas_Object *obj, void *ev_info);
- static void sm_CbGridKeyDown(void *data,
- Evas *e, Evas_Object *obj, void *ev_info);
- static void sm_CbGridFocused(void *data,
- Evas_Object *obj, void *ev_info);
-
static Eina_Bool sm_CbTimerDelItem(void *data);
void m_TimerDelItem(void);
void m_DrawContentArea(void);
public:
- CPluggedLayout(const char *pLayoutId) : CBaseLayout(pLayoutId), m(0) {}
+ CPluggedLayout(const char *pLayoutId) : CBaseLayout(pLayoutId),
+ IKeyDownListener(this), IMouseMoveListener(this),
+ IFocusedListener(this), m(0) {}
+
virtual ~CPluggedLayout() {}
bool Create(CLayoutMgr *mgr, void *data);
virtual void Destroy(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 OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item);
};
#endif /* __PLUGGED_LAYOUT_H__ */
#include "BaseApp.h"
#include "BaseLayout.h"
#include "LayoutMgr.h"
+#include "InputHandler.h"
#include "allsource_view.h"
#include "menu_view.h"
#include "ViewMgr.h"
#include "BaseLayout.h"
#include "LayoutMgr.h"
+#include "InputHandler.h"
#include "source_mgr.h"
#include "util.h"
#include "def.h"
#include "AppCommon.h"
#include "BaseView.h"
#include "ViewMgr.h"
+#include "InputHandler.h"
#include "source_mgr.h"
#include "util.h"
#include "def.h"
#define SEL_COL 0
#define RM_COL 1
+enum EObjectType {
+ MENU_BASE = 0,
+ MENU_SELECT_BTN,
+ MENU_REMOVE_BTN
+};
+
struct bp_property {
const char *part;
const char *style;
char *text;
- void (*btn_key_down_cb)(void *data, Evas *e, Evas_Object *obj,
- void *ev);
};
struct SMenuView {
CViewMgr *vmgr;
};
-static Evas_Object *_add_layout(Evas_Object *win)
+Evas_Object *CMenuView::m_AddLayout(Evas_Object *win)
{
Evas_Object *base;
return base;
}
-static void _layout_key_down(void *data,
- Evas *e, Evas_Object *obj, void *ev_info)
-{
- struct SMenuView *priv;
- Evas_Event_Key_Down *ev;
-
- if (!data || !ev_info)
- return;
-
- priv = (SMenuView *)data;
- ev = (Evas_Event_Key_Down *)ev_info;
-
- if (!ev->keyname)
- return;
-
- if (!strcmp(ev->keyname, KEY_BACK))
- priv->vmgr->PopView();
-}
-
-static void _common_sel_key_down_cb(void *data, Evas *e, Evas_Object *obj,
- void *ev_info)
-{
- struct SMenuView *priv;
- Evas_Event_Key_Down *ev;
-
- if (!data || !ev_info) {
- _ERR("null pointer.");
- return;
- }
-
- priv = (struct SMenuView *)data;
- ev = (Evas_Event_Key_Down *)ev_info;
-
- if (!ev->keyname)
- return;
-
- if (!strcmp(ev->keyname, KEY_ENTER))
- priv->node->SwitchTo();
-}
-
-static void _usb_rm_key_down_cb(void *data, Evas *e, Evas_Object *obj,
- void *ev_info)
-{
- struct SMenuView *priv;
- Evas_Event_Key_Down *ev;
-
- if (!data || !ev_info) {
- _ERR("null pointer.");
- return;
- }
-
- priv = (struct SMenuView *)data;
- ev = (Evas_Event_Key_Down *)ev_info;
-
- if (!ev->keyname)
- return;
-
- if (!strcmp(ev->keyname, KEY_ENTER)) {
- /* TODO call usb remove */
- priv->vmgr->PopView();
- }
-}
-
-static void _menu_btn_mousemove(void *data, Evas *e, Evas_Object *obj, void *ei)
-{
- if (!obj)
- return;
-
- if (!elm_object_focus_get(obj))
- elm_object_focus_set(obj, EINA_TRUE);
-}
-
-static Evas_Object *_add_btn(Evas_Object *parent,
+Evas_Object *CMenuView::m_AddBtn(Evas_Object *parent,
const char *part,
const char *style,
const char *str)
return btn;
}
-static Evas_Object *_add_btn_by_index(Evas_Object *base, struct SMenuView *priv,
- unsigned int row, unsigned int col)
+Evas_Object *CMenuView::m_AddBtnByIndex(unsigned int row, unsigned int col)
{
Evas_Object *btn;
unsigned int bp_arr_row;
{
PART_MENU_BTN_1,
STYLE_MENU_SEL,
- TEXT_SEL,
- _common_sel_key_down_cb
+ TEXT_SEL
},
{
PART_MENU_BTN_2,
STYLE_MENU_RM,
- TEXT_RM,
- _usb_rm_key_down_cb
+ TEXT_RM
},
},
{
{
PART_MENU_BTN_1,
STYLE_MENU_SEL,
- TEXT_SEL,
- _common_sel_key_down_cb,
+ TEXT_SEL
},
{
NULL,
NULL,
- NULL,
NULL
},
},
};
- UTIL_CHECK_RETURN_VAL(base, NULL);
- UTIL_CHECK_RETURN_VAL(priv, NULL);
-
bp_arr_row = sizeof(bp_arr) /
(sizeof(struct bp_property) * MAX_BTN_NUM);
if (row >= bp_arr_row || col >= MAX_BTN_NUM)
return NULL;
- btn = _add_btn(base, bp_arr[row][col].part,
+ btn = m_AddBtn(m->base, bp_arr[row][col].part,
bp_arr[row][col].style,
bp_arr[row][col].text);
if (!btn)
return NULL;
- evas_object_event_callback_add(btn,
- EVAS_CALLBACK_KEY_DOWN,
- bp_arr[row][col].btn_key_down_cb, priv);
- evas_object_event_callback_add(btn,
- EVAS_CALLBACK_MOUSE_MOVE,
- _menu_btn_mousemove, priv);
-
return btn;
}
-static int _add_usb_menu_btn(Evas_Object *base, struct SMenuView *priv)
+bool CMenuView::m_AddUsbMenuBtn(void)
{
Evas_Object *sel_btn, *rm_btn;
- UTIL_CHECK_RETURN_VAL(base, -1);
- UTIL_CHECK_RETURN_VAL(priv, -1);
-
- sel_btn = _add_btn_by_index(base, priv, USB_ROW, SEL_COL);
+ sel_btn = m_AddBtnByIndex(USB_ROW, SEL_COL);
if (!sel_btn) {
_ERR("Add usb select button failed.");
- return -1;
+ return false;
}
- rm_btn = _add_btn_by_index(base, priv, USB_ROW, RM_COL);
+ Connect(sel_btn, MENU_SELECT_BTN, TYPE_KEY_DOWN | TYPE_MOUSE_DOWN | TYPE_MOUSE_MOVE);
+
+ rm_btn = m_AddBtnByIndex(USB_ROW, RM_COL);
if (!rm_btn) {
_ERR("Add usb remove button failed.");
evas_object_del(sel_btn);
- return -1;
+ return false;
}
- return 0;
+ Connect(rm_btn, MENU_REMOVE_BTN, TYPE_KEY_DOWN | TYPE_MOUSE_DOWN | TYPE_MOUSE_MOVE);
+
+ return true;
}
-static int _add_external_menu_btn(Evas_Object *base, struct SMenuView *priv)
+bool CMenuView::m_AddExternalMenuBtn(void)
{
Evas_Object *sel_btn;
- if (!base || !priv)
- return -1;
-
- sel_btn = _add_btn_by_index(base, priv, EXTERNAL_ROW, SEL_COL);
+ sel_btn = m_AddBtnByIndex(EXTERNAL_ROW, SEL_COL);
if (!sel_btn) {
_ERR("Add wifi select button failed.");
- return -1;
+ return false;
}
- return 0;
+ Connect(sel_btn, MENU_SELECT_BTN, TYPE_KEY_DOWN | TYPE_MOUSE_DOWN | TYPE_MOUSE_MOVE);
+
+ return true;
}
-static int _add_menu_btn(Evas_Object *base, struct SMenuView *priv)
+bool CMenuView::m_AddMenuBtn(void)
{
- UTIL_CHECK_RETURN_VAL(base, -1);
- UTIL_CHECK_RETURN_VAL(priv, -1);
-
- switch (priv->node->ConnType()) {
+ switch (m->node->ConnType()) {
case CONN_TYPE_USB:
- return _add_usb_menu_btn(base, priv);
+ return m_AddUsbMenuBtn();
case CONN_TYPE_TV:
- return _add_external_menu_btn(base, priv);
+ return m_AddExternalMenuBtn();
default:
break;
}
- return -1;
+ return false;
}
-static int _add_focus_item(Evas_Object *base, struct SMenuView *priv)
+bool CMenuView::m_AddFocusItem(void)
{
Evas_Object *img;
const char *path;
- UTIL_CHECK_RETURN_VAL(base, -1);
- UTIL_CHECK_RETURN_VAL(priv, -1);
-
- elm_object_part_text_set(base,
+ elm_object_part_text_set(m->base,
PART_FOCUS_ITEM_TEXT_NAME,
- _(priv->node->Name()));
- elm_object_part_text_set(base,
+ _(m->node->Name()));
+ elm_object_part_text_set(m->base,
PART_FOCUS_ITEM_TEXT_TYPE,
- _(priv->node->Type()));
+ _(m->node->Type()));
- path = priv->node->IconPath();
+ path = m->node->IconPath();
if (!path)
- return -1;
+ return false;
- img = elm_image_add(base);
+ img = elm_image_add(m->base);
if (!img)
- return -1;
+ return false;
elm_image_file_set(img, path, NULL);
evas_object_show(img);
- elm_object_part_content_set(base, PART_FOCUS_ITEM_IMG, img);
+ elm_object_part_content_set(m->base, PART_FOCUS_ITEM_IMG, img);
- return 0;
+ return true;
}
if (!win)
return false;
- base = _add_layout(win);
+ base = m_AddLayout(win);
if (!base)
return false;
m->vmgr = vmgr;
evas_object_data_set(base, PRIV, m);
- if (_add_focus_item(base, m) == -1) {
+ if (!m_AddFocusItem()) {
_ERR("add focus item failed.");
evas_object_del(base);
- free(m);
+ delete m;
+ m = NULL;
return NULL;
}
- if (_add_menu_btn(base, m) == -1) {
+ if (!m_AddMenuBtn()) {
_ERR("add menu button failed.");
evas_object_del(base);
- free(m);
+ delete m;
+ m = NULL;
return NULL;
}
- evas_object_event_callback_add(base, EVAS_CALLBACK_KEY_DOWN,
- _layout_key_down, m);
+ Connect(base, MENU_BASE, TYPE_KEY_DOWN);
CBaseView::Create(NULL);
delete m;
m = NULL;
}
+
+void CMenuView::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
+{
+ switch (id) {
+ case MENU_BASE:
+ if (!ev->keyname)
+ return;
+
+ if (!strcmp(ev->keyname, KEY_BACK))
+ m->vmgr->PopView();
+
+ break;
+ case MENU_SELECT_BTN:
+ if (!ev->keyname)
+ return;
+
+ if (!strcmp(ev->keyname, KEY_ENTER))
+ m->node->SwitchTo();
+
+ break;
+ case MENU_REMOVE_BTN:
+ if (!ev->keyname)
+ return;
+
+ if (!strcmp(ev->keyname, KEY_ENTER)) {
+ /* TODO call usb remove */
+ m->vmgr->PopView();
+ }
+
+ break;
+ default:
+ break;
+ }
+}
+
+void CMenuView::OnMouseDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Down *ev)
+{
+ switch (id) {
+ case MENU_SELECT_BTN:
+ m->node->SwitchTo();
+ break;
+ case MENU_REMOVE_BTN:
+ m->vmgr->PopView();
+ break;
+ default:
+ break;
+ }
+}
+
+void CMenuView::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
+{
+ switch (id) {
+ case MENU_SELECT_BTN:
+ case MENU_REMOVE_BTN:
+ if (!elm_object_focus_get(obj))
+ elm_object_focus_set(obj, EINA_TRUE);
+
+ break;
+ default:
+ break;
+ }
+}
#include "ViewMgr.h"
#include "BaseLayout.h"
#include "LayoutMgr.h"
+#include "InputHandler.h"
#include "source_mgr.h"
#include "menu_view.h"
#include "util.h"
#define SETTING_ITEM "settings-item"
#define SETTING_NETWORK "network-settings"
+enum EObjectType {
+ NEARBY_GRID = 0,
+ NEARBY_BTN_TOP,
+ NEARBY_BTN_LAYOUT
+};
+
struct SNearbyLayout {
Evas_Object *base;
Evas_Object *grid;
}
};
-void CNearbyLayout::sm_CbGridMouseMove(void *data,
- Evas *e, Evas_Object *obj, void *ev_info)
-{
- SNearbyLayout *m = (SNearbyLayout *)data;
- if (!m)
- return;
-
- Elm_Object_Item *it;
- Evas_Event_Mouse_Move *ev;
-
- if (!ev_info)
- return;
-
- ev = (Evas_Event_Mouse_Move *)ev_info;
- 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))
- return;
-
- elm_object_item_focus_set(it, EINA_TRUE);
-
- if (m->send_sig_back)
- m->send_sig_back(m->base, E_HIGHLIGHT);
-}
-
-void CNearbyLayout::sm_CbGridKeyDown(void *data, Evas *e, Evas_Object *obj, void *ev_info)
-{
- SNearbyLayout *m = (SNearbyLayout *)data;
- if (!m)
- return;
-
- CSourceInfo *si;
- Evas_Event_Key_Down *ev;
-
- if (!ev_info)
- return;
-
- ev = (Evas_Event_Key_Down *)ev_info;
- si = m->srcmgr->SourceInfoByData(m->focus_it);
- if (!ev->keyname || !si)
- return;
-
- if (!strcmp(ev->keyname, KEY_MENU))
- m->vmgr->PushView(MENU_VIEW, si);
-
-}
-
-void CNearbyLayout::sm_CbGridFocused(void *data, Evas_Object *obj, void *ev_info)
-{
- SNearbyLayout *m = (SNearbyLayout *)data;
- if (!m)
- return;
-
- m->focus_it = (Elm_Object_Item*)ev_info;
-
- if (m->send_sig_back)
- m->send_sig_back(m->base, E_HIGHLIGHT);
-}
-
void CNearbyLayout::m_LaunchSettingApp(void)
{
bundle *b;
bundle_free(b);
}
-void CNearbyLayout::sm_CbBtnKeyDown(void *data, Evas *e, Evas_Object *obj, void *ev_info)
-{
- CNearbyLayout *root = (CNearbyLayout *)data;
- if (!root)
- return;
-
- Evas_Event_Key_Down *ev;
-
- if (!ev_info)
- return;
-
- ev = (Evas_Event_Key_Down *)ev_info;
- if (!ev->keyname)
- return;
-
- if (!strcmp(ev->keyname, KEY_ENTER))
- root->m_LaunchSettingApp();
-}
-
-void CNearbyLayout::sm_CbBtnFocused(void *data, Evas_Object *obj, void *ev_info)
-{
- SNearbyLayout *m = (SNearbyLayout *)data;
- if (!m)
- return;
-
- if (m->send_sig_back)
- m->send_sig_back(m->base, E_HIGHLIGHT);
-}
-
void CNearbyLayout::m_AddSetNetworkButton(void)
{
Evas_Object *btn;
}
elm_object_text_set(btn, _(SET_UP_NETWORK));
- evas_object_smart_callback_add(btn, "focused", sm_CbBtnFocused, m);
- evas_object_event_callback_add(btn, EVAS_CALLBACK_KEY_DOWN,
- sm_CbBtnKeyDown, this);
elm_object_part_content_set(Layout(), PART_BUTTON, btn);
+
+ Connect(btn, NEARBY_BTN_LAYOUT, TYPE_KEY_DOWN | TYPE_MOUSE_MOVE | TYPE_FOCUSED);
}
void CNearbyLayout::m_AddNoSrcUtility(void)
}
elm_object_text_set(btn, _(NET_WORK_SET));
elm_object_part_content_set(m->base, PART_UTILITY_BUTTON, btn);
- evas_object_event_callback_add(btn, EVAS_CALLBACK_KEY_DOWN,
- sm_CbBtnKeyDown, NULL);
+
+ Connect(btn, NEARBY_BTN_TOP, TYPE_KEY_DOWN | TYPE_MOUSE_MOVE | TYPE_FOCUSED);
m->utility_pb = pb;
m->utility_btn = btn;
if (!grid)
return NULL;
- evas_object_event_callback_add(m->grid, EVAS_CALLBACK_MOUSE_MOVE,
- sm_CbGridMouseMove, m);
- evas_object_event_callback_add(m->grid, EVAS_CALLBACK_KEY_DOWN,
- sm_CbGridKeyDown, m);
- evas_object_smart_callback_add(m->grid, "item,focused",
- sm_CbGridFocused, m);
+ Connect(grid, NEARBY_GRID, TYPE_KEY_DOWN | TYPE_MOUSE_MOVE | TYPE_FOCUSED);
return grid;
}
}
}
}
+
+void CNearbyLayout::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
+{
+ switch (id) {
+ case NEARBY_GRID:
+ CSourceInfo *si;
+
+ si = m->srcmgr->SourceInfoByData(m->focus_it);
+ if (!si)
+ return;
+
+ if (!strcmp(ev->keyname, KEY_MENU))
+ m->vmgr->PushView(MENU_VIEW, si);
+
+ break;
+ case NEARBY_BTN_TOP:
+ case NEARBY_BTN_LAYOUT:
+ if (!ev->keyname)
+ return;
+
+ if (!strcmp(ev->keyname, KEY_ENTER))
+ m_LaunchSettingApp();
+
+ break;
+ default:
+ break;
+ }
+}
+
+void CNearbyLayout::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
+{
+ switch (id) {
+ case NEARBY_GRID:
+ Elm_Object_Item *it;
+
+ 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))
+ return;
+
+ elm_object_item_focus_set(it, EINA_TRUE);
+
+ if (m->send_sig_back)
+ m->send_sig_back(m->base, E_HIGHLIGHT);
+
+ break;
+ case NEARBY_BTN_TOP:
+ case NEARBY_BTN_LAYOUT:
+ if (elm_object_focus_get(obj))
+ return;
+
+ elm_object_focus_set(obj, EINA_TRUE);
+
+ break;
+ default:
+ break;
+ }
+}
+
+void CNearbyLayout::OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case NEARBY_GRID:
+ m->focus_it = (Elm_Object_Item*)item;
+
+ if (m->send_sig_back)
+ m->send_sig_back(m->base, E_HIGHLIGHT);
+
+ break;
+ case NEARBY_BTN_TOP:
+ case NEARBY_BTN_LAYOUT:
+ if (m->send_sig_back)
+ m->send_sig_back(m->base, E_HIGHLIGHT);
+
+ break;
+ default:
+ break;
+ }
+}
#include "ViewMgr.h"
#include "BaseLayout.h"
#include "LayoutMgr.h"
+#include "InputHandler.h"
#include "external.h"
#include "source_mgr.h"
#include "menu_view.h"
#include "allsource_view.h"
#include "plugged_layout.h"
+#define PLUGGED_GRID 0
+
#define PRIV "priv"
#define PLUGGED_DATA "plugged_data"
}
};
-void CPluggedLayout::sm_CbGridMouseMove(void *data,
- Evas *e, Evas_Object *obj, void *ev_info)
-{
- SPluggedLayout *m = (SPluggedLayout *)data;
- if (!m)
- return;
-
- Elm_Object_Item *it;
- Evas_Event_Mouse_Move *ev;
-
- if (!ev_info)
- return;
-
- ev = (Evas_Event_Mouse_Move *)ev_info;
- 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))
- return;
-
- elm_object_item_focus_set(it, EINA_TRUE);
-
- if (m->send_sig_back_func)
- m->send_sig_back_func(m->base, E_HIGHLIGHT);
-}
-
-void CPluggedLayout::sm_CbGridKeyDown(void *data,
- Evas *e, Evas_Object *obj, void *ev_info)
-{
- SPluggedLayout *m = (SPluggedLayout *)data;
- if (!m)
- return;
-
- CSourceInfo *si;
- Evas_Event_Key_Down *ev;
-
- if (!ev_info)
- return;
-
- ev = (Evas_Event_Key_Down *)ev_info;
- si = m->srcmgr->SourceInfoByData(m->focus_it);
- if (!ev->keyname || !si)
- return;
-
- if (!strcmp(ev->keyname, KEY_MENU))
- m->vmgr->PushView(MENU_VIEW, si);
-}
-
-void CPluggedLayout::sm_CbGridFocused(void *data,
- Evas_Object *obj, void *ev_info)
-{
- SPluggedLayout *m = (SPluggedLayout *)data;
- if (!m)
- return;
-
- m->focus_it = (Elm_Object_Item*)ev_info;
-
- if (m->send_sig_back_func)
- m->send_sig_back_func(m->base, E_HIGHLIGHT);
-}
-
Evas_Object *CPluggedLayout::m_DrawGengrid(Evas_Object *layout)
{
Evas_Object *grid;
if (!grid)
return NULL;
- evas_object_event_callback_add(m->grid, EVAS_CALLBACK_MOUSE_MOVE,
- sm_CbGridMouseMove, m);
- evas_object_event_callback_add(m->grid, EVAS_CALLBACK_KEY_DOWN,
- sm_CbGridKeyDown, m);
- evas_object_smart_callback_add(m->grid, "item,focused",
- sm_CbGridFocused, m);
+ Connect(grid, PLUGGED_GRID, TYPE_KEY_DOWN | TYPE_MOUSE_MOVE | TYPE_FOCUSED);
return grid;
}
}
}
}
+
+void CPluggedLayout::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
+{
+ switch (id) {
+ case PLUGGED_GRID:
+ CSourceInfo *si;
+
+ si = m->srcmgr->SourceInfoByData(m->focus_it);
+ if (!si)
+ return;
+
+ if (!strcmp(ev->keyname, KEY_MENU))
+ m->vmgr->PushView(MENU_VIEW, si);
+
+ break;
+ default:
+ break;
+ }
+}
+
+void CPluggedLayout::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
+{
+ switch (id) {
+ case PLUGGED_GRID:
+ Elm_Object_Item *it;
+
+ 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))
+ return;
+
+ elm_object_item_focus_set(it, EINA_TRUE);
+
+ if (m->send_sig_back_func)
+ m->send_sig_back_func(m->base, E_HIGHLIGHT);
+ break;
+ default:
+ break;
+ }
+}
+
+void CPluggedLayout::OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case PLUGGED_GRID:
+ m->focus_it = (Elm_Object_Item *)item;
+
+ if (m->send_sig_back_func)
+ m->send_sig_back_func(m->base, E_HIGHLIGHT);
+
+ break;
+ default:
+ break;
+ }
+}
+