#include "plugged_layout.h"
#include "nearby_layout.h"
-#define PRIV "priv"
#define TEXT_PLUGGED "PLUGGED"
#define TEXT_NEARBY "NEARBY"
#define LAYOUT_PLUGGED "LAYOUT_PLUGGED"
#define LAYOUT_NEARBY "LAYOUT_NEARBY"
+enum EObjectType {
+ ALL_PLUG_BTN = 0,
+ ALL_NEAR_BTN
+};
+
struct SAllSourceView {
Evas_Object *base;
Evas_Object *plug_btn;
}
};
-static void _key_down_cb(void *data, Evas *e, Evas_Object *obj, void *ev_info)
-{
- Evas_Event_Key_Down *ev;
-
- if (!ev_info) {
- _ERR("Parameter is NULL.");
- return;
- }
-
- ev = (Evas_Event_Key_Down*)ev_info;
- if (!ev->keyname)
- return;
-
- if (!strcmp(ev->keyname, KEY_BACK))
- app_efl_exit();
-}
-
-static Evas_Object *_add_layout(Evas_Object *win)
+Evas_Object *CAllSourceView::m_AddLayout(Evas_Object *win)
{
Evas_Object *base;
- UTIL_CHECK_RETURN_NULL(win);
+ if (!win)
+ return NULL;
- base = util_add_layout(win, GRP_ALLSRC);
- UTIL_CHECK_RETURN_NULL(base);
+ base = elm_layout_add(win);
+ if (!base)
+ return NULL;
+ elm_layout_file_set(base, EDJ_FILE, GRP_ALLSRC);
elm_object_part_text_set(base, PART_TITLE_STR, _("SOURCE"));
- evas_object_event_callback_add(base,
- EVAS_CALLBACK_KEY_DOWN, _key_down_cb, NULL);
+ evas_object_size_hint_weight_set(base,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(base);
return base;
}
-static Evas_Object *_add_btn(Evas_Object *parent, const char *style,
- const char *str)
+Evas_Object *CAllSourceView::m_AddBtn(const char *style, const char *str)
{
Evas_Object *btn;
- if (!parent) {
- _ERR("parent is NULL.");
- return NULL;
- }
-
- btn = elm_button_add(parent);
+ btn = elm_button_add(m->base);
if (!btn) {
_ERR("add button error.");
return NULL;
return btn;
}
-static void _plug_btn_focus_cb(void *data, Evas_Object *obj, void *ev)
-{
- struct SAllSourceView *priv;
-
- if (!data)
- return;
-
- priv = (SAllSourceView*)data;
- priv->focus_btn = obj;
-
- priv->pLayoutMgr->Show(LAYOUT_PLUGGED);
-}
-
-static void _near_btn_focus_cb(void *data, Evas_Object *obj, void *ev)
-{
- struct SAllSourceView *priv;
-
- if (!data)
- return;
-
- priv = (SAllSourceView*)data;
- priv->focus_btn = obj;
-
- priv->pLayoutMgr->Show(LAYOUT_NEARBY);
-}
-
-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 bool _add_menu_area(Evas_Object *base, struct SAllSourceView *priv)
+bool CAllSourceView::m_AddMenuArea(void)
{
- if (!base || !priv)
- return false;
-
- priv->plug_btn = _add_btn(base, BTN_STYLE_PLUG, _(TEXT_PLUGGED));
- if (!priv->plug_btn) {
+ m->plug_btn = m_AddBtn(BTN_STYLE_PLUG, _(TEXT_PLUGGED));
+ if (!m->plug_btn) {
_ERR("Add plug_button failed.");
return false;
}
- evas_object_smart_callback_add(priv->plug_btn,
- "focused",
- _plug_btn_focus_cb, priv);
- evas_object_event_callback_add(priv->plug_btn,
- EVAS_CALLBACK_MOUSE_MOVE,
- _menu_btn_mousemove, priv);
-
- priv->near_btn = _add_btn(base, BTN_STYLE_NEAR, _(TEXT_NEARBY));
- if (!priv->near_btn) {
+
+ elm_object_part_content_set(m->base, PART_MENU_PLUGGED, m->plug_btn);
+
+ Connect(m->plug_btn, ALL_PLUG_BTN, TYPE_KEY_DOWN | TYPE_MOUSE_MOVE | TYPE_FOCUSED);
+
+ m->near_btn = m_AddBtn(BTN_STYLE_NEAR, _(TEXT_NEARBY));
+ if (!m->near_btn) {
_ERR("Add nearby button failed");
- evas_object_del(priv->plug_btn);
+ evas_object_del(m->plug_btn);
return false;
}
- evas_object_smart_callback_add(priv->near_btn,
- "focused",
- _near_btn_focus_cb, priv);
- evas_object_event_callback_add(priv->near_btn,
- EVAS_CALLBACK_MOUSE_MOVE,
- _menu_btn_mousemove, priv);
- elm_object_part_content_set(base, PART_MENU_NEARBY, priv->near_btn);
- elm_object_part_content_set(base, PART_MENU_PLUGGED, priv->plug_btn);
+ elm_object_part_content_set(m->base, PART_MENU_NEARBY, m->near_btn);
+
+ Connect(m->near_btn, ALL_NEAR_BTN, TYPE_KEY_DOWN | TYPE_MOUSE_MOVE | TYPE_FOCUSED);
return true;
}
-static void _get_signal_from_layout(Evas_Object *base, int signal)
+void CAllSourceView::sm_CbGetSignalFromLayout(void *cookie, int signal)
{
- struct SAllSourceView *priv;
-
- if (!base)
- return;
-
- priv = (SAllSourceView *)evas_object_data_get(base, PRIV);
- if (!priv)
- return;
+ SAllSourceView *m = (SAllSourceView *)cookie;
if (signal == E_HIGHLIGHT)
- elm_object_signal_emit(priv->focus_btn,
+ elm_object_signal_emit(m->focus_btn,
SIG_ELM_ACTION_HIGHLIGHT, SIG_ELM);
else if (signal == E_RETURN)
- elm_object_focus_set(priv->focus_btn, EINA_TRUE);
+ elm_object_focus_set(m->focus_btn, EINA_TRUE);
}
-static void _update_src_list(void *user_data, void *data, enum update_ui type)
+void CAllSourceView::sm_CbUpdateSrcList(void *cookie, void *data, enum update_ui type)
{
- Evas_Object *base;
- struct SAllSourceView *priv;
-
- if (!user_data) {
- _ERR("Invaild data.");
- return;
- }
-
- base = (Evas_Object*)user_data;
- priv = (SAllSourceView *)evas_object_data_get(base, PRIV);
- if (!priv) {
- _ERR("Invaild data.");
- return;
- }
+ SAllSourceView *m = (SAllSourceView *)cookie;
if (type == SRC_PLUG_ADD_ONE
|| type == SRC_PLUG_DEL_ONE
|| type == SRC_UPDATE_ALL)
- priv->pPluggedLayout->Update(data, type);
+ m->pPluggedLayout->Update(data, type);
if (type == SRC_NEAR_ADD_ONE
|| type == SRC_NEAR_DEL_ONE
|| type == SRC_UPDATE_ALL)
- priv->pNearbyLayout->Update(data, type);
+ m->pNearbyLayout->Update(data, type);
}
Evas_Object *CAllSourceView::Base(void)
{
ASSERT(!m);
- Evas_Object *win = NULL, *base = NULL;
+ Evas_Object *win = NULL;
CViewMgr *vmgr;
vmgr = CViewMgr::GetInstance();
_CREATE_BEGIN
{
_CHECK(win = vmgr->Window());
- _CHECK(base = _add_layout(win));
_CHECK(m = new SAllSourceView);
- _CHECK(CSourceMgr::Initialize(_update_src_list, base));
+ _CHECK(m->base = m_AddLayout(win));
+ _CHECK(CSourceMgr::Initialize(sm_CbUpdateSrcList, m));
_CHECK(m->pLayoutMgr = new CLayoutMgr);
- _CHECK(m->pLayoutMgr->Create(base, NULL));
+ _CHECK(m->pLayoutMgr->Create(m->base, NULL));
_CHECK(m->pPluggedLayout = new CPluggedLayout(LAYOUT_PLUGGED));
_CHECK(m->pNearbyLayout = new CNearbyLayout(LAYOUT_NEARBY));
- _CHECK(m->pPluggedLayout->Create(m->pLayoutMgr, (void *)_get_signal_from_layout));
- _CHECK(m->pNearbyLayout->Create(m->pLayoutMgr, (void *)_get_signal_from_layout));
+ _CHECK(m->pPluggedLayout->Create(m->pLayoutMgr, NULL));
+ _CHECK(m->pPluggedLayout->SetSendSigCallback(sm_CbGetSignalFromLayout, m));
+ _CHECK(m->pNearbyLayout->Create(m->pLayoutMgr, NULL));
+ _CHECK(m->pNearbyLayout->SetSendSigCallback(sm_CbGetSignalFromLayout, m));
_CHECK(m->pLayoutMgr->AddLayout(m->pPluggedLayout));
_CHECK(m->pLayoutMgr->AddLayout(m->pNearbyLayout));
- _CHECK(_add_menu_area(base, m))
+ _CHECK(m_AddMenuArea());
_WHEN_SUCCESS{
m->vmgr = vmgr;
- m->base = base;
m->mode = (launch_mode)(size_t)data;
- evas_object_data_set(base, PRIV, m);
CSourceMgr::GetInstance()->Refresh();
CBaseView::Create(NULL);
}
_CHECK_FAIL{}
_CHECK_FAIL{ m->pLayoutMgr->RemoveLayout(m->pNearbyLayout); }
_CHECK_FAIL{ m->pLayoutMgr->RemoveLayout(m->pPluggedLayout); }
+ _CHECK_FAIL{}
_CHECK_FAIL{ m->pNearbyLayout->Destroy(); }
+ _CHECK_FAIL{}
_CHECK_FAIL{ m->pPluggedLayout->Destroy(); }
_CHECK_FAIL{ delete m->pNearbyLayout; m->pNearbyLayout = NULL; }
_CHECK_FAIL{ delete m->pPluggedLayout; m->pPluggedLayout = NULL; }
_CHECK_FAIL{ m->pLayoutMgr->Destroy(); }
_CHECK_FAIL{ delete m->pLayoutMgr; m->pLayoutMgr = NULL; }
_CHECK_FAIL{ CSourceMgr::Finalize(); }
+ _CHECK_FAIL{ evas_object_del(m->base); }
_CHECK_FAIL{ delete m; m = NULL; }
- _CHECK_FAIL{ evas_object_del(base); }
_CHECK_FAIL{}
} _CREATE_END_AND_CATCH{ return false; }
elm_object_focus_set(btn, EINA_TRUE);
}
+
+void CAllSourceView::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
+{
+ switch (id) {
+ case ALL_PLUG_BTN:
+ case ALL_NEAR_BTN:
+ if (!strcmp(ev->keyname, KEY_BACK))
+ app_efl_exit();
+ default:
+ break;
+ }
+}
+
+void CAllSourceView::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
+{
+ switch (id) {
+ case ALL_PLUG_BTN:
+ case ALL_NEAR_BTN:
+ if (!elm_object_focus_get(obj))
+ elm_object_focus_set(obj, EINA_TRUE);
+ break;
+ default:
+ break;
+ }
+}
+
+void CAllSourceView::OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case ALL_PLUG_BTN:
+ m->focus_btn = obj;
+ m->pLayoutMgr->Show(LAYOUT_PLUGGED);
+ break;
+ case ALL_NEAR_BTN:
+ m->focus_btn = obj;
+ m->pLayoutMgr->Show(LAYOUT_NEARBY);
+ break;
+ default:
+ break;
+ }
+}