#define __CTXT_MENU_VIEW_H__
-class CCtxtMenuView : public CBaseView, CListenerMgr, ITimeoutListener, IKeyDownListener {
+class CCtxtMenuView : public CBaseView, CListenerMgr, ITimeoutListener,
+ IKeyDownListener, IMouseDownListener,
+ IMouseMoveListener, IFocusedListener,
+ IUnfocusedListener, IRealizedListener, IUnrealizedListener {
private:
struct SCtxtMenuView *m;
virtual void t_OnResume(void);
private:
- static char *sm_CbGridTextGet(void *data, Evas_Object *obj, const char *part);
- static Evas_Object *sm_CbGridContentGet(void *data, Evas_Object *obj, const char *part);
- static Eina_Bool sm_CbGridStateGet(void *data, Evas_Object *obj, const char *part);
+ static char *sm_CbGridTextGet(void *data,
+ Evas_Object *obj, const char *part);
+ static Evas_Object *sm_CbGridContentGet(void *data,
+ Evas_Object *obj, const char *part);
+ static Eina_Bool sm_CbGridStateGet(void *data,
+ Evas_Object *obj, const char *part);
static void _free_itemclass(Elm_Gengrid_Item_Class *ic);
static Elm_Gengrid_Item_Class *_get_itemclass(int type);
static char *_get_mediadata_date(struct mediadata *md);
+ static void sm_CbGridActivated(void *cookie, Elm_Object_Item *it,
+ const char *emission, const char *source);
+ void m_OnGridActivated(Elm_Object_Item *it,
+ const char *emission, const char *source);
+
+ void m_SlideshowBtnSelected(void);
+ void m_PlayBtnSelected(void);
+
bool m_DrawGengrid(void);
bool m_LoadContentThumbnail(void);
bool m_DrawFuncBtn(void);
public:
- CCtxtMenuView(const char *szViewId) : CBaseView(szViewId), IKeyDownListener(this), m(0) {}
+ CCtxtMenuView(const char *szViewId) : CBaseView(szViewId),
+ IKeyDownListener(this), IMouseDownListener(this),
+ IMouseMoveListener(this), IFocusedListener(this),
+ IUnfocusedListener(this), IRealizedListener(this),
+ IUnrealizedListener(this), m(0) {}
virtual ~CCtxtMenuView() {}
virtual bool Create(void *data);
virtual Evas_Object* Base(void);
- //!
virtual void OnTimeout(void);
- //!
virtual Eina_Bool OnEvent(int type, void *event_info);
- virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev);
+public:
+ virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj,
+ Evas_Event_Key_Down *ev);
+ virtual void OnMouseDown(int id, Evas *e, Evas_Object *obj,
+ Evas_Event_Mouse_Down *ev);
+ virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj,
+ Evas_Event_Mouse_Move *ev);
+ virtual void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item);
+ virtual void OnUnfocused(int id, Evas_Object *obj, Elm_Object_Item *item);
+ virtual void OnRealized(int id, Evas_Object *obj, Elm_Object_Item *item);
+ virtual void OnUnrealized(int id, Evas_Object *obj, Elm_Object_Item *item);
};
-
#endif
};
-class CGalleryView : public CBaseView {
+class CGalleryView : public CBaseView, CListenerMgr,
+ IKeyDownListener, IMouseClickedListener,
+ IMouseMoveListener, IFocusedListener, IUnfocusedListener {
private:
struct SGalleryView *m;
virtual void t_OnResume(void);
private:
- //static void sm_CbUsbConnected(usb_device_h usb_device, char *action, void *dt);
- static void sm_CbMediaUpdate(media_content_error_e error, int pid,
- media_content_db_update_item_type_e update_item,
- media_content_db_update_type_e update_type,
- media_content_type_e media_type,
- char *uuid, char *path, char *mime_type, void *dt);
+ static void sm_CbSortDateDescClicked(void *cookie);
+ static void sm_CbSortDateAscClicked(void *cookie);
+ static void sm_CbSortAZClicked(void *cookie);
+ static void sm_CbSortZAClicked(void *cookie);
+ static void sm_CbSourceAllClicked(void *cookie);
+ static void sm_CbSourceTVClicked(void *cookie);
+ static void sm_CbSourceUSBClicked(void *cookie);
static void sm_CbLayoutShown(void *cookie, CBaseLayout *pBaseLayout);
static void sm_CbAllLayoutFocus(void *cookie);
static void sm_CbAllLayoutHide(void *cookie);
static void sm_CbGetSignalFromLayout(void *cookie, int sig);
- //void m_UsbConnected(char *action);
- void m_MediaUpdate(void);
-
+private:
void m_DrawNotifyPopup(const char *text);
void m_DestroyNotifyPopup(void);
+ void m_DrawCtxpopup(const char **text_arr, int size_arr,
+ const char *style, int selected_index,
+ int position_x, int position_y);
+ void m_DestroyCtxpopup(void);
+
void m_AddUpdownIcon(Evas_Object *btn, const char *icon_file);
+ void m_FocusUpdownArrow(void);
+ void m_UnfocusUpdownArrow(void);
- Evas_Object *m_GetHoverselObject(const char **text_arr, int size_arr, const char *style);
+ Evas_Object *m_GetHoverselObject(const char **text_arr,
+ int size_arr, const char *style);
bool m_DrawTopArea(void);
bool m_DrawLeftArea(void);
bool m_DrawItems(void);
+ void m_DrawContentArea(int ltype);
+
+ void m_FocusLayout(void);
+ void m_SortLayout(int sort_type);
+ void m_SourceChange(int source_type);
public:
- CGalleryView(const char *szViewId) : CBaseView(szViewId), m(0) {}
+ CGalleryView(const char *szViewId) :
+ CBaseView(szViewId),
+ IKeyDownListener(this),
+ IMouseClickedListener(this),
+ IMouseMoveListener(this),
+ IFocusedListener(this),
+ IUnfocusedListener(this),
+ m(0) {}
virtual ~CGalleryView() {}
virtual bool Create(void *data);
virtual Evas_Object* Base(void);
- void DrawContentArea(int ltype);
-
- void DrawCtxpopup(const char **text_arr, int size_arr,
- const char *style, int selected_index, int position_x, int position_y);
- void DestroyCtxpopup(void);
-
- void FocusLayout(void);
+public:
+ virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev);
+ virtual void OnMouseClicked(int id, Evas_Object *obj);
+ virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev);
+ virtual void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item);
+ virtual void OnUnfocused(int id, Evas_Object *obj, Elm_Object_Item *item);
};
#endif
#define __LAYOUT_ALL_H__
-class CAllLayout : public CBaseLayout {
+class CAllLayout : public CBaseLayout, CListenerMgr,
+ IKeyDownListener, IMouseMoveListener,
+ IRealizedListener, IUnrealizedListener, IFocusedListener {
private:
struct SAllLayout *m;
virtual void t_OnHide(void);
private:
- static char *sm_CbGridTextGet(void *data, Evas_Object *ob, const char *part);
- static Evas_Object *sm_CbGridContentGet(void *data, Evas_Object *obj, const char *part);
- static Eina_Bool sm_CbGridStateGet(void *data, Evas_Object *obj, const char *part);
+ static char *sm_CbGridTextGet(void *data,
+ Evas_Object *obj, const char *part);
+ static Evas_Object *sm_CbGridContentGet(void *data,
+ Evas_Object *obj, const char *part);
+ static Eina_Bool sm_CbGridStateGet(void *data,
+ Evas_Object *obj, const char *part);
static int sm_CompareDesc(const void *data1, const void *data2);
static int sm_CompareAsc(const void *data1, const void *data2);
void m_FreeItemclass(Elm_Gengrid_Item_Class *ic);
Elm_Gengrid_Item_Class *m_GetItemclass(int type);
+ static void sm_CbGridActivated(void *cookie, Elm_Object_Item *it,
+ const char *emission, const char *source);
+ void m_OnGridActivated(Elm_Object_Item *it,
+ const char *emission, const char *source);
+
+ 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);
+
+ void m_SendResultToApp(const char *filepath);
+ void m_CreateCtxtMenu(void);
+
Eina_List *m_SortList(Eina_List *list, int sort);
Evas_Object *m_DrawGengrid(Evas_Object *layout);
bool m_DrawGengridItems(void);
public:
- CAllLayout(const char *pLayoutId) : CBaseLayout(pLayoutId), m(0) {}
+ CAllLayout(const char *pLayoutId) : CBaseLayout(pLayoutId),
+ IKeyDownListener(this), IMouseMoveListener(this),
+ IRealizedListener(this), IUnrealizedListener(this),
+ IFocusedListener(this), m(0) {}
virtual ~CAllLayout() {}
bool Create(CLayoutMgr *mgr, void *data);
void Focus(void);
void Sort(int sort);
void Update(struct layout_data *ld);
+
+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);
};
#ifndef __LAYOUT_EVENTS_H__
#define __LAYOUT_EVENTS_H__
-class CEventLayout : public CBaseLayout {
+class CEventLayout : public CBaseLayout, CListenerMgr,
+ IKeyDownListener, IMouseMoveListener,
+ IRealizedListener, IUnrealizedListener, IFocusedListener {
private:
struct SEventLayout *m;
virtual void t_OnHide(void);
private:
- static char *sm_CbGridTextGet(void *data, Evas_Object *ob, const char *part);
- static Evas_Object *sm_CbGridContentGet(void *data, Evas_Object *obj, const char *part);
- static Eina_Bool sm_CbGridStateGet(void *data, Evas_Object *obj, const char *part);
+ static char *sm_CbGridTextGet(void *data,
+ Evas_Object *obj, const char *part);
+ static Evas_Object *sm_CbGridContentGet(void *data,
+ Evas_Object *obj, const char *part);
+ static Eina_Bool sm_CbGridStateGet(void *data,
+ Evas_Object *obj, const char *part);
- void m_FreeItemclass(Elm_Gengrid_Item_Class *ic_photo, Elm_Gengrid_Item_Class *ic_video, Elm_Gengrid_Item_Class *ic_event);
+ void m_FreeItemclass(Elm_Gengrid_Item_Class *ic_photo,
+ Elm_Gengrid_Item_Class *ic_video,
+ Elm_Gengrid_Item_Class *ic_event);
Elm_Gengrid_Item_Class *m_GetItemclass(int type);
+ static void sm_CbGridActivated(void *cookie, Elm_Object_Item *it,
+ const char *emission, const char *source);
+ void m_OnGridActivated(Elm_Object_Item *it,
+ const char *emission, const char *source);
+
+ 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);
+
int m_GetEventCount(Eina_List *event_list);
int m_GetMediaCount(Eina_List *media_list, int type);
bool m_DrawGengridItems(void);
public:
- CEventLayout(const char *pLayoutId) : CBaseLayout(pLayoutId), m(0) {}
+ CEventLayout(const char *pLayoutId) : CBaseLayout(pLayoutId),
+ IKeyDownListener(this), IMouseMoveListener(this),
+ IRealizedListener(this), IUnrealizedListener(this),
+ IFocusedListener(this), m(0) {}
virtual ~CEventLayout() {}
bool Create(CLayoutMgr *mgr, void *data);
void Focus(void);
void Sort(int sort);
void Update(struct layout_data *ld);
+
+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);
};
#endif
#ifndef __LAYOUT_FOLDER_H__
#define __LAYOUT_FOLDER_H__
-class CFolderLayout : public CBaseLayout {
+class CFolderLayout : public CBaseLayout, CListenerMgr,
+ IKeyDownListener, IMouseMoveListener,
+ IRealizedListener, IUnrealizedListener, IFocusedListener {
private:
struct SFolderLayout *m;
virtual void t_OnHide(void);
private:
- static char *sm_CbGridTextGet(void *data, Evas_Object *ob, const char *part);
- static Evas_Object *sm_CbGridContentGet(void *data, Evas_Object *obj, const char *part);
- static Eina_Bool sm_CbGridStateGet(void *data, Evas_Object *obj, const char *part);
+ static char *sm_CbGridTextGet(void *data,
+ Evas_Object *obj, const char *part);
+ static Evas_Object *sm_CbGridContentGet(void *data,
+ Evas_Object *obj, const char *part);
+ static Eina_Bool sm_CbGridStateGet(void *data,
+ Evas_Object *obj, const char *part);
void m_FreeItemclass(Elm_Gengrid_Item_Class *ic);
Elm_Gengrid_Item_Class *m_GetItemclass(void);
+ static void sm_CbGridActivated(void *cookie, Elm_Object_Item *it,
+ const char *emission, const char *source);
+ void m_OnGridActivated(Elm_Object_Item *it,
+ const char *emission, const char *source);
+
+ 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);
+
int m_GetMediaCount(Eina_List *list, int type);
Evas_Object *m_DrawGengrid(Evas_Object *layout);
bool m_DrawGengridItems(void);
public:
- CFolderLayout(const char *pLayoutId) : CBaseLayout(pLayoutId), m(0) {}
+ CFolderLayout(const char *pLayoutId) : CBaseLayout(pLayoutId),
+ IKeyDownListener(this), IMouseMoveListener(this),
+ IRealizedListener(this), IUnrealizedListener(this),
+ IFocusedListener(this), m(0) {}
virtual ~CFolderLayout() {}
bool Create(CLayoutMgr *mgr, void *data);
void Focus(void);
void Sort(int sort);
void Update(struct layout_data *ld);
+
+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);
};
#endif
#define __PHOTOVIEWER_VIEW_H__
-class CPhotoViewerView : public CBaseView, ITimeoutListener {
+class CPhotoViewerView : public CBaseView, CListenerMgr, IKeyDownListener,
+ IMouseClickedListener, IMouseMoveListener,
+ IFocusedListener, ITimeoutListener {
private:
struct SPhotoViewerView *m;
virtual void t_OnResume(void);
private:
- Evas_Object *m_AddTooltipBtn(Evas_Object *parent, const char *style_text, const char *tt_text);
+ Evas_Object *m_AddTooltipBtn(Evas_Object *parent,
+ const char *style_text, const char *tt_text);
private:
- static void sm_CbPrevBtnClicked(void *dt, Evas_Object *obj, const char *emission, const char *source);
- void m_OnPrevBtnClicked(Evas_Object *obj, const char *emission, const char *source);
-
- static void sm_CbNextBtnClicked(void *dt, Evas_Object *obj, const char *emission, const char *source);
- void m_OnNextBtnClicked(Evas_Object *obj, const char *emission, const char *source);
-
- static void sm_CbSlideshowBtnClicked(void *dt, Evas_Object *obj, const char *emission, const char *source);
- void m_OnSlideshowBtnClicked(Evas_Object *obj, const char *emission, const char *source);
-
- static void sm_CbSettingBtnClicked(void *dt, Evas_Object *obj, const char *emission, const char *source);
- void m_OnSettingBtnClicked(Evas_Object *obj, const char *emission, const char *source);
-
- static void sm_CbZoomBtnClicked(void *dt, Evas_Object *obj, const char *emission, const char *source);
- void m_OnZoomBtnClicked(Evas_Object *obj, const char *emission, const char *source);
-
- static void sm_CbRotateBtnClicked(void *dt, Evas_Object *obj, const char *emission, const char *source);
- void m_OnRotateBtnClicked(Evas_Object *obj, const char *emission, const char *source);
+ static void sm_CbPrevBtnClicked(void *dt, Evas_Object *obj,
+ const char *emission, const char *source);
+ void m_OnPrevBtnClicked(Evas_Object *obj,
+ const char *emission, const char *source);
+
+ static void sm_CbNextBtnClicked(void *dt, Evas_Object *obj,
+ const char *emission, const char *source);
+ void m_OnNextBtnClicked(Evas_Object *obj,
+ const char *emission, const char *source);
+
+ static void sm_CbSlideshowBtnClicked(void *dt, Evas_Object *obj,
+ const char *emission, const char *source);
+ void m_OnSlideshowBtnClicked(Evas_Object *obj,
+ const char *emission, const char *source);
+
+ static void sm_CbSettingBtnClicked(void *dt, Evas_Object *obj,
+ const char *emission, const char *source);
+ void m_OnSettingBtnClicked(Evas_Object *obj,
+ const char *emission, const char *source);
+
+ static void sm_CbZoomBtnClicked(void *dt, Evas_Object *obj,
+ const char *emission, const char *source);
+ void m_OnZoomBtnClicked(Evas_Object *obj,
+ const char *emission, const char *source);
+
+ static void sm_CbRotateBtnClicked(void *dt, Evas_Object *obj,
+ const char *emission, const char *source);
+ void m_OnRotateBtnClicked(Evas_Object *obj,
+ const char *emission, const char *source);
+
+ static Eina_Bool sm_CbTimerTooltip(void *dt);
+ Eina_Bool m_OnTimerTooltip(void);
static Eina_Bool sm_CbFocus(void *dt);
Eina_Bool OnFocus(void);
- static void sm_CbShowViewFinish(void *dt, Evas_Object *obj, const char *emission, const char *source);
- void m_OnShowViewFinish(Evas_Object *obj, const char *emission, const char *source);
+ static void sm_CbShowViewFinish(void *dt, Evas_Object *obj,
+ const char *emission, const char *source);
+ void m_OnShowViewFinish(Evas_Object *obj,
+ const char *emission, const char *source);
static Eina_Bool sm_CbTimerSlideshow(void *dt);
private:
- void m_DrawCtxpopup(const char **text_arr, int size_arr, const char *style, int selected_index, int position_x, int position_y);
+ void m_DrawCtxpopup(const char **text_arr, int size_arr,
+ const char *style, int selected_index,
+ int position_x, int position_y);
+ void m_DestroyCtxpopup(void);
bool m_DrawContentArea(struct mediadata *md);
bool m_DrawTopArea(struct mediadata *md);
bool m_DrawBottomArea(void);
bool m_DrawItems(void);
+ void m_HandleZoomFunction(const char *btn_id);
+ void m_HandleSpeedFunction(const char *btn_id);
public:
- CPhotoViewerView(const char *szViewId) : CBaseView(szViewId), m(0) {}
+ CPhotoViewerView(const char *szViewId) : CBaseView(szViewId),
+ IKeyDownListener(this), IMouseClickedListener(this),
+ IMouseMoveListener(this), IFocusedListener(this), m(0) {}
virtual ~CPhotoViewerView() {}
virtual bool Create(void *data);
virtual Evas_Object* Base(void);
- //!
virtual void OnTimeout(void);
- //!
virtual Eina_Bool OnEvent(int type, void *event_info);
+
+public:
+ virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev);
+ virtual void OnMouseClicked(int id, Evas_Object *obj);
+ virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev);
+ virtual void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item);
};
};
-#include <InputHandler.h>
-
-
-class CPhotoZoomView : public CBaseView, CListenerMgr, IKeyDownListener, IKeyUpListener, ITimeoutListener {
+class CPhotoZoomView : public CBaseView, CListenerMgr, IKeyDownListener,
+ IKeyUpListener, IMouseClickedListener, IMouseMoveListener,
+ IMouseDownListener, IMouseUpListener, ITimeoutListener {
private:
struct SPhotoZoomView *m;
void m_UpdateArrow(void);
void m_UpdateZoomNavi(void);
- void t_GetZoomNaviRatio(void);
+ void m_GetZoomNaviRatio(void);
bool m_MoveZoomNaviImg(void);
+ void m_MoveZoomNavi(Evas_Coord_Point coord);
bool m_DrawArrow(void);
bool m_DrawContent(void);
void m_AddMouseEventCallback(void);
bool m_DrawZoomNavi(void);
+ void m_ViewKeyDown(Evas_Event_Key_Down *ev);
+
static void sm_CbTimeout(void *data);
static Eina_Bool sm_CbEvent(void *data, int type, void *event_info);
virtual void t_OnResume(void);
public:
- CPhotoZoomView(const char *szViewId) : CBaseView(szViewId), IKeyDownListener(this), IKeyUpListener(this), m(0) {}
+ CPhotoZoomView(const char *szViewId) : CBaseView(szViewId),
+ IKeyDownListener(this), IKeyUpListener(this),
+ IMouseClickedListener(this), IMouseMoveListener(this),
+ IMouseDownListener(this), IMouseUpListener(this), m(0) {}
virtual ~CPhotoZoomView() {}
virtual bool Create(void *data);
virtual Evas_Object* Base(void);
- //!
- virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev);
- //!
- virtual void OnKeyUp(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Up *ev);
-
- //!
virtual void OnTimeout(void);
- //!
virtual Eina_Bool OnEvent(int type, void *event_info);
+public:
+ virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev);
+ virtual void OnKeyUp(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Up *ev);
+ virtual void OnMouseClicked(int id, Evas_Object *obj);
+ virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev);
+ virtual void OnMouseDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Down *ev);
+ virtual void OnMouseUp(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Up *ev);
};
#include "BaseView.h"
#include "ViewMgr.h"
#include "BaseLayout.h"
+#include "InputHandler.h"
#include "timeout_handler.h"
#include "gallery_view.h"
#include "photoviewer_view.h"
#define MAX_FUNC_BTN 1
#define ARRAY_SIZE(arr) (sizeof((arr)) / sizeof((arr)[0]))
+enum EObjectType {
+ CTXT_MENU_VIEW = 0,
+ CTXT_MENU_BTN_SHOW,
+ CTXT_MENU_BTN_PLAY,
+ CTXT_MENU_GRID
+};
+
struct SCtxtMenuView {
Evas_Object *win; // Not NULL
Evas_Object *base; // Not NULL
for (int a = 0; a < MAX_FUNC_BTN; a++)
func_btn[a] = NULL;
vd = NULL;
-
- pHandlerGrid = new CHandlerGrid(this);
- pHandlerSlideshow = new CHandlerBtnSlideshow(this);
- pHandlerPlayer = new CHandlerBtnPlay(this);
-
- }
- ~SCtxtMenuView() {
- delete pHandlerGrid;
- delete pHandlerSlideshow;
- delete pHandlerPlayer;
}
-
- class CHandlerGrid : public CListenerMgr, IMouseMoveListener, IRealizedListener, IUnrealizedListener {
- private:
- SCtxtMenuView *m;
-
- private:
- static void sm_CbGridActivated(void *cookie, Elm_Object_Item *it, const char *emission, const char *source)
- {
- CHandlerGrid *root = (CHandlerGrid*)cookie;
- if (root)
- root->OnGridActivated(it, emission, source);
- }
-
- void OnGridActivated(Elm_Object_Item *it, const char *emission, const char *source) {
- struct mediadata *md;
- int type;
- struct view_data *vd;
-
- if (!it)
- return;
-
- md = (struct mediadata*)elm_object_item_data_get(it);
- if (!md)
- return;
-
- type = mediadata_get_type(md);
-
- vd = (struct view_data *)calloc(1, sizeof(*vd));
- if (!vd)
- return;
-
- vd->media_list = util_create_media_list(m->vd->media_list, type);
- vd->md = md;
-
- if (type == MEDIA_VIDEO)
- video_player_play(vd);
- else if (type == MEDIA_IMAGE)
- CViewMgr::GetInstance()->PushView(VIEW_PHOTO_VIEWER, vd);
- else {
- _ERR("wrong media type");
- free(vd);
- return;
- }
-
- elm_gengrid_item_selected_set(it, EINA_FALSE);
- }
-
- public:
- CHandlerGrid(SCtxtMenuView *ins) : IMouseMoveListener(this), IRealizedListener(this), IUnrealizedListener(this) { m = ins; }
-
- virtual void OnMouseMove(int id,Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev) {
- 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);
- }
- virtual void OnRealized(int id, Evas_Object *obj, Elm_Object_Item *item) {
- elm_object_item_signal_callback_add(item, "item_clicked", "edc", sm_CbGridActivated, this);
- }
- virtual void OnUnrealized(int id, Evas_Object *obj, Elm_Object_Item *item) {
- elm_object_item_signal_callback_del(item, "item_clicked", "edc", sm_CbGridActivated);
- }
- } *pHandlerGrid;
-
-
-
- class IHandlerBtn : public CListenerMgr, IMouseMoveListener, IMouseDownListener, IKeyDownListener, IFocusedListener, IUnfocusedListener {
- public:
- IHandlerBtn(Evas_Object *obj) : IMouseMoveListener(this), IMouseDownListener(this), IKeyDownListener(this), IFocusedListener(this), IUnfocusedListener(this) {}
-
- virtual void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item) {
- elm_object_signal_emit(obj, SIG_FOCUSED, "");
- }
- virtual void OnUnfocused(int id, Evas_Object *obj, Elm_Object_Item *item) {
- elm_object_signal_emit(obj, SIG_UNFOCUSED, "");
- }
- virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev) {
- if (!elm_object_focus_get(obj))
- elm_object_focus_set(obj, EINA_TRUE);
- }
- };
-
- class CHandlerBtnSlideshow : public IHandlerBtn {
- private:
- struct SCtxtMenuView* m;
-
- private:
-
- void m_SlideshowBtnSelected(void)
- {
- struct mediadata *md;
- struct view_data *vd;
-
- md = m->vd->md;
- if (!md)
- return;
-
- vd = (struct view_data *)calloc(1, sizeof(*vd));
- if (!vd)
- return;
-
- vd->media_list = util_create_media_list(m->vd->media_list, MEDIA_IMAGE);
- vd->md = md;
-
- CViewMgr::GetInstance()->PushView(VIEW_PHOTO_VIEWER, vd);
- }
-
- public:
- CHandlerBtnSlideshow(SCtxtMenuView *ins) : IHandlerBtn(NULL) { m = ins; }
-
- virtual void OnMouseDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Down *ev) {
- m_SlideshowBtnSelected();
- }
- virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) {
- if (!strcmp(ev->keyname, KEY_ENTER))
- m_SlideshowBtnSelected();
- }
- } *pHandlerSlideshow;
-
- class CHandlerBtnPlay : public IHandlerBtn {
- private:
- struct SCtxtMenuView* m;
-
- private:
- void m_PlayBtnSelected(void)
- {
- struct mediadata *md;
- struct view_data *vd;
-
- md = m->vd->md;
- if (!md)
- return;
-
- vd = (struct view_data *)calloc(1, sizeof(*vd));
- if (!vd)
- return;
-
- vd->media_list = util_create_media_list(
- m->vd->media_list, MEDIA_VIDEO);
- vd->md = md;
-
- video_player_play(vd);
- }
-
- public:
- CHandlerBtnPlay(SCtxtMenuView *ins) : IHandlerBtn(NULL) { m = ins; }
-
- virtual void OnMouseDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Down *ev) {
- m_PlayBtnSelected();
- }
- virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) {
- if (!strcmp(ev->keyname, KEY_ENTER))
- m_PlayBtnSelected();
- }
- }* pHandlerPlayer;
-
-
+ ~SCtxtMenuView() {}
};
-
-
-
struct _btn_info {
+ int btn_type;
const char *btn_img;
const char *btn_title;
-
- SCtxtMenuView::IHandlerBtn *handler;
};
struct _btn_info browse_photo_btn[] = {
{
+ CTXT_MENU_BTN_SHOW,
IMAGE_BTN_SLIDESHOW,
- N_("PLAY SHOW"),
- NULL// &pHandlerSlideshow
+ N_("PLAY SHOW")
},
};
struct _btn_info browse_video_btn[] = {
{
+ CTXT_MENU_BTN_PLAY,
IMAGE_BTN_PLAY,
- N_("PLAY"),
- NULL//&pHandlerPlayer
+ N_("PLAY")
},
};
return NULL;
}
-Evas_Object *CCtxtMenuView::sm_CbGridContentGet(void *data, Evas_Object *obj, const char *part)
+Evas_Object *CCtxtMenuView::sm_CbGridContentGet(void *data,
+ Evas_Object *obj, const char *part)
{
struct mediadata *md;
const char *thumbpath;
return NULL;
}
-Eina_Bool CCtxtMenuView::sm_CbGridStateGet(void *data, Evas_Object *obj, const char *part)
+Eina_Bool CCtxtMenuView::sm_CbGridStateGet(void *data,
+ Evas_Object *obj, const char *part)
{
return EINA_FALSE;
}
return strdup(buf);
}
+void CCtxtMenuView::sm_CbGridActivated(void *cookie, Elm_Object_Item *it,
+ const char *emission, const char *source)
+{
+ CCtxtMenuView *m = (CCtxtMenuView *)cookie;
+
+ m->m_OnGridActivated(it, emission, source);
+}
+
+void CCtxtMenuView::m_OnGridActivated(Elm_Object_Item *it,
+ const char *emission, const char *source)
+{
+ struct mediadata *md;
+ int type;
+ struct view_data *vd;
+
+ if (!it)
+ return;
+
+ md = (struct mediadata*)elm_object_item_data_get(it);
+ if (!md)
+ return;
+
+ type = mediadata_get_type(md);
+
+ vd = (struct view_data *)calloc(1, sizeof(*vd));
+ if (!vd)
+ return;
+
+ vd->media_list = util_create_media_list(m->vd->media_list, type);
+ vd->md = md;
+
+ if (type == MEDIA_VIDEO)
+ video_player_play(vd);
+ else if (type == MEDIA_IMAGE)
+ CViewMgr::GetInstance()->PushView(VIEW_PHOTO_VIEWER, vd);
+ else {
+ _ERR("wrong media type");
+ free(vd);
+ return;
+ }
+
+ elm_gengrid_item_selected_set(it, EINA_FALSE);
+}
+
+void CCtxtMenuView::m_SlideshowBtnSelected(void)
+{
+ struct mediadata *md;
+ struct view_data *vd;
+
+ md = m->vd->md;
+ if (!md)
+ return;
+
+ vd = (struct view_data *)calloc(1, sizeof(*vd));
+ if (!vd)
+ return;
+
+ vd->media_list = util_create_media_list(m->vd->media_list, MEDIA_IMAGE);
+ vd->md = md;
+
+ CViewMgr::GetInstance()->PushView(VIEW_PHOTO_VIEWER, vd);
+}
+
+void CCtxtMenuView::m_PlayBtnSelected(void)
+{
+ struct mediadata *md;
+ struct view_data *vd;
+
+ md = m->vd->md;
+ if (!md)
+ return;
+
+ vd = (struct view_data *)calloc(1, sizeof(*vd));
+ if (!vd)
+ return;
+
+ vd->media_list = util_create_media_list(
+ m->vd->media_list, MEDIA_VIDEO);
+ vd->md = md;
+
+ video_player_play(vd);
+}
+
bool CCtxtMenuView::m_DrawGengrid(void)
{
Elm_Gengrid_Item_Class *ic_photo, *ic_video;
return false;
}
- m->pHandlerGrid->Connect(grid);
- //((IMouseMoveListener*)m->pHandlerGrid)->Connect(grid); //evas_object_event_callback_add(grid, EVAS_CALLBACK_MOUSE_MOVE, _grid_mouse_move, m);
- //((IReleasedListener*)m->pHandlerGrid)->Connect(grid); //evas_object_smart_callback_add(grid, SIG_REALIZED, _grid_realized, m);
- //((IUnreleasedListener*)m->pHandlerGrid)->Connect(grid); // evas_object_smart_callback_add(grid, SIG_UNREALIZED, _grid_unrealized, m);
+ Connect(grid, CTXT_MENU_GRID,
+ TYPE_MOUSE_MOVE | TYPE_REALIZED | TYPE_UNREALIZED);
evas_object_show(grid);
if (type == MEDIA_IMAGE) {
btn_info = browse_photo_btn;
- btn_info->handler = m->pHandlerSlideshow;
*size = ARRAY_SIZE(browse_photo_btn);
} else if (type == MEDIA_VIDEO) {
btn_info = browse_video_btn;
- btn_info->handler = m->pHandlerPlayer;
*size = ARRAY_SIZE(browse_video_btn);
}
}
evas_object_show(ly);
elm_object_focus_allow_set(ly, EINA_TRUE);
- btn_info[i].handler->Connect(ly);
- //((IFocusedListener*)btn_info[i].handler)->Connect(ly); // evas_object_smart_callback_add(ly, "focused", _func_btn_focused, m);
- //((IUnfocusedListener*)btn_info[i].handler)->Connect(ly); // evas_object_smart_callback_add(ly, "unfocused", _func_btn_unfocused, m);
- //((IKeyDownListener*)btn_info[i].handler)->Connect(ly); // evas_object_event_callback_add(ly, EVAS_CALLBACK_KEY_DOWN, btn_info[i].pressed_cb, m);
- //((IMouseMoveListener*)btn_info[i].handler)->Connect(ly); // evas_object_event_callback_add(ly, EVAS_CALLBACK_MOUSE_DOWN, btn_info[i].clicked_cb, m);
- //((IMouseDownListener*)btn_info[i].handler)->Connect(ly); // evas_object_event_callback_add(ly, EVAS_CALLBACK_MOUSE_MOVE, _func_btn_mouse_move, m);
+ Connect(ly, btn_info[i].btn_type, TYPE_KEY_DOWN | TYPE_MOUSE_DOWN
+ | TYPE_MOUSE_MOVE | TYPE_FOCUSED| TYPE_UNFOCUSED);
elm_object_focus_next_object_set(ly, ly, ELM_FOCUS_UP);
elm_object_focus_next_object_set(ly, m->grid, ELM_FOCUS_DOWN);
goto err;
}
- Connect(m->base);// evas_object_event_callback_add(m->base, EVAS_CALLBACK_KEY_DOWN, _base_key_pressed, m);
+ Connect(m->base, CTXT_MENU_VIEW, TYPE_KEY_DOWN);
CBaseView::Create(NULL);
}
-void CCtxtMenuView::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
+void CCtxtMenuView::OnKeyDown(int id, Evas *e,
+ Evas_Object *obj, Evas_Event_Key_Down *ev)
{
- if (strcmp(ev->keyname, KEY_BACK) == 0)
- CViewMgr::GetInstance()->PopView();
+ switch (id) {
+ case CTXT_MENU_VIEW:
+ if (strcmp(ev->keyname, KEY_BACK) == 0)
+ CViewMgr::GetInstance()->PopView();
+
+ break;
+ case CTXT_MENU_BTN_SHOW:
+ if (!strcmp(ev->keyname, KEY_ENTER))
+ m_SlideshowBtnSelected();
+
+ break;
+ case CTXT_MENU_BTN_PLAY:
+ if (!strcmp(ev->keyname, KEY_ENTER))
+ m_PlayBtnSelected();
+
+ break;
+ default:
+ break;
+ }
+}
+
+void CCtxtMenuView::OnMouseDown(int id, Evas *e,
+ Evas_Object *obj, Evas_Event_Mouse_Down *ev)
+{
+ switch (id) {
+ case CTXT_MENU_BTN_SHOW:
+ m_SlideshowBtnSelected();
+ break;
+ case CTXT_MENU_BTN_PLAY:
+ m_PlayBtnSelected();
+ break;
+ default:
+ break;
+ }
+}
+
+void CCtxtMenuView::OnMouseMove(int id, Evas *e,
+ Evas_Object *obj, Evas_Event_Mouse_Move *ev)
+{
+ switch (id) {
+ case CTXT_MENU_BTN_SHOW:
+ case CTXT_MENU_BTN_PLAY:
+ if (!elm_object_focus_get(obj))
+ elm_object_focus_set(obj, EINA_TRUE);
+
+ break;
+ case CTXT_MENU_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);
+
+ break;
+ default:
+ break;
+ }
+}
+
+void CCtxtMenuView::OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case CTXT_MENU_BTN_SHOW:
+ case CTXT_MENU_BTN_PLAY:
+ elm_object_signal_emit(obj, SIG_FOCUSED, "");
+ break;
+ default:
+ break;
+ }
+}
+
+void CCtxtMenuView::OnUnfocused(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case CTXT_MENU_BTN_SHOW:
+ case CTXT_MENU_BTN_PLAY:
+ elm_object_signal_emit(obj, SIG_UNFOCUSED, "");
+ break;
+ default:
+ break;
+ }
+}
+
+void CCtxtMenuView::OnRealized(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case CTXT_MENU_GRID:
+ elm_object_item_signal_callback_add(item, "item_clicked",
+ "edc", sm_CbGridActivated, this);
+ break;
+ default:
+ break;
+ }
+}
+
+void CCtxtMenuView::OnUnrealized(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case CTXT_MENU_GRID:
+ elm_object_item_signal_callback_del(item, "item_clicked",
+ "edc", sm_CbGridActivated);
+ break;
+ default:
+ break;
+ }
}
#include <Elementary.h>
#include <Eina.h>
#include <app.h>
+#include <InputHandler.h>
#include "util.h"
#include "menudef.h"
#include "mediadata.h"
#include "ViewMgr.h"
#include "BaseLayout.h"
#include "LayoutMgr.h"
-#include "InputHandler.h"
#include "gallery_view.h"
#include "layout_all.h"
#include "layout_events.h"
#define LOADING_ICON_Y 48
#define MAX_TIME_LIMIT 10.0
+enum EObjectType {
+ GALLERY_MENU = 0,
+ GALLERY_SORTBTN,
+ GALLERY_SOURCEBTN,
+ GALLERY_CTXPOPUP
+};
+
struct SGalleryView {
Evas_Object *win;
Evas_Object *base;
CLayoutMgr *pLayoutMgr;
- CGalleryView *parent;
-
CAllLayout *pAllLayout;
CEventLayout *pEventLayout;
CFolderLayout *pFolderLayout;
arglist = NULL;
pLayoutMgr = NULL;
- parent = NULL;
ld = NULL;
-
- pHandlerMenuBtn = new CHandlerMenuBtn(this);
- pHandlerSortBtn = new CHandlerHoversel(this);
- pHandlerSourceBtn = new CHandlerHoversel(this);
- pHandlerCtxPopup = new CHandlerCtxPopup(this);
- }
-
- ~SGalleryView() {
- delete pHandlerMenuBtn;
- delete pHandlerSortBtn;
- delete pHandlerSourceBtn;
- delete pHandlerCtxPopup;
}
- class CHandlerMenuBtn : public CListenerMgr, IKeyDownListener, IMouseMoveListener, IFocusedListener {
- private:
- SGalleryView *m;
-
- public:
- CHandlerMenuBtn(SGalleryView *ins) : IKeyDownListener(this), IMouseMoveListener(this), IFocusedListener(this) { m = ins; }
-
- virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
- {
- if (strcmp(ev->keyname, KEY_RIGHT) == 0 ||
- strcmp(ev->keyname, KEY_ENTER) == 0) {
- m->parent->FocusLayout();
-
- elm_object_signal_emit(obj, "highlight", "");
-
- m->focused_btn = obj;
- m->focus_area = FOCUS_CONTENT_AREA;
-
- } else if (strcmp(ev->keyname, KEY_BACK) == 0) {
- elm_exit();
- }
- }
- virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
- {
- if (!elm_object_focus_get(obj))
- elm_object_focus_set(obj, EINA_TRUE);
- }
- virtual void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
- {
- int i = 0;
-
- m->focus_area = FOCUS_MENU_BTN;
-
- if (m->focused_btn == obj)
- return;
-
- if (m->focused_btn)
- elm_object_signal_emit(m->focused_btn, "unhighlight", "");
-
- for (i = E_LAYOUT_ALL; i < E_LAYOUT_MAX; i++) {
- if (m->btn[i] == obj)
- break;
- }
-
- m->focused_btn = obj;
-
- m->parent->DrawContentArea(i);
- }
- } *pHandlerMenuBtn;
-
- class CHandlerHoversel : public CListenerMgr, IKeyDownListener, IMouseClickedListener, IMouseMoveListener, IFocusedListener, IUnfocusedListener {
- private:
- SGalleryView *m;
-
- private:
- void m_FocusUpdownArrow(void)
- {
- if (!m->hover_updown)
- return;
-
- if (m->sort_type == E_SORT_DATE_DESC) {
- /* date desc */
- elm_image_file_set(m->hover_updown, IMAGE_DOWN_ARR, NULL);
- evas_object_color_set(m->hover_updown, 255, 255, 255, 255);
- elm_object_part_content_unset(m->sortbtn, PART_ELM_SWALLOWICON);
-
- evas_object_show(m->hover_updown);
- elm_object_part_content_set(m->sortbtn,
- PART_ELM_SWALLOWICON, m->hover_updown);
- } else if (m->sort_type == E_SORT_DATE_ASC) {
- /* date asc */
- elm_image_file_set(m->hover_updown, IMAGE_UP_ARR, NULL);
- evas_object_color_set(m->hover_updown, 255, 255, 255, 255);
- elm_object_part_content_unset(m->sortbtn, PART_ELM_SWALLOWICON);
-
- evas_object_show(m->hover_updown);
- elm_object_part_content_set(m->sortbtn,
- PART_ELM_SWALLOWICON, m->hover_updown);
- } else {
- elm_object_part_content_unset(m->sortbtn, PART_ELM_SWALLOWICON);
- evas_object_hide(m->hover_updown);
- }
- }
- void m_UnfocusUpdownArrow(void)
- {
- if (!m->hover_updown)
- return;
-
- if (m->sort_type == E_SORT_DATE_DESC) {
- /* date desc */
- elm_image_file_set(m->hover_updown, IMAGE_DOWN_ARR, NULL);
- evas_object_color_set(m->hover_updown, 175, 175, 175, 255);
- elm_object_part_content_unset(m->sortbtn, PART_ELM_SWALLOWICON);
-
- evas_object_show(m->hover_updown);
- elm_object_part_content_set(m->sortbtn,
- PART_ELM_SWALLOWICON, m->hover_updown);
-
- } else if (m->sort_type == E_SORT_DATE_ASC) {
- /* date asc */
- elm_image_file_set(m->hover_updown, IMAGE_UP_ARR, NULL);
- evas_object_color_set(m->hover_updown, 175, 175, 175, 255);
- elm_object_part_content_unset(m->sortbtn, PART_ELM_SWALLOWICON);
-
- evas_object_show(m->hover_updown);
- elm_object_part_content_set(m->sortbtn, PART_ELM_SWALLOWICON, m->hover_updown);
- } else {
- elm_object_part_content_unset(m->sortbtn, PART_ELM_SWALLOWICON);
- evas_object_hide(m->hover_updown);
- }
- }
-
- public:
- CHandlerHoversel(SGalleryView *ins) : IKeyDownListener(this), IMouseClickedListener(this), IMouseMoveListener(this), IFocusedListener(this), IUnfocusedListener(this) { m = ins; }
-
- virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
- {
- if (strcmp(ev->keyname, KEY_BACK) == 0)
- elm_object_focus_set(m->focused_btn, EINA_TRUE);
- }
- virtual void OnMouseClicked(int id, Evas_Object *obj)
- {
- if (m->sortbtn == obj) {
- m->parent->DrawCtxpopup(sorttext, SORT_TEXT_SIZE,
- STYLE_BTN_HOVERTEXT, m->sort_type,
- POSITION_SORT_POPUP_X, POSITION_SORT_POPUP_Y);
- } else if (m->sourcebtn == obj) {
- m->parent->DrawCtxpopup(sourcetext, SOURCE_TEXT_SIZE,
- STYLE_BTN_HOVERTEXT, m->source_type,
- POSITION_SOURCE_POPUP_X, POSITION_SOURCE_POPUP_Y);
- } else {
- _ERR("No button info");
- return;
- }
- }
- virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
- {
- if (!elm_object_focus_get(obj))
- elm_object_focus_set(obj, EINA_TRUE);
- }
- virtual void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
- {
- elm_object_signal_emit(m->focused_btn, "highlight", "");
-
- if (m->sortbtn == obj)
- m_FocusUpdownArrow();
-
- m->hover_btn = obj;
- m->focus_area = FOCUS_HOVER_BTN;
- }
- virtual void OnUnfocused(int id, Evas_Object *obj, Elm_Object_Item *item)
- {
- if (m->sortbtn == obj)
- m_UnfocusUpdownArrow();
- }
- } *pHandlerSortBtn, *pHandlerSourceBtn;
-
- class CHandlerCtxPopup : public CListenerMgr, IKeyDownListener, IMouseClickedListener, IMouseMoveListener, IFocusedListener, IUnfocusedListener {
- private:
- SGalleryView *m;
-
- private:
- static void sm_SortDateDescClicked(void *cookie)
- {
- CHandlerCtxPopup *root = (CHandlerCtxPopup *)cookie;
-
- if (root)
- root->m_SortLayout(E_SORT_DATE_DESC);
- }
-
- static void sm_SortDateAscClicked(void *cookie)
- {
- CHandlerCtxPopup *root = (CHandlerCtxPopup *)cookie;
-
- if (root)
- root->m_SortLayout(E_SORT_DATE_ASC);
- }
-
- static void sm_SortAZClicked(void *cookie)
- {
- CHandlerCtxPopup *root = (CHandlerCtxPopup *)cookie;
-
- if (root)
- root->m_SortLayout(E_SORT_A_Z);
- }
-
- static void sm_SortZAClicked(void *cookie)
- {
- CHandlerCtxPopup *root = (CHandlerCtxPopup *)cookie;
-
- if (root)
- root->m_SortLayout(E_SORT_Z_A);
- }
-
- static void sm_SourceAllClicked(void *cookie)
- {
- CHandlerCtxPopup *root = (CHandlerCtxPopup *)cookie;
-
- if (root)
- root->m_SourceChange(E_SOURCE_ALL);
- }
-
- static void sm_SourceTVClicked(void *cookie)
- {
- CHandlerCtxPopup *root = (CHandlerCtxPopup *)cookie;
-
- if (root)
- root->m_SourceChange(E_SOURCE_TV);
- }
-
- static void sm_SourceUSBClicked(void *cookie)
- {
- CHandlerCtxPopup *root = (CHandlerCtxPopup *)cookie;
-
- if (root)
- root->m_SourceChange(E_SOURCE_USB);
- }
-
- void m_SortLayout(int sort_type)
- {
- if (m->sort_type == sort_type)
- return;
-
- m->sort_type = sort_type;
-
- switch (m->current_layout) {
- case E_LAYOUT_ALL:
- m->pAllLayout->Sort(m->sort_type);
- break;
- case E_LAYOUT_EVENTS:
- m->pEventLayout->Sort(m->sort_type);
- break;
- case E_LAYOUT_FOLDER:
- m->pFolderLayout->Sort(m->sort_type);
- break;
- default:
- break;
- }
- }
-
- void m_SourceChange(int source_type)
- {
- if (m->source_type == source_type)
- return;
-
- m->source_type = E_SOURCE_ALL;
-
- mediadata_destroy_mediafiles_list(m->media_list);
-
- m->media_list = mediadata_create_mediafiles_list(
- m->source_type, m->arglist->media_type);
- if (!m->media_list)
- return;
-
- m->parent->DrawContentArea(m->current_layout);
- }
-
- public:
- CHandlerCtxPopup(SGalleryView *ins) : IKeyDownListener(this), IMouseClickedListener(this), IMouseMoveListener(this), IFocusedListener(this), IUnfocusedListener(this) { m = ins; }
-
- virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
- {
- if (strcmp(ev->keyname, KEY_BACK) == 0)
- m->parent->DestroyCtxpopup();
- }
- virtual void OnMouseClicked(int id, Evas_Object *obj)
- {
- int i;
- const char *current_id;
- void(*func[])(void *) = {
- sm_SortDateDescClicked,
- sm_SortDateAscClicked,
- sm_SortAZClicked,
- sm_SortZAClicked,
- sm_SourceAllClicked,
- sm_SourceTVClicked,
- sm_SourceUSBClicked
- };
-
- current_id = (const char *)evas_object_data_get(obj, BTN_ID);
- if (!current_id)
- return;
-
- for (i = 0; i < (SORT_TEXT_SIZE + SOURCE_TEXT_SIZE); i++) {
- if (!strcmp(hover_btn_id[i], current_id)) {
- func[i](this);
- break;
- }
- }
-
- elm_object_text_set(m->hover_btn, elm_object_text_get(obj));
-
- m->parent->DestroyCtxpopup();
- }
- virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
- {
- if (!elm_object_focus_get(obj))
- elm_object_focus_set(obj, EINA_TRUE);
- }
- virtual void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
- {
- Evas_Object *ic;
-
- ic = (Evas_Object *)evas_object_data_get(obj, BTN_ICN);
- if (!ic)
- return;
-
- evas_object_color_set(ic, 255, 255, 255, 255);
- }
- virtual void OnUnfocused(int id, Evas_Object *obj, Elm_Object_Item *item)
- {
- const char *current_id;
- Evas_Object *ic;
-
- current_id = (const char *)evas_object_data_get(obj, BTN_ID);
- if (!current_id)
- return;
-
- ic = (Evas_Object *)evas_object_data_get(obj, BTN_ICN);
- if (!ic)
- return;
-
- if (!strcmp(current_id, hover_btn_id[0])) {
- /* date desc */
- if (m->sort_type == E_SORT_DATE_DESC)
- evas_object_color_set(ic, 147, 170, 0, 255);
- else
- evas_object_color_set(ic, 89, 89, 89, 255);
- } else if (!strcmp(current_id, hover_btn_id[1])) {
- /* date asc */
- if (m->sort_type == E_SORT_DATE_ASC)
- evas_object_color_set(ic, 147, 170, 0, 255);
- else
- evas_object_color_set(ic, 89, 89, 89, 255);
- }
- }
- } *pHandlerCtxPopup;
+ ~SGalleryView() {}
};
#if 0
m->transit = transit;
}
+
+void CGalleryView::m_FocusUpdownArrow(void)
+{
+ if (!m->hover_updown)
+ return;
+
+ if (m->sort_type == E_SORT_DATE_DESC) {
+ /* date desc */
+ elm_image_file_set(m->hover_updown, IMAGE_DOWN_ARR, NULL);
+ evas_object_color_set(m->hover_updown, 255, 255, 255, 255);
+ elm_object_part_content_unset(m->sortbtn, PART_ELM_SWALLOWICON);
+
+ evas_object_show(m->hover_updown);
+ elm_object_part_content_set(m->sortbtn,
+ PART_ELM_SWALLOWICON, m->hover_updown);
+ } else if (m->sort_type == E_SORT_DATE_ASC) {
+ /* date asc */
+ elm_image_file_set(m->hover_updown, IMAGE_UP_ARR, NULL);
+ evas_object_color_set(m->hover_updown, 255, 255, 255, 255);
+ elm_object_part_content_unset(m->sortbtn, PART_ELM_SWALLOWICON);
+
+ evas_object_show(m->hover_updown);
+ elm_object_part_content_set(m->sortbtn,
+ PART_ELM_SWALLOWICON, m->hover_updown);
+ } else {
+ elm_object_part_content_unset(m->sortbtn, PART_ELM_SWALLOWICON);
+ evas_object_hide(m->hover_updown);
+ }
+}
+
+void CGalleryView::m_UnfocusUpdownArrow(void)
+{
+ if (!m->hover_updown)
+ return;
+
+ if (m->sort_type == E_SORT_DATE_DESC) {
+ /* date desc */
+ elm_image_file_set(m->hover_updown, IMAGE_DOWN_ARR, NULL);
+ evas_object_color_set(m->hover_updown, 175, 175, 175, 255);
+ elm_object_part_content_unset(m->sortbtn, PART_ELM_SWALLOWICON);
+
+ evas_object_show(m->hover_updown);
+ elm_object_part_content_set(m->sortbtn,
+ PART_ELM_SWALLOWICON, m->hover_updown);
+
+ } else if (m->sort_type == E_SORT_DATE_ASC) {
+ /* date asc */
+ elm_image_file_set(m->hover_updown, IMAGE_UP_ARR, NULL);
+ evas_object_color_set(m->hover_updown, 175, 175, 175, 255);
+ elm_object_part_content_unset(m->sortbtn, PART_ELM_SWALLOWICON);
+
+ evas_object_show(m->hover_updown);
+ elm_object_part_content_set(m->sortbtn, PART_ELM_SWALLOWICON, m->hover_updown);
+ } else {
+ elm_object_part_content_unset(m->sortbtn, PART_ELM_SWALLOWICON);
+ evas_object_hide(m->hover_updown);
+ }
+}
+
+void CGalleryView::sm_CbSortDateDescClicked(void *cookie)
+{
+ CGalleryView *m = (CGalleryView *)cookie;
+
+ m->m_SortLayout(E_SORT_DATE_DESC);
+}
+
+void CGalleryView::sm_CbSortDateAscClicked(void *cookie)
+{
+ CGalleryView *m = (CGalleryView *)cookie;
+
+ m->m_SortLayout(E_SORT_DATE_ASC);
+}
+
+void CGalleryView::sm_CbSortAZClicked(void *cookie)
+{
+ CGalleryView *m = (CGalleryView *)cookie;
+
+ m->m_SortLayout(E_SORT_A_Z);
+}
+
+void CGalleryView::sm_CbSortZAClicked(void *cookie)
+{
+ CGalleryView *m = (CGalleryView *)cookie;
+
+ m->m_SortLayout(E_SORT_Z_A);
+}
+
+void CGalleryView::sm_CbSourceAllClicked(void *cookie)
+{
+ CGalleryView *m = (CGalleryView *)cookie;
+
+ m->m_SourceChange(E_SOURCE_ALL);
+}
+
+void CGalleryView::sm_CbSourceTVClicked(void *cookie)
+{
+ CGalleryView *m = (CGalleryView *)cookie;
+
+ m->m_SourceChange(E_SOURCE_TV);
+}
+
+void CGalleryView::sm_CbSourceUSBClicked(void *cookie)
+{
+ CGalleryView *m = (CGalleryView *)cookie;
+
+ m->m_SourceChange(E_SOURCE_USB);
+}
+
+void CGalleryView::m_SortLayout(int sort_type)
+{
+ if (m->sort_type == sort_type)
+ return;
+
+ m->sort_type = sort_type;
+
+ switch (m->current_layout) {
+ case E_LAYOUT_ALL:
+ m->pAllLayout->Sort(m->sort_type);
+ break;
+ case E_LAYOUT_EVENTS:
+ m->pEventLayout->Sort(m->sort_type);
+ break;
+ case E_LAYOUT_FOLDER:
+ m->pFolderLayout->Sort(m->sort_type);
+ break;
+ default:
+ break;
+ }
+}
+
+void CGalleryView::m_SourceChange(int source_type)
+{
+ if (m->source_type == source_type)
+ return;
+
+ m->source_type = source_type;
+
+ mediadata_destroy_mediafiles_list(m->media_list);
+
+ m->media_list = mediadata_create_mediafiles_list(
+ m->source_type, m->arglist->media_type);
+ if (!m->media_list)
+ return;
+
+ m_DrawContentArea(m->current_layout);
+}
+
void CGalleryView::m_AddUpdownIcon(Evas_Object *btn, const char *icon_file)
{
Evas_Object *ic;
if (!m->hover_updown)
return NULL;
- m->pHandlerSortBtn->Connect(hoversel);
+ Connect(hoversel, GALLERY_SORTBTN,
+ TYPE_KEY_DOWN | TYPE_CLICKED |
+ TYPE_MOUSE_MOVE | TYPE_FOCUSED |
+ TYPE_UNFOCUSED);
/* Calling first time to show icon */
- m->pHandlerSortBtn->OnUnfocused(0, hoversel, NULL);
+ OnUnfocused(GALLERY_SORTBTN, hoversel, NULL);
} else {
elm_object_text_set(hoversel, _(text_arr[m->source_type]));
- m->pHandlerSourceBtn->Connect(hoversel);
+ Connect(hoversel, GALLERY_SOURCEBTN,
+ TYPE_KEY_DOWN | TYPE_CLICKED |
+ TYPE_MOUSE_MOVE | TYPE_FOCUSED |
+ TYPE_UNFOCUSED);
}
evas_object_show(hoversel);
elm_box_pack_end(box, m->btn[i]);
- m->pHandlerMenuBtn->Connect(m->btn[i]);
+ Connect(m->btn[i], GALLERY_MENU,
+ TYPE_KEY_DOWN | TYPE_MOUSE_MOVE | TYPE_FOCUSED);
evas_object_show(m->btn[i]);
return true;
}
-void CGalleryView::DrawContentArea(int ltype)
+void CGalleryView::m_DrawContentArea(int ltype)
{
Eina_List *arg;
}
}
-void CGalleryView::FocusLayout(void)
+void CGalleryView::m_FocusLayout(void)
{
switch (m->current_layout) {
case E_LAYOUT_ALL:
}
}
-void CGalleryView::DestroyCtxpopup(void)
+void CGalleryView::m_DestroyCtxpopup(void)
{
if (!m->ctxpopup)
return;
m->ctxpopup = NULL;
}
-void CGalleryView::DrawCtxpopup(const char **text_arr, int size_arr,
+void CGalleryView::m_DrawCtxpopup(const char **text_arr, int size_arr,
const char *style, int selected_index, int position_x, int position_y)
{
Evas_Object *ctxpopup, *box, *btn = NULL;
elm_object_style_set(btn, style);
elm_object_text_set(btn, _(text_arr[i]));
- m->pHandlerCtxPopup->Connect(btn);
+ Connect(btn, GALLERY_CTXPOPUP,
+ TYPE_KEY_DOWN | TYPE_CLICKED |
+ TYPE_MOUSE_MOVE | TYPE_FOCUSED |
+ TYPE_UNFOCUSED);
if (text_arr == sourcetext)
evas_object_data_set(btn, BTN_ID,
m_AddUpdownIcon(btn, IMAGE_UP_ARR);
/* Calling first time to show icon */
- m->pHandlerCtxPopup->OnUnfocused(0, btn, NULL);
+ OnUnfocused(GALLERY_SORTBTN, btn, NULL);
}
}
goto error;
}
- m->parent = this;
-
m->pAllLayout = new CAllLayout(LAYOUT_ALL);
m->pAllLayout->Create(m->pLayoutMgr, m->ld);
m->pAllLayout->SetHideCallback(sm_CbAllLayoutHide, m);
ASSERT(m);
if (m->ctxpopup)
- DestroyCtxpopup();
+ m_DestroyCtxpopup();
}
void CGalleryView::t_OnResume(void)
elm_object_focus_set(m->hover_btn, EINA_TRUE);
break;
case FOCUS_CONTENT_AREA:
- FocusLayout();
+ m_FocusLayout();
+ break;
+ default:
+ break;
+ }
+}
+
+void CGalleryView::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
+{
+ switch (id) {
+ case GALLERY_MENU:
+ if (strcmp(ev->keyname, KEY_RIGHT) == 0 ||
+ strcmp(ev->keyname, KEY_ENTER) == 0) {
+ m_FocusLayout();
+
+ elm_object_signal_emit(obj, "highlight", "");
+
+ m->focused_btn = obj;
+ m->focus_area = FOCUS_CONTENT_AREA;
+ } else if (strcmp(ev->keyname, KEY_BACK) == 0) {
+ elm_exit();
+ }
+ break;
+ case GALLERY_SORTBTN:
+ case GALLERY_SOURCEBTN:
+ if (strcmp(ev->keyname, KEY_BACK) == 0)
+ elm_object_focus_set(m->focused_btn, EINA_TRUE);
+ break;
+ case GALLERY_CTXPOPUP:
+ if (strcmp(ev->keyname, KEY_BACK) == 0)
+ m_DestroyCtxpopup();
+ break;
+ default:
+ break;
+ }
+}
+
+void CGalleryView::OnMouseClicked(int id, Evas_Object *obj)
+{
+ switch (id) {
+ case GALLERY_SORTBTN:
+ m_DrawCtxpopup(sorttext, SORT_TEXT_SIZE,
+ STYLE_BTN_HOVERTEXT, m->sort_type,
+ POSITION_SORT_POPUP_X, POSITION_SORT_POPUP_Y);
+ break;
+ case GALLERY_SOURCEBTN:
+ m_DrawCtxpopup(sourcetext, SOURCE_TEXT_SIZE,
+ STYLE_BTN_HOVERTEXT, m->source_type,
+ POSITION_SOURCE_POPUP_X, POSITION_SOURCE_POPUP_Y);
+ break;
+ case GALLERY_CTXPOPUP:
+ {
+ int i;
+ const char *current_id;
+ void(*func[])(void *) = {
+ sm_CbSortDateDescClicked,
+ sm_CbSortDateAscClicked,
+ sm_CbSortAZClicked,
+ sm_CbSortZAClicked,
+ sm_CbSourceAllClicked,
+ sm_CbSourceTVClicked,
+ sm_CbSourceUSBClicked
+ };
+
+ current_id = (const char *)evas_object_data_get(obj, BTN_ID);
+ if (!current_id)
+ return;
+
+ for (i = 0; i < (SORT_TEXT_SIZE + SOURCE_TEXT_SIZE); i++) {
+ if (!strcmp(hover_btn_id[i], current_id)) {
+ func[i](this);
+ break;
+ }
+ }
+
+ elm_object_text_set(m->hover_btn, elm_object_text_get(obj));
+
+ m_DestroyCtxpopup();
+
+ break;
+ }
+ default:
+ break;
+ }
+}
+
+void CGalleryView::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
+{
+ switch (id) {
+ case GALLERY_MENU:
+ case GALLERY_SORTBTN:
+ case GALLERY_SOURCEBTN:
+ case GALLERY_CTXPOPUP:
+ if (!elm_object_focus_get(obj))
+ elm_object_focus_set(obj, EINA_TRUE);
+ break;
+ default:
+ break;
+ }
+}
+
+void CGalleryView::OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case GALLERY_MENU:
+ int i;
+
+ m->focus_area = FOCUS_MENU_BTN;
+
+ if (m->focused_btn == obj)
+ return;
+
+ if (m->focused_btn)
+ elm_object_signal_emit(m->focused_btn, "unhighlight", "");
+
+ for (i = E_LAYOUT_ALL; i < E_LAYOUT_MAX; i++) {
+ if (m->btn[i] == obj)
+ break;
+ }
+
+ m->focused_btn = obj;
+
+ m_DrawContentArea(i);
+
+ break;
+ case GALLERY_SORTBTN:
+ case GALLERY_SOURCEBTN:
+ elm_object_signal_emit(m->focused_btn, "highlight", "");
+
+ if (m->sortbtn == obj)
+ m_FocusUpdownArrow();
+
+ m->hover_btn = obj;
+ m->focus_area = FOCUS_HOVER_BTN;
+
+ break;
+ case GALLERY_CTXPOPUP:
+ Evas_Object *ic;
+
+ ic = (Evas_Object *)evas_object_data_get(obj, BTN_ICN);
+ if (!ic)
+ return;
+
+ evas_object_color_set(ic, 255, 255, 255, 255);
+
+ break;
+ default:
+ break;
+ }
+}
+
+void CGalleryView::OnUnfocused(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case GALLERY_CTXPOPUP:
+ const char *current_id;
+ Evas_Object *ic;
+
+ current_id = (const char *)evas_object_data_get(obj, BTN_ID);
+ if (!current_id)
+ return;
+
+ ic = (Evas_Object *)evas_object_data_get(obj, BTN_ICN);
+ if (!ic)
+ return;
+
+ if (!strcmp(current_id, hover_btn_id[0])) {
+ /* date desc */
+ if (m->sort_type == E_SORT_DATE_DESC)
+ evas_object_color_set(ic, 147, 170, 0, 255);
+ else
+ evas_object_color_set(ic, 89, 89, 89, 255);
+ } else if (!strcmp(current_id, hover_btn_id[1])) {
+ /* date asc */
+ if (m->sort_type == E_SORT_DATE_ASC)
+ evas_object_color_set(ic, 147, 170, 0, 255);
+ else
+ evas_object_color_set(ic, 89, 89, 89, 255);
+ }
+
break;
default:
break;
#include "menudef.h"
#include "BaseView.h"
#include "ViewMgr.h"
+#include "InputHandler.h"
#include "LayoutMgr.h"
#include "BaseLayout.h"
-#include "gallery_view.h"
#include "video_player.h"
#include "gallery_view.h"
#include "layout_all.h"
#include "layout_events.h"
#include "layout_folder.h"
#include "AppCommon.h"
-#include "InputHandler.h"
+
+#define ALL_GRID 0
struct SHideCallbackPair {
void(*cb)(void *cookie);
HideCb = NULL;
Sigcb = NULL;
-
- pHandlerGrid = new CHandlerGrid(this);
- }
-
- ~SAllLayout() {
- delete pHandlerGrid;
}
- class CHandlerGrid : public CListenerMgr, IKeyDownListener, IMouseMoveListener, IRealizedListener, IUnrealizedListener, IFocusedListener {
- private:
- SAllLayout *m;
-
- private:
- void m_SendResultToApp(const char *filepath)
- {
- service_h reply = NULL;
- service_h service;
- int service_ret = -1;
-
- if (!filepath)
- return;
-
- if (service_create(&reply) != SERVICE_ERROR_NONE) {
- _ERR("service_create failed");
- return;
- }
-
- service = m->arglist->service;
-
- service_add_extra_data(reply, SERVICE_DATA_SELECTED, filepath);
- if (!reply)
- return;
-
- service_ret = service_reply_to_launch_request(reply, service,
- SERVICE_RESULT_SUCCEEDED);
- if (service_ret != SERVICE_ERROR_NONE) {
- _ERR("service_reply_to_launch_request failed");
- service_reply_to_launch_request(reply, service,
- SERVICE_RESULT_CANCELED);
- }
-
- service_destroy(reply);
- elm_exit();
- }
- void m_CreateCtxtMenu(void)
- {
- struct mediadata *md;
- struct view_data *vd;
- Elm_Object_Item *it;
-
- it = m->current_item;
-
- md = (struct mediadata *)elm_object_item_data_get(it);
- if (!md)
- return;
-
- vd = (struct view_data *)calloc(1, sizeof(*vd));
- if (!vd)
- return;
-
- vd->media_list = m->media_list;
- vd->md = md;
-
- CViewMgr::GetInstance()->PushView(VIEW_CTXT_MENU, vd);
- }
- static void sm_CbGridActivated(void *cookie, Elm_Object_Item *it, const char *emission, const char *source)
- {
- CHandlerGrid *root = (CHandlerGrid *)cookie;
- if (root)
- root->OnGridActivated(it, emission, source);
- }
- static void sm_CbGridItemFocused(void *cookie, Elm_Object_Item *it, const char *emission, const char *source)
- {
- CHandlerGrid *root = (CHandlerGrid *)cookie;
- if (root)
- root->OnGridItemFocused(it, emission, source);
- }
- void OnGridItemFocused(Elm_Object_Item *it, const char *emission, const char *source)
- {
- if (!it)
- return;
-
- m->current_item = (Elm_Object_Item *)it;
- }
-
- public:
- CHandlerGrid(SAllLayout *ins) : IKeyDownListener(this), IMouseMoveListener(this), IRealizedListener(this), IUnrealizedListener(this), IFocusedListener(this) { m = ins; }
-
- virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
- {
- CEventLayout *pEventLayout;
- CFolderLayout *pFolderLayout;
-
- if (strcmp(ev->keyname, KEY_BACK) == 0) {
- switch (m->ld->prev_layout) {
- case E_LAYOUT_NONE:
- m->Sigcb->cb(m->Sigcb->cookie, E_RETURN);
- break;
- case E_LAYOUT_EVENTS:
- m->ld->modified = EINA_FALSE;
- m->pLayoutMgr->Show(layout_type[E_LAYOUT_EVENTS]);
-
- pEventLayout = (CEventLayout *)m->pLayoutMgr->Layout();
- pEventLayout->Focus();
-
- break;
- case E_LAYOUT_FOLDER:
- m->ld->modified = EINA_FALSE;
- m->pLayoutMgr->Show(layout_type[E_LAYOUT_FOLDER]);
-
- pFolderLayout = (CFolderLayout *)m->pLayoutMgr->Layout();
- pFolderLayout->Focus();
-
- break;
- default:
- break;
- }
- } else if (strcmp(ev->keyname, KEY_MENU) == 0)
- m_CreateCtxtMenu();
- }
- virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
- {
- 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);
- }
- virtual void OnRealized(int id, Evas_Object *obj, Elm_Object_Item *item)
- {
- elm_object_item_signal_callback_add(item, "item_clicked",
- "edc", sm_CbGridActivated, this);
- elm_object_item_signal_callback_add(item, "item_focused",
- "edc", sm_CbGridItemFocused, this);
- }
- virtual void OnUnrealized(int id, Evas_Object *obj, Elm_Object_Item *item)
- {
- elm_object_item_signal_callback_del(item, "item_clicked",
- "edc", sm_CbGridActivated);
- elm_object_item_signal_callback_del(item, "item_focused",
- "edc", sm_CbGridItemFocused);
- }
- virtual void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
- {
- m->current_item = item;
-
- m->Sigcb->cb(m->Sigcb->cookie, E_HIGHLIGHT);
- }
- void OnGridActivated(Elm_Object_Item *it, const char *emission, const char *source)
- {
- struct mediadata *md;
- struct view_data *vd;
- int type;
-
- if (!it)
- return;
-
- md = (struct mediadata *)elm_object_item_data_get(it);
- if (!md)
- return;
-
- type = mediadata_get_type(md);
-
- /* operation is pick */
- if (m->arglist->media_type != E_MEDIA_IMAGE_VIDEO)
- m_SendResultToApp(mediadata_get_filepath(md));
- else {
- vd = (struct view_data *)calloc(1, sizeof(*vd));
- if (!vd)
- return;
-
- vd->media_list = util_create_media_list(m->media_list, type);
- vd->md = md;
-
- if (type == MEDIA_VIDEO)
- video_player_play(vd);
- else if (type == MEDIA_IMAGE)
- CViewMgr::GetInstance()->PushView(VIEW_PHOTO_VIEWER, vd);
- else {
- _ERR("wrong media type");
- free(vd);
- return;
- }
- }
-
- m->current_item = it;
-
- elm_gengrid_item_selected_set(it, EINA_FALSE);
- }
- } *pHandlerGrid;
+ ~SAllLayout() {}
};
char *CAllLayout::sm_CbGridTextGet(void *data, Evas_Object *obj, const char *part)
return ic;
}
+void CAllLayout::m_SendResultToApp(const char *filepath)
+{
+ service_h reply = NULL;
+ service_h service;
+ int service_ret = -1;
+
+ if (!filepath)
+ return;
+
+ if (service_create(&reply) != SERVICE_ERROR_NONE) {
+ _ERR("service_create failed");
+ return;
+ }
+
+ service = m->arglist->service;
+
+ service_add_extra_data(reply, SERVICE_DATA_SELECTED, filepath);
+ if (!reply)
+ return;
+
+ service_ret = service_reply_to_launch_request(reply, service,
+ SERVICE_RESULT_SUCCEEDED);
+ if (service_ret != SERVICE_ERROR_NONE) {
+ _ERR("service_reply_to_launch_request failed");
+ service_reply_to_launch_request(reply, service,
+ SERVICE_RESULT_CANCELED);
+ }
+
+ service_destroy(reply);
+ elm_exit();
+}
+
+void CAllLayout::m_CreateCtxtMenu(void)
+{
+ struct mediadata *md;
+ struct view_data *vd;
+ Elm_Object_Item *it;
+
+ it = m->current_item;
+
+ md = (struct mediadata *)elm_object_item_data_get(it);
+ if (!md)
+ return;
+
+ vd = (struct view_data *)calloc(1, sizeof(*vd));
+ if (!vd)
+ return;
+
+ vd->media_list = m->media_list;
+ vd->md = md;
+
+ CViewMgr::GetInstance()->PushView(VIEW_CTXT_MENU, vd);
+}
+
+void CAllLayout::sm_CbGridActivated(void *cookie, Elm_Object_Item *it,
+ const char *emission, const char *source)
+{
+ CAllLayout *m = (CAllLayout *)cookie;
+
+ m->m_OnGridActivated(it, emission, source);
+}
+
+void CAllLayout::m_OnGridActivated(Elm_Object_Item *it,
+ const char *emission, const char *source)
+{
+ struct mediadata *md;
+ struct view_data *vd;
+ int type;
+
+ if (!it)
+ return;
+
+ md = (struct mediadata *)elm_object_item_data_get(it);
+ if (!md)
+ return;
+
+ type = mediadata_get_type(md);
+
+ /* operation is pick */
+ if (m->arglist->media_type != E_MEDIA_IMAGE_VIDEO)
+ m_SendResultToApp(mediadata_get_filepath(md));
+ else {
+ vd = (struct view_data *)calloc(1, sizeof(*vd));
+ if (!vd)
+ return;
+
+ vd->media_list = util_create_media_list(m->media_list, type);
+ vd->md = md;
+
+ if (type == MEDIA_VIDEO)
+ video_player_play(vd);
+ else if (type == MEDIA_IMAGE)
+ CViewMgr::GetInstance()->PushView(VIEW_PHOTO_VIEWER, vd);
+ else {
+ _ERR("wrong media type");
+ free(vd);
+ return;
+ }
+ }
+
+ m->current_item = it;
+
+ elm_gengrid_item_selected_set(it, EINA_FALSE);
+}
+
+void CAllLayout::sm_CbGridItemFocused(void *cookie, Elm_Object_Item *it,
+ const char *emission, const char *source)
+{
+ CAllLayout *m = (CAllLayout *)cookie;
+
+ m->m_OnGridItemFocused(it, emission, source);
+}
+
+void CAllLayout::m_OnGridItemFocused(Elm_Object_Item *it,
+ const char *emission, const char *source)
+{
+ if (!it)
+ return;
+
+ m->current_item = (Elm_Object_Item *)it;
+}
+
Evas_Object *CAllLayout::m_DrawGengrid(Evas_Object *layout)
{
Evas_Object *grid;
elm_config_scale_get() * GENGRID_ITEM_SIZE_W,
elm_config_scale_get() * GENGRID_ITEM_SIZE_H);
- m->pHandlerGrid->Connect(grid);
+ Connect(grid, ALL_GRID, TYPE_KEY_DOWN | TYPE_MOUSE_MOVE |
+ TYPE_REALIZED | TYPE_UNREALIZED | TYPE_FOCUSED);
return grid;
}
elm_object_focus_set(m->grid, EINA_TRUE);
elm_object_item_focus_set(it, EINA_TRUE);
m->Sigcb->cb(m->Sigcb->cookie, E_HIGHLIGHT);
- m->pHandlerGrid->OnGridActivated(it, NULL, NULL);
+ m_OnGridActivated(it, NULL, NULL);
}
}
elm_object_part_content_set(layout, PART_CONTENTAREA, m->grid);
+ m->current_item = elm_gengrid_first_item_get(m->grid);
+
if (ld->path) {
buf = ld->path;
elm_object_part_text_set(layout,
free(m);
m = NULL;
}
+
+void CAllLayout::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
+{
+ switch (id) {
+ case ALL_GRID:
+ CEventLayout *pEventLayout;
+ CFolderLayout *pFolderLayout;
+
+ if (strcmp(ev->keyname, KEY_BACK) == 0) {
+ switch (m->ld->prev_layout) {
+ case E_LAYOUT_NONE:
+ m->Sigcb->cb(m->Sigcb->cookie, E_RETURN);
+ break;
+ case E_LAYOUT_EVENTS:
+ m->ld->modified = EINA_FALSE;
+ m->pLayoutMgr->Show(layout_type[E_LAYOUT_EVENTS]);
+
+ pEventLayout = (CEventLayout *)m->pLayoutMgr->Layout();
+ pEventLayout->Focus();
+
+ break;
+ case E_LAYOUT_FOLDER:
+ m->ld->modified = EINA_FALSE;
+ m->pLayoutMgr->Show(layout_type[E_LAYOUT_FOLDER]);
+
+ pFolderLayout = (CFolderLayout *)m->pLayoutMgr->Layout();
+ pFolderLayout->Focus();
+
+ break;
+ default:
+ break;
+ }
+ } else if (strcmp(ev->keyname, KEY_MENU) == 0)
+ m_CreateCtxtMenu();
+
+ break;
+ default:
+ break;
+ }
+}
+
+void CAllLayout::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
+{
+ switch (id) {
+ case ALL_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);
+
+ break;
+ default:
+ break;
+ }
+}
+
+void CAllLayout::OnRealized(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case ALL_GRID:
+ elm_object_item_signal_callback_add(item, "item_clicked",
+ "edc", sm_CbGridActivated, this);
+ elm_object_item_signal_callback_add(item, "item_focused",
+ "edc", sm_CbGridItemFocused, this);
+ break;
+ default:
+ break;
+ }
+}
+
+void CAllLayout::OnUnrealized(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case ALL_GRID:
+ elm_object_item_signal_callback_del(item, "item_clicked",
+ "edc", sm_CbGridActivated);
+ elm_object_item_signal_callback_del(item, "item_focused",
+ "edc", sm_CbGridItemFocused);
+ break;
+ default:
+ break;
+ }
+}
+
+void CAllLayout::OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case ALL_GRID:
+ m->Sigcb->cb(m->Sigcb->cookie, E_HIGHLIGHT);
+ break;
+ default:
+ break;
+ }
+}
+
#include "menudef.h"
#include "BaseView.h"
#include "ViewMgr.h"
+#include "InputHandler.h"
#include "video_player.h"
#include "BaseLayout.h"
#include "LayoutMgr.h"
#include "layout_all.h"
#include "layout_events.h"
#include "AppCommon.h"
-#include "InputHandler.h"
+
+#define EVENT_GRID 0
struct SFocusCallbackPair {
void (*cb)(void *cookie);
FocusCb = NULL;
SortCb = NULL;
Sigcb = NULL;
-
- pHandlerGrid = new CHandlerGrid(this);
- }
-
- ~SEventLayout() {
- delete pHandlerGrid;
}
- class CHandlerGrid : public CListenerMgr, IKeyDownListener, IMouseMoveListener, IRealizedListener, IUnrealizedListener, IFocusedListener {
- private:
- SEventLayout *m;
-
- private:
- static void sm_CbGridActivated(void *cookie, Elm_Object_Item *it, const char *emission, const char *source)
- {
- CHandlerGrid *root = (CHandlerGrid *)cookie;
- if (root)
- root->OnGridActivated(it, emission, source);
- }
-
- public:
- CHandlerGrid(SEventLayout *ins) : IKeyDownListener(this), IMouseMoveListener(this), IRealizedListener(this), IUnrealizedListener(this), IFocusedListener(this) { m = ins; }
-
- virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
- {
- if (strcmp(ev->keyname, KEY_BACK) == 0)
- m->Sigcb->cb(m->Sigcb->cookie, E_RETURN);
- }
- virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
- {
- 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);
- }
- virtual void OnRealized(int id, Evas_Object *obj, Elm_Object_Item *item)
- {
- elm_object_item_signal_callback_add(item, "item_clicked",
- "edc", sm_CbGridActivated, this);
- }
- virtual void OnUnrealized(int id, Evas_Object *obj, Elm_Object_Item *item)
- {
- elm_object_item_signal_callback_del(item, "item_clicked",
- "edc", sm_CbGridActivated);
- }
- virtual void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
- {
- m->current_item = item;
-
- m->Sigcb->cb(m->Sigcb->cookie, E_HIGHLIGHT);
- }
- void OnGridActivated(Elm_Object_Item *it, const char *emission, const char *source)
- {
- struct mediadata *md;
- struct eventdata *ed;
- int type;
- struct view_data *vd;
- char buf[256];
-
- if (!it)
- return;
-
- ed = (struct eventdata *)elm_object_item_data_get(it);
- if (!ed)
- return;
-
- if (eventdata_get_type(ed) == E_TYPE_EVENT_NO_INFO) {
- md = eventdata_get_mediadata(ed);
- if (!md)
- return;
-
- type = mediadata_get_type(md);
-
- vd = (struct view_data *)calloc(1, sizeof(*vd));
- if (!vd)
- return;
-
- vd->media_list = util_create_media_list(m->media_list, type);
- vd->md = md;
-
- if (type == MEDIA_VIDEO)
- video_player_play(vd);
- else if (type == MEDIA_IMAGE)
- CViewMgr::GetInstance()->PushView(VIEW_PHOTO_VIEWER, vd);
- else {
- _ERR("wrong media type");
- free(vd);
- return;
- }
- } else {
- /* TODO: Launch next view as per GUI specs */
- snprintf(buf, sizeof(buf), "< %s", eventdata_get_eventname(ed));
-
- m->ld->media_list = eventdata_get_listinfo(ed);
- m->ld->arglist = m->arglist;
- m->ld->path = strdup(buf);
- m->ld->sort = m->sort;
- m->ld->prev_layout = E_LAYOUT_EVENTS;
- m->ld->modified = EINA_TRUE;
-
- m->pLayoutMgr->Show(layout_type[E_LAYOUT_ALL]);
- m->layout_2ndview = EINA_TRUE;
-
- m->FocusCb->cb(m->FocusCb->cookie);
-
- m->current_item = it;
- }
-
- elm_gengrid_item_selected_set(it, EINA_FALSE);
- }
- } *pHandlerGrid;
+ ~SEventLayout() {}
};
char *CEventLayout::sm_CbGridTextGet(void *data, Evas_Object *obj, const char *part)
return ic;
}
+void CEventLayout::sm_CbGridActivated(void *cookie, Elm_Object_Item *it,
+ const char *emission, const char *source)
+{
+ CEventLayout *m = (CEventLayout *)cookie;
+
+ m->m_OnGridActivated(it, emission, source);
+}
+
+void CEventLayout::m_OnGridActivated(Elm_Object_Item *it,
+ const char *emission, const char *source)
+{
+ struct mediadata *md;
+ struct eventdata *ed;
+ int type;
+ struct view_data *vd;
+ char buf[256];
+
+ if (!it)
+ return;
+
+ ed = (struct eventdata *)elm_object_item_data_get(it);
+ if (!ed)
+ return;
+
+ if (eventdata_get_type(ed) == E_TYPE_EVENT_NO_INFO) {
+ md = eventdata_get_mediadata(ed);
+ if (!md)
+ return;
+
+ type = mediadata_get_type(md);
+
+ vd = (struct view_data *)calloc(1, sizeof(*vd));
+ if (!vd)
+ return;
+
+ vd->media_list = util_create_media_list(m->media_list, type);
+ vd->md = md;
+
+ if (type == MEDIA_VIDEO)
+ video_player_play(vd);
+ else if (type == MEDIA_IMAGE)
+ CViewMgr::GetInstance()->PushView(VIEW_PHOTO_VIEWER, vd);
+ else {
+ _ERR("wrong media type");
+ free(vd);
+ return;
+ }
+ } else {
+ /* TODO: Launch next view as per GUI specs */
+ snprintf(buf, sizeof(buf), "< %s", eventdata_get_eventname(ed));
+
+ m->ld->media_list = eventdata_get_listinfo(ed);
+ m->ld->arglist = m->arglist;
+ m->ld->path = strdup(buf);
+ m->ld->sort = m->sort;
+ m->ld->prev_layout = E_LAYOUT_EVENTS;
+ m->ld->modified = EINA_TRUE;
+
+ m->pLayoutMgr->Show(layout_type[E_LAYOUT_ALL]);
+ m->layout_2ndview = EINA_TRUE;
+
+ m->FocusCb->cb(m->FocusCb->cookie);
+
+ m->current_item = it;
+ }
+
+ elm_gengrid_item_selected_set(it, EINA_FALSE);
+}
+
+void CEventLayout::sm_CbGridItemFocused(void *cookie, Elm_Object_Item *it,
+ const char *emission, const char *source)
+{
+ CEventLayout *m = (CEventLayout *)cookie;
+
+ m->m_OnGridItemFocused(it, emission, source);
+}
+
+void CEventLayout::m_OnGridItemFocused(Elm_Object_Item *it,
+ const char *emission, const char *source)
+{
+ if (!it)
+ return;
+
+ m->current_item = (Elm_Object_Item *)it;
+}
+
int CEventLayout::m_GetEventCount(Eina_List *event_list)
{
Eina_List *l;
elm_config_scale_get() * GENGRID_ITEM_SIZE_W,
elm_config_scale_get() * GENGRID_ITEM_SIZE_H);
- m->pHandlerGrid->Connect(grid);
+ Connect(grid, EVENT_GRID, TYPE_KEY_DOWN | TYPE_MOUSE_MOVE
+ | TYPE_REALIZED | TYPE_UNREALIZED | TYPE_FOCUSED);
return grid;
}
elm_gengrid_item_bring_in(it, ELM_GENGRID_ITEM_SCROLLTO_MIDDLE);
elm_object_focus_set(m->grid, EINA_TRUE);
elm_object_item_focus_set(it, EINA_TRUE);
- m->pHandlerGrid->OnGridActivated(it, NULL, NULL);
+ m_OnGridActivated(it, NULL, NULL);
}
}
elm_object_part_content_set(layout, PART_CONTENTAREA, m->grid);
+ m->current_item = elm_gengrid_first_item_get(m->grid);
+
CBaseLayout::Create(layout);
return true;
elm_object_part_content_unset(m->base, PART_CONTENTAREA);
}
+
+void CEventLayout::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
+{
+ switch (id) {
+ case EVENT_GRID:
+ if (strcmp(ev->keyname, KEY_BACK) == 0)
+ m->Sigcb->cb(m->Sigcb->cookie, E_RETURN);
+ break;
+ default:
+ break;
+ }
+}
+
+void CEventLayout::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
+{
+ switch (id) {
+ case EVENT_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);
+
+ break;
+ default:
+ break;
+ }
+}
+
+void CEventLayout::OnRealized(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case EVENT_GRID:
+ elm_object_item_signal_callback_add(item, "item_clicked",
+ "edc", sm_CbGridActivated, this);
+ elm_object_item_signal_callback_add(item, "item_focused",
+ "edc", sm_CbGridItemFocused, this);
+ break;
+ default:
+ break;
+ }
+}
+
+void CEventLayout::OnUnrealized(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case EVENT_GRID:
+ elm_object_item_signal_callback_del(item, "item_clicked",
+ "edc", sm_CbGridActivated);
+ elm_object_item_signal_callback_del(item, "item_focused",
+ "edc", sm_CbGridItemFocused);
+ break;
+ default:
+ break;
+ }
+}
+
+void CEventLayout::OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case EVENT_GRID:
+ m->Sigcb->cb(m->Sigcb->cookie, E_HIGHLIGHT);
+ break;
+ default:
+ break;
+ }
+}
#include "ViewMgr.h"
#include "BaseLayout.h"
#include "LayoutMgr.h"
+#include "InputHandler.h"
#include "layout_all.h"
#include "layout_folder.h"
#include "gallery_view.h"
#include "AppCommon.h"
-#include "InputHandler.h"
+
+#define FOLDER_GRID 0
struct SFocusCallbackPair {
void (*cb)(void *cookie);
FocusCb = NULL;
SortCb = NULL;
Sigcb = NULL;
-
- pHandlerGrid = new CHandlerGrid(this);
}
- ~SFolderLayout() {
- delete pHandlerGrid;
- }
-
- class CHandlerGrid : public CListenerMgr, IKeyDownListener, IMouseMoveListener, IRealizedListener, IUnrealizedListener, IFocusedListener {
- private:
- SFolderLayout *m;
-
- private:
- static void sm_CbGridActivated(void *cookie, Elm_Object_Item *it, const char *emission, const char *source)
- {
- CHandlerGrid *root = (CHandlerGrid *)cookie;
- if (root)
- root->OnGridActivated(it, emission, source);
- }
- void OnGridActivated(Elm_Object_Item *it, const char *emission, const char *source)
- {
- struct folderdata *fd;
- char buf[256];
-
- fd = (struct folderdata *)elm_object_item_data_get(it);
- if (!fd)
- return;
-
- snprintf(buf, sizeof(buf), "< %s", folderdata_get_name(fd));
-
- m->ld->media_list = folderdata_get_listinfo(fd);
- m->ld->arglist = m->arglist;
- m->ld->path = strdup(buf);
- m->ld->sort = m->sort;
- m->ld->prev_layout = E_LAYOUT_FOLDER;
- m->ld->modified = EINA_TRUE;
-
- m->pLayoutMgr->Show(layout_type[E_LAYOUT_ALL]);
- m->layout_2ndview = EINA_TRUE;
-
- m->FocusCb->cb(m->FocusCb->cookie);
-
- m->current_item = it;
-
- elm_gengrid_item_selected_set(it, EINA_FALSE);
- }
-
- public:
- CHandlerGrid(SFolderLayout *ins) : IKeyDownListener(this), IMouseMoveListener(this), IRealizedListener(this), IUnrealizedListener(this), IFocusedListener(this) { m = ins; }
-
- virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
- {
- if (strcmp(ev->keyname, KEY_BACK) == 0)
- m->Sigcb->cb(m->Sigcb->cookie, E_RETURN);
- }
- virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
- {
- 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);
- }
- virtual void OnRealized(int id, Evas_Object *obj, Elm_Object_Item *item)
- {
- elm_object_item_signal_callback_add(item, "item_clicked",
- "edc", sm_CbGridActivated, this);
- }
- virtual void OnUnrealized(int id, Evas_Object *obj, Elm_Object_Item *item)
- {
- elm_object_item_signal_callback_del(item, "item_clicked",
- "edc", sm_CbGridActivated);
- }
- virtual void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
- {
- m->current_item = item;
-
- m->Sigcb->cb(m->Sigcb->cookie, E_HIGHLIGHT);
-
- }
- } *pHandlerGrid;
+ ~SFolderLayout() {}
};
char *CFolderLayout::sm_CbGridTextGet(void *data, Evas_Object *obj, const char *part)
return ic;
}
+void CFolderLayout::sm_CbGridActivated(void *cookie, Elm_Object_Item *it,
+ const char *emission, const char *source)
+{
+ CFolderLayout *m = (CFolderLayout *)cookie;
+
+ m->m_OnGridActivated(it, emission, source);
+}
+
+void CFolderLayout::m_OnGridActivated(Elm_Object_Item *it,
+ const char *emission, const char *source)
+{
+ struct folderdata *fd;
+ char buf[256];
+
+ fd = (struct folderdata *)elm_object_item_data_get(it);
+ if (!fd)
+ return;
+
+ snprintf(buf, sizeof(buf), "< %s", folderdata_get_name(fd));
+
+ m->ld->media_list = folderdata_get_listinfo(fd);
+ m->ld->arglist = m->arglist;
+ m->ld->path = strdup(buf);
+ m->ld->sort = m->sort;
+ m->ld->prev_layout = E_LAYOUT_FOLDER;
+ m->ld->modified = EINA_TRUE;
+
+ m->pLayoutMgr->Show(layout_type[E_LAYOUT_ALL]);
+ m->layout_2ndview = EINA_TRUE;
+
+ m->FocusCb->cb(m->FocusCb->cookie);
+
+ m->current_item = it;
+
+ elm_gengrid_item_selected_set(it, EINA_FALSE);
+}
+
+void CFolderLayout::sm_CbGridItemFocused(void *cookie, Elm_Object_Item *it,
+ const char *emission, const char *source)
+{
+ CFolderLayout *m = (CFolderLayout *)cookie;
+
+ m->m_OnGridItemFocused(it, emission, source);
+}
+
+void CFolderLayout::m_OnGridItemFocused(Elm_Object_Item *it,
+ const char *emission, const char *source)
+{
+ if (!it)
+ return;
+
+ m->current_item = (Elm_Object_Item *)it;
+}
+
int CFolderLayout::m_GetMediaCount(Eina_List *list, int type)
{
Eina_List *media_list;
elm_config_scale_get() * GENGRID_ITEM_SIZE_W,
elm_config_scale_get() * GENGRID_ITEM_SIZE_H);
- m->pHandlerGrid->Connect(grid);
+ Connect(grid, FOLDER_GRID, TYPE_KEY_DOWN | TYPE_MOUSE_MOVE |
+ TYPE_REALIZED | TYPE_UNREALIZED | TYPE_FOCUSED);
+
return grid;
}
elm_object_part_content_set(layout, PART_CONTENTAREA, m->grid);
+ m->current_item = elm_gengrid_first_item_get(m->grid);
+
CBaseLayout::Create(layout);
return true;
elm_object_part_content_unset(m->base, PART_CONTENTAREA);
}
+
+void CFolderLayout::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
+{
+ switch (id) {
+ case FOLDER_GRID:
+ if (strcmp(ev->keyname, KEY_BACK) == 0)
+ m->Sigcb->cb(m->Sigcb->cookie, E_RETURN);
+ break;
+ default:
+ break;
+ }
+}
+
+void CFolderLayout::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
+{
+ switch (id) {
+ case FOLDER_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);
+
+ break;
+ default:
+ break;
+ }
+}
+
+void CFolderLayout::OnRealized(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case FOLDER_GRID:
+ elm_object_item_signal_callback_add(item, "item_clicked",
+ "edc", sm_CbGridActivated, this);
+ elm_object_item_signal_callback_add(item, "item_focused",
+ "edc", sm_CbGridItemFocused, this);
+ break;
+ default:
+ break;
+ }
+}
+
+void CFolderLayout::OnUnrealized(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case FOLDER_GRID:
+ elm_object_item_signal_callback_del(item, "item_clicked",
+ "edc", sm_CbGridActivated);
+ elm_object_item_signal_callback_del(item, "item_focused",
+ "edc", sm_CbGridItemFocused);
+ break;
+ default:
+ break;
+ }
+}
+
+void CFolderLayout::OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case FOLDER_GRID:
+ m->Sigcb->cb(m->Sigcb->cookie, E_HIGHLIGHT);
+ break;
+ default:
+ break;
+ }
+}
#include "AppCommon.h"
#include "BaseView.h"
#include "ViewMgr.h"
+#include "InputHandler.h"
#include "photoviewer_view.h"
#include "zoom_view.h"
CTXPOPUP_SPEED,
};
+enum EObjectType {
+ PHOTOVIEWER_BTN = 0,
+ PHOTOVIEWER_CTXPOPUP
+};
struct SPhotoViewerView {
Evas_Object *win;
ctxpopup = NULL;
cur_ctxpopup = 0;
-
- //pHandlerCtxPopup = new CHandlerCtxPopup(this);
- int a;
- for (a = 0; a < MAX_PHOTO_ICONS; a++) {
- btn[a] = NULL;
- pHandlerBtn[a] = new CHandlerBtn(this);
- }
-
- pHandlerCtxPopup = new CHandlerCtxPopup(this);
}
- ~SPhotoViewerView() {
- int a;
- for (a = 0; a < MAX_PHOTO_ICONS; a++) {
- delete pHandlerBtn[a];
- }
- delete pHandlerCtxPopup;
- }
-
- //evas_object_smart_callback_add(m->btn[i], SIG_CLICKED, _btn_clicked_common, m);
- //evas_object_smart_callback_add(m->btn[i], SIG_FOCUSED, _photo_btn_focused, m);
- //evas_object_event_callback_add(m->btn[i], EVAS_CALLBACK_KEY_DOWN, _photo_btn_key_pressed, m);
- class CHandlerBtn : public CListenerMgr, IMouseMoveListener, IKeyDownListener, IFocusedListener, IMouseClickedListener {
- private:
- SPhotoViewerView *m;
-
- private:
- static Eina_Bool sm_CbTimerTooltip(void *dt) {
- CHandlerBtn *root = (CHandlerBtn*)dt;
-
- Eina_Bool ret = ECORE_CALLBACK_CANCEL;
-
- if (root)
- ret = root->OnTimerTooltip();
-
- return ret;
- }
- Eina_Bool OnTimerTooltip(void) {
- m->tooltip_timer = NULL;
- elm_object_tooltip_hide(m->focusedbtn);
- return ECORE_CALLBACK_CANCEL;
- }
-
- public:
- CHandlerBtn(SPhotoViewerView *ins) : IMouseMoveListener(this), IKeyDownListener(this), IFocusedListener(this), IMouseClickedListener(this) { m = ins; }
-
- virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev) {
- if (!elm_object_focus_get(obj))
- elm_object_focus_set(obj, EINA_TRUE);
- }
- virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) {
- if (!strcmp(ev->keyname, KEY_BACK))
- CViewMgr::GetInstance()->PopView();
- else if (!strcmp(ev->keyname, KEY_MENU))
- CViewMgr::GetInstance()->PushView(VIEW_CTXT_MENU, m->vd);
- }
- virtual void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item) {
- if (m->focusedbtn != obj) {
-
- if (m->focusedbtn)
- elm_object_tooltip_hide(m->focusedbtn);
-
- elm_object_tooltip_show(obj);
-
- m->focusedbtn = obj;
- }
-
- if (m->tooltip_timer)
- ecore_timer_reset(m->tooltip_timer);
- else {
- m->tooltip_timer = ecore_timer_add(TIMEOUT_TOOLTIP, sm_CbTimerTooltip, this);
- }
- }
- virtual void OnMouseClicked(int id, Evas_Object *obj) {
- elm_object_signal_emit(obj, "mouse,anim,start", "");
- }
- } *pHandlerBtn[MAX_PHOTO_ICONS];
-
- class CHandlerCtxPopup : public CListenerMgr, IMouseMoveListener, IMouseClickedListener, IKeyDownListener {
- private:
- SPhotoViewerView *m;
-
- public:
- void HandleZoomFunction(struct SPhotoViewerView *vdata, const char *btn_id)
- {
- int i;
- struct zoom_data *zd;
- int zoom_level;
-
- if (!vdata || !btn_id)
- return;
-
- zoom_level = 0;
-
- for (i = 0; i < MAX_ZOOM_BTNS; i++) {
- if (!strcmp(btn_id, zoom_text[i])) {
- zoom_level = i;
- break;
- }
- }
-
- DestroyCtxpopup();
-
- switch (zoom_level) {
-
- case E_ZOOM_X2:
- case E_ZOOM_X4:
- zd = (struct zoom_data *)calloc(1, sizeof(*zd));
- if (!zd)
- return;
- zd->md = vdata->vd->md;
- zd->zoom_level = zoom_level;
- if (!CViewMgr::GetInstance()->PushView(VIEW_PHOTO_ZOOM, zd))
- _ERR("VIEW_PHOTO_ZOOM view create failed");
- break;
-
- case E_ZOOM_ORIGINAL:
- default:
- break;
- }
- }
-
- void HandleSpeedFunction(struct SPhotoViewerView *vdata, const char *btn_id)
- {
- int i;
-
- if (!vdata || !btn_id)
- return;
-
- for (i = 0; i < MAX_SPEED_BTNS; i++) {
- if (!strcmp(btn_id, speed_text[i])) {
- vdata->slideshow_speed = i;
- break;
- }
- }
-
- if (vdata->slideshow_timer) {
- ecore_timer_interval_set(vdata->slideshow_timer,
- slideshow_timeout[vdata->slideshow_speed]);
- ecore_timer_reset(vdata->slideshow_timer);
- }
-
- DestroyCtxpopup();
- }
- void DestroyCtxpopup(void)
- {
- if (!m->ctxpopup)
- return;
-
- evas_object_hide(m->ctxpopup);
- evas_object_del(m->ctxpopup);
-
- m->ctxpopup = NULL;
- m->cur_ctxpopup = CTXPOPUP_NONE;
-
- elm_object_focus_set(m->focusedbtn, EINA_TRUE);
- }
-
- public:
- CHandlerCtxPopup(SPhotoViewerView *ins) : IMouseMoveListener(this), IMouseClickedListener(this), IKeyDownListener(this) { m = ins; }
-
- virtual void OnMouseClicked(int id, Evas_Object *obj) {
- const char *btn_id;
-
- btn_id = (const char *)evas_object_data_get(obj, BTN_ID);
-
- switch (m->cur_ctxpopup) {
- case CTXPOPUP_ZOOM:
- HandleZoomFunction(m, btn_id);
- break;
- case CTXPOPUP_SPEED:
- HandleSpeedFunction(m, btn_id);
- break;
- default:
- break;
- }
- }
- virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) {
- if (!strcmp(ev->keyname, KEY_BACK))
- DestroyCtxpopup();
- }
- virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev) {
- if (!elm_object_focus_get(obj))
- elm_object_focus_set(obj, EINA_TRUE);
- }
- } *pHandlerCtxPopup;
-
+ ~SPhotoViewerView() {}
};
-
void CPhotoViewerView::sm_CbPrevBtnClicked(void *dt, Evas_Object *obj, const char *emission, const char *source)
{
CPhotoViewerView* root = (CPhotoViewerView*)dt;
evas_object_del(image);
}
+Eina_Bool CPhotoViewerView::sm_CbTimerTooltip(void *dt) {
+ CPhotoViewerView *m = (CPhotoViewerView *)dt;
+
+ Eina_Bool ret = ECORE_CALLBACK_CANCEL;
+
+ ret = m->m_OnTimerTooltip();
+
+ return ret;
+}
+
+Eina_Bool CPhotoViewerView::m_OnTimerTooltip(void) {
+ m->tooltip_timer = NULL;
+ elm_object_tooltip_hide(m->focusedbtn);
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+void CPhotoViewerView::m_HandleZoomFunction(const char *btn_id)
+{
+ int i;
+ struct zoom_data *zd;
+ int zoom_level;
+
+ if (!btn_id)
+ return;
+
+ zoom_level = 0;
+
+ for (i = 0; i < MAX_ZOOM_BTNS; i++) {
+ if (!strcmp(btn_id, zoom_text[i])) {
+ zoom_level = i;
+ break;
+ }
+ }
+
+ m_DestroyCtxpopup();
+
+ switch (zoom_level) {
+
+ case E_ZOOM_X2:
+ case E_ZOOM_X4:
+ zd = (struct zoom_data *)calloc(1, sizeof(*zd));
+ if (!zd)
+ return;
+ zd->md = m->vd->md;
+ zd->zoom_level = zoom_level;
+ if (!CViewMgr::GetInstance()->PushView(VIEW_PHOTO_ZOOM, zd))
+ _ERR("VIEW_PHOTO_ZOOM view create failed");
+ break;
+
+ case E_ZOOM_ORIGINAL:
+ default:
+ break;
+ }
+}
+
+void CPhotoViewerView::m_HandleSpeedFunction(const char *btn_id)
+{
+ int i;
+
+ if (!btn_id)
+ return;
+
+ for (i = 0; i < MAX_SPEED_BTNS; i++) {
+ if (!strcmp(btn_id, speed_text[i])) {
+ m->slideshow_speed = i;
+ break;
+ }
+ }
+
+ if (m->slideshow_timer) {
+ ecore_timer_interval_set(m->slideshow_timer,
+ slideshow_timeout[m->slideshow_speed]);
+ ecore_timer_reset(m->slideshow_timer);
+ }
+
+ m_DestroyCtxpopup();
+}
+
+void CPhotoViewerView::m_DestroyCtxpopup(void)
+{
+ if (!m->ctxpopup)
+ return;
+
+ evas_object_hide(m->ctxpopup);
+ evas_object_del(m->ctxpopup);
+
+ m->ctxpopup = NULL;
+ m->cur_ctxpopup = CTXPOPUP_NONE;
+
+ elm_object_focus_set(m->focusedbtn, EINA_TRUE);
+}
+
void CPhotoViewerView::m_DrawCtxpopup(const char **text_arr, int size_arr, const char *style, int selected_index, int position_x, int position_y)
{
Evas_Object *ctxpopup, *box, *btn;
if (i == size_arr - 1) {
elm_object_signal_emit(btn, "elm,action,hideline", "elm");
}
- m->pHandlerCtxPopup->Connect(btn);
- //((IMouseClickedListener*)m->pHandlerCtxPopup)->Connect(btn); // evas_object_smart_callback_add(btn, SIG_CLICKED, _ctxpopup_btn_clicked, m);
- //((IMouseMoveListener*)m->pHandlerCtxPopup)->Connect(btn); // evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_MOVE, _photo_btn_mousemove, m);
- //((IKeyDownListener*)m->pHandlerCtxPopup)->Connect(btn); // evas_object_event_callback_add(btn, EVAS_CALLBACK_KEY_DOWN, _ctxpopup_btn_key_pressed, m);
+ Connect(btn, PHOTOVIEWER_CTXPOPUP,
+ TYPE_KEY_DOWN | TYPE_CLICKED | TYPE_MOUSE_MOVE);
}
evas_object_show(box);
buf, m->btn[i]);
elm_object_signal_callback_add(m->btn[i], "btn,anim,finish", _source_name[i], _edje_callback_function[i], this);
- m->pHandlerBtn[i]->Connect(m->btn[i]);
- //((IMouseClickedListener*)m->pHandlerBtn[i])->Connect(m->btn[i]); // evas_object_smart_callback_add(m->btn[i], SIG_CLICKED, _btn_clicked_common, m);
- //((IFocusedListener*)m->pHandlerBtn[i])->Connect(m->btn[i]); // evas_object_smart_callback_add(m->btn[i], SIG_FOCUSED, _photo_btn_focused, m);
- //((IKeyDownListener*)m->pHandlerBtn[i])->Connect(m->btn[i]); // evas_object_event_callback_add(m->btn[i], EVAS_CALLBACK_KEY_DOWN, _photo_btn_key_pressed, m);
- //((IMouseMoveListener*)m->pHandlerBtn[i])->Connect(m->btn[i]); // evas_object_event_callback_add(m->btn[i], EVAS_CALLBACK_MOUSE_MOVE, _photo_btn_mousemove, m);
+
+ Connect(m->btn[i], PHOTOVIEWER_BTN,
+ TYPE_KEY_DOWN | TYPE_CLICKED |
+ TYPE_MOUSE_MOVE | TYPE_FOCUSED);
elm_object_focus_next_object_set(m->btn[i], m->btn[i], ELM_FOCUS_UP);
elm_object_focus_next_object_set(m->btn[i], m->btn[i], ELM_FOCUS_DOWN);
{
int i;
- m->pHandlerCtxPopup->DestroyCtxpopup();
+ m_DestroyCtxpopup();
elm_object_signal_emit(m->base, SIG_HIDE, "");
}
else if (!strcmp(ev->keyname, KEY_BACK)) {
if (m->slideshow_state == STATE_PLAY)
- m->pHandlerBtn[SLIDESHOW_BTN_IDX]->OnMouseClicked(0, m->btn[SLIDESHOW_BTN_IDX]); //_btn_clicked_common(m, m->btn[SLIDESHOW_BTN_IDX], NULL);
+ OnMouseClicked(PHOTOVIEWER_BTN, m->btn[SLIDESHOW_BTN_IDX]);
elm_object_signal_emit(m->base, SIG_SHOW, "");
}
else {
if (m->slideshow_state == STATE_PLAY)
- m->pHandlerBtn[SLIDESHOW_BTN_IDX]->OnMouseClicked(0, m->btn[SLIDESHOW_BTN_IDX]); //_btn_clicked_common(m, m->btn[SLIDESHOW_BTN_IDX], NULL);
+ OnMouseClicked(PHOTOVIEWER_BTN, m->btn[SLIDESHOW_BTN_IDX]);
elm_object_signal_emit(m->base, SIG_SHOW, "");
}
return EINA_TRUE;
}
+
+void CPhotoViewerView::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
+{
+ switch (id) {
+ case PHOTOVIEWER_BTN:
+ if (!strcmp(ev->keyname, KEY_BACK))
+ CViewMgr::GetInstance()->PopView();
+ else if (!strcmp(ev->keyname, KEY_MENU))
+ CViewMgr::GetInstance()->PushView(VIEW_CTXT_MENU, m->vd);
+
+ break;
+ case PHOTOVIEWER_CTXPOPUP:
+ if (!strcmp(ev->keyname, KEY_BACK))
+ m_DestroyCtxpopup();
+
+ break;
+ default:
+ break;
+ }
+}
+
+void CPhotoViewerView::OnMouseClicked(int id, Evas_Object *obj)
+{
+ switch (id) {
+ case PHOTOVIEWER_BTN:
+ elm_object_signal_emit(obj, "mouse,anim,start", "");
+ break;
+ case PHOTOVIEWER_CTXPOPUP:
+ const char *btn_id;
+
+ btn_id = (const char *)evas_object_data_get(obj, BTN_ID);
+
+ switch (m->cur_ctxpopup) {
+ case CTXPOPUP_ZOOM:
+ m_HandleZoomFunction(btn_id);
+ break;
+ case CTXPOPUP_SPEED:
+ m_HandleSpeedFunction(btn_id);
+ break;
+ default:
+ break;
+ }
+
+ break;
+ if (m->cur_ctxpopup == CTXPOPUP_ZOOM)
+ default:
+ break;
+ }
+}
+
+void CPhotoViewerView::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
+{
+ switch (id) {
+ case PHOTOVIEWER_BTN:
+ case PHOTOVIEWER_CTXPOPUP:
+ if (!elm_object_focus_get(obj))
+ elm_object_focus_set(obj, EINA_TRUE);
+ break;
+ default:
+ break;
+ }
+}
+
+void CPhotoViewerView::OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
+{
+ switch (id) {
+ case PHOTOVIEWER_BTN:
+ if (m->focusedbtn != obj) {
+
+ if (m->focusedbtn)
+ elm_object_tooltip_hide(m->focusedbtn);
+
+ elm_object_tooltip_show(obj);
+
+ m->focusedbtn = obj;
+ }
+
+ if (m->tooltip_timer)
+ ecore_timer_reset(m->tooltip_timer);
+ else {
+ m->tooltip_timer = ecore_timer_add(TIMEOUT_TOOLTIP,
+ sm_CbTimerTooltip, this);
+ }
+
+ break;
+ default:
+ break;
+ }
+}
+
+
#include "timeout_handler.h"
#include "mediadata.h"
#include "AppCommon.h"
+#include "InputHandler.h"
#include "BaseView.h"
#include "ViewMgr.h"
#include "zoom_view.h"
#define IMAGE_ZOOM_NAVI_IMG_BORDER IMAGEDIR"/zoom_navigator_border.png"
+enum EObjectType {
+ ZOOM_VIEW = 0,
+ ZOOM_ARROW,
+ ZOOM_NAVI,
+ ZOOM_NAVI_RECT
+};
+
struct SPhotoZoomView {
Evas_Object *eoWin;
Evas_Object *eoBase;
Evas_Object *eoDown;
} arrow;
- class CHandlerArrow : public CListenerMgr, IMouseClickedListener {
- private:
- SPhotoZoomView *m;
-
- public:
- CHandlerArrow(SPhotoZoomView *ins) : IMouseClickedListener(this) { m = ins; }
-
- virtual void OnMouseClicked(int id, Evas_Object *obj) {
- int x, y, w, h;
- elm_photocam_image_region_get(m->eoPhotocam, &x, &y, &w, &h);
-
- if (m->arrow.eoLeft == obj) {
- elm_photocam_image_region_show(m->eoPhotocam, x - PHOTOCAM_MOVE_SIZE, y, w, h);
- }
- else if (m->arrow.eoRight == obj) {
- elm_photocam_image_region_show(m->eoPhotocam, x + PHOTOCAM_MOVE_SIZE, y, w, h);
- }
- else if (m->arrow.eoUp == obj) {
- elm_photocam_image_region_show(m->eoPhotocam, x, y - PHOTOCAM_MOVE_SIZE, w, h);
- }
- else if (m->arrow.eoDown == obj) {
- elm_photocam_image_region_show(m->eoPhotocam, x, y + PHOTOCAM_MOVE_SIZE, w, h);
- }
- }
- } *pHandlerArrow;
-
- class CHandlerZoomNavi : public CListenerMgr, IMouseMoveListener, IMouseUpListener, IMouseDownListener {
- private:
- SPhotoZoomView *m;
-
- protected:
- void t_MoveZoomNavi(Evas_Coord_Point coord)
- {
- int x, y, w, h, w2, h2;
- int xr, yr, xp, yp, wp, hp;
- int width, height;
-
- evas_object_geometry_get(m->eoPhotocamNavi, &x, &y, &w, &h);
- evas_object_geometry_get(m->eoRect, NULL, NULL, &w2, &h2);
-
- elm_photocam_image_region_get(m->eoPhotocam, NULL, NULL, &wp, &hp);
- elm_photocam_image_size_get(m->eoPhotocam, &width, &height);
-
- xr = coord.x - (w2 / 2);
- yr = coord.y - (h2 / 2);
-
- if (xr < x)
- xp = 0;
- else if (xr > x + w - w2)
- xp = width - wp;
- else
- xp = (xr - x) / m->ratio;
-
- if (yr < y)
- yp = 0;
- else if (yr > y + h - h2)
- yp = height - h2;
- else
- yp = (yr - y) / m->ratio;
-
- elm_photocam_image_region_show(m->eoPhotocam, xp, yp, wp, hp);
- }
-
- public:
- CHandlerZoomNavi(SPhotoZoomView *ins) : IMouseMoveListener(this),
- IMouseUpListener(this), IMouseDownListener(this) { m = ins; }
-
- virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev) {
- if (!m->drag)
- return;
-
- t_MoveZoomNavi(ev->cur.canvas);
- }
- virtual void OnMouseUp(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Up *ev) {
- m->drag = EINA_FALSE;
- }
- virtual void OnMouseDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Down *ev) {
- t_MoveZoomNavi(ev->canvas);
-
- m->drag = EINA_TRUE;
- }
- } *pHandlerZoomNavi, *pHandlerRect;
-
-
SPhotoZoomView() {
eoWin = NULL;
eoBase = NULL;
data = NULL;
timer = NULL;
-
- pHandlerArrow = new CHandlerArrow(this);
- pHandlerZoomNavi = new CHandlerZoomNavi(this);
- pHandlerRect = new CHandlerZoomNavi(this);
- }
- ~SPhotoZoomView() {
- delete pHandlerArrow;
- delete pHandlerZoomNavi;
- delete pHandlerRect;
}
-
+ ~SPhotoZoomView() {}
};
if (!m_MoveZoomNaviImg())
return ECORE_CALLBACK_CANCEL;
- t_GetZoomNaviRatio();
+ m_GetZoomNaviRatio();
m_UpdateArrow();
m_UpdateZoomNavi();
evas_object_move(m->eoRect, x_new, y_new);
}
-void CPhotoZoomView::t_GetZoomNaviRatio(void)
+void CPhotoZoomView::m_GetZoomNaviRatio(void)
{
int width, width_navi;
return true;
}
+void CPhotoZoomView::m_MoveZoomNavi(Evas_Coord_Point coord)
+{
+ int x, y, w, h, w2, h2;
+ int xr, yr, xp, yp, wp, hp;
+ int width, height;
+
+ evas_object_geometry_get(m->eoPhotocamNavi, &x, &y, &w, &h);
+ evas_object_geometry_get(m->eoRect, NULL, NULL, &w2, &h2);
+
+ elm_photocam_image_region_get(m->eoPhotocam, NULL, NULL, &wp, &hp);
+ elm_photocam_image_size_get(m->eoPhotocam, &width, &height);
+
+ xr = coord.x - (w2 / 2);
+ yr = coord.y - (h2 / 2);
+
+ if (xr < x)
+ xp = 0;
+ else if (xr > x + w - w2)
+ xp = width - wp;
+ else
+ xp = (xr - x) / m->ratio;
+
+ if (yr < y)
+ yp = 0;
+ else if (yr > y + h - h2)
+ yp = height - h2;
+ else
+ yp = (yr - y) / m->ratio;
+
+ elm_photocam_image_region_show(m->eoPhotocam, xp, yp, wp, hp);
+}
+
bool CPhotoZoomView::m_DrawArrow(void)
{
m->arrow.eoUp = elm_image_add(m->eoBase);
return false;
elm_image_file_set(m->arrow.eoUp, IMAGE_UPARROW, NULL);
- m->pHandlerArrow->Connect(m->arrow.eoUp); //evas_object_smart_callback_add(m->arrow.eoUp, SIG_CLICKED, _uparrow_clicked, m);
+ Connect(m->arrow.eoUp, ZOOM_ARROW, TYPE_CLICKED);
elm_object_part_content_set(m->eoBase, PART_UPARROW, m->arrow.eoUp);
m->arrow.eoDown = elm_image_add(m->eoBase);
return false;
elm_image_file_set(m->arrow.eoDown, IMAGE_DOWNARROW, NULL);
- m->pHandlerArrow->Connect(m->arrow.eoDown); // evas_object_smart_callback_add(m->arrow.eoDown, SIG_CLICKED, _downarrow_clicked, m);
+ Connect(m->arrow.eoDown, ZOOM_ARROW, TYPE_CLICKED);
elm_object_part_content_set(m->eoBase, PART_DOWNARROW, m->arrow.eoDown);
m->arrow.eoLeft = elm_image_add(m->eoBase);
return false;
elm_image_file_set(m->arrow.eoLeft, IMAGE_LEFTARROW, NULL);
- m->pHandlerArrow->Connect(m->arrow.eoLeft); // evas_object_smart_callback_add(m->arrow.eoLeft, SIG_CLICKED, _leftarrow_clicked, m);
+ Connect(m->arrow.eoLeft, ZOOM_ARROW, TYPE_CLICKED);
elm_object_part_content_set(m->eoBase, PART_LEFTARROW, m->arrow.eoLeft);
m->arrow.eoRight = elm_image_add(m->eoBase);
return false;
elm_image_file_set(m->arrow.eoRight, IMAGE_RIGHTARROW, NULL);
- m->pHandlerArrow->Connect(m->arrow.eoRight); // evas_object_smart_callback_add(m->arrow.eoRight, SIG_CLICKED, _rightarrow_clicked, m);
+ Connect(m->arrow.eoRight, ZOOM_ARROW, TYPE_CLICKED);
elm_object_part_content_set(m->eoBase, PART_RIGHTARROW, m->arrow.eoRight);
return true;
void CPhotoZoomView::m_AddMouseEventCallback(void)
{
- m->pHandlerZoomNavi->Connect(m->eoPhotocamNavi);
- //((IMouseMoveListener*)m->pHandlerZoomNavi)->Connect(m->eoPhotocamNavi); // evas_object_event_callback_add(m->eoPhotocamNavi, EVAS_CALLBACK_MOUSE_DOWN, _zoom_navi_mouse_down, m);
- //((IMouseUpListener*)m->pHandlerZoomNavi)->Connect(m->eoPhotocamNavi); // evas_object_event_callback_add(m->eoPhotocamNavi, EVAS_CALLBACK_MOUSE_UP, _zoom_navi_mouse_up, m);
- //((IMouseDownListener*)m->pHandlerZoomNavi)->Connect(m->eoPhotocamNavi); // evas_object_event_callback_add(m->eoPhotocamNavi, EVAS_CALLBACK_MOUSE_MOVE, _zoom_navi_mouse_move, m);
-
- m->pHandlerRect->Connect(m->eoRect);
- //((IMouseMoveListener*)m->pHandlerRect)->Connect(m->eoRect); // evas_object_event_callback_add(m->eoRect, EVAS_CALLBACK_MOUSE_DOWN, _zoom_navi_mouse_down, m);
- //((IMouseUpListener*)m->pHandlerRect)->Connect(m->eoRect); // evas_object_event_callback_add(m->eoRect, EVAS_CALLBACK_MOUSE_UP, _zoom_navi_mouse_up, m);
- //((IMouseDownListener*)m->pHandlerRect)->Connect(m->eoRect); // evas_object_event_callback_add(m->eoRect, EVAS_CALLBACK_MOUSE_MOVE, _zoom_navi_mouse_move, m);
-
+ Connect(m->eoPhotocamNavi, ZOOM_NAVI, TYPE_MOUSE_DOWN | TYPE_MOUSE_UP | TYPE_MOUSE_MOVE);
+ Connect(m->eoRect, ZOOM_NAVI_RECT, TYPE_MOUSE_DOWN | TYPE_MOUSE_UP | TYPE_MOUSE_MOVE);
}
bool CPhotoZoomView::m_DrawZoomNavi(void)
if (!m->cTimeout.Create(TIMEOUT_PHOTOZOOM, this))
goto error;
- CListenerMgr::Connect(m->eoBase); //evas_object_event_callback_add(m->eoBase, EVAS_CALLBACK_KEY_DOWN, _base_key_pressed, m);
+ Connect(m->eoBase, ZOOM_VIEW, TYPE_KEY_DOWN | TYPE_KEY_UP);
CBaseView::Create(NULL);
}
-void CPhotoZoomView::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
+void CPhotoZoomView::m_ViewKeyDown(Evas_Event_Key_Down *ev)
{
int height, width;
m->prev_event = EVAS_CALLBACK_KEY_DOWN;
}
+void CPhotoZoomView::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
+{
+ switch (id) {
+ case ZOOM_VIEW:
+ m_ViewKeyDown(ev);
+ break;
+ default:
+ break;
+ }
+}
+
void CPhotoZoomView::OnKeyUp(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Up *ev)
{
- if (m->updated)
- return;
+ switch (id) {
+ case ZOOM_VIEW:
+ if (m->updated)
+ return;
- m_UpdateArrow();
- m_UpdateZoomNavi();
+ m_UpdateArrow();
+ m_UpdateZoomNavi();
+
+ m->prev_event = EVAS_CALLBACK_KEY_UP;
- m->prev_event = EVAS_CALLBACK_KEY_UP;
+ break;
+ default:
+ break;
+ }
}
+void CPhotoZoomView::OnMouseClicked(int id, Evas_Object *obj)
+{
+ switch (id) {
+ case ZOOM_ARROW:
+ int x, y, w, h;
+
+ elm_photocam_image_region_get(m->eoPhotocam, &x, &y, &w, &h);
+
+ if (m->arrow.eoLeft == obj) {
+ elm_photocam_image_region_show(m->eoPhotocam,
+ x - PHOTOCAM_MOVE_SIZE, y, w, h);
+ }
+ else if (m->arrow.eoRight == obj) {
+ elm_photocam_image_region_show(m->eoPhotocam,
+ x + PHOTOCAM_MOVE_SIZE, y, w, h);
+ }
+ else if (m->arrow.eoUp == obj) {
+ elm_photocam_image_region_show(m->eoPhotocam,
+ x, y - PHOTOCAM_MOVE_SIZE, w, h);
+ }
+ else if (m->arrow.eoDown == obj) {
+ elm_photocam_image_region_show(m->eoPhotocam,
+ x, y + PHOTOCAM_MOVE_SIZE, w, h);
+ }
+
+ break;
+ default:
+ break;
+ }
+}
+
+void CPhotoZoomView::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
+{
+ switch (id) {
+ case ZOOM_NAVI:
+ case ZOOM_NAVI_RECT:
+ if (!m->drag)
+ return;
+
+ m_MoveZoomNavi(ev->cur.canvas);
+
+ break;
+ default:
+ break;
+ }
+}
+
+void CPhotoZoomView::OnMouseDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Down *ev)
+{
+ switch (id) {
+ case ZOOM_NAVI:
+ case ZOOM_NAVI_RECT:
+ m_MoveZoomNavi(ev->canvas);
+
+ m->drag = EINA_TRUE;
+
+ break;
+ default:
+ break;
+ }
+}
+
+void CPhotoZoomView::OnMouseUp(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Up *ev)
+{
+ switch (id) {
+ case ZOOM_NAVI:
+ case ZOOM_NAVI_RECT:
+ m->drag = EINA_FALSE;
+ break;
+ default:
+ break;
+ }
+}
void CPhotoZoomView::OnTimeout(void)
{