9eda50e3a2bca85f18cbb4ca6b9e8dd42f6873b5
[profile/tv/apps/native/gallery.git] / include / view / photo-viewer / photoviewer_view.h
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15 */
16
17 #ifndef __PHOTOVIEWER_VIEW_H__
18 #define __PHOTOVIEWER_VIEW_H__
19
20
21 class CPhotoViewerView : public CBaseView,
22         IMouseClickedListener, IMouseMoveListener,
23         IFocusedListener, ITimeoutListener {
24 private:
25         struct SPhotoViewerView *m;
26
27 protected:
28         virtual void t_OnShow(void);
29         virtual void t_OnHide(void);
30         virtual void t_OnUpdate(void *data);
31         virtual void t_OnPause(void);
32         virtual void t_OnResume(void);
33
34 private:
35         Evas_Object *m_AddTooltipBtn(Evas_Object *parent,
36                         const char *style_text, const char *tt_text);
37
38 private:
39         static void sm_CbPrevBtnClicked(void *dt, Evas_Object *obj,
40                         const char *emission, const char *source);
41         void m_OnPrevBtnClicked(Evas_Object *obj,
42                         const char *emission, const char *source);
43
44         static void sm_CbNextBtnClicked(void *dt, Evas_Object *obj,
45                         const char *emission, const char *source);
46         void m_OnNextBtnClicked(Evas_Object *obj,
47                         const char *emission, const char *source);
48
49         static void sm_CbSlideshowBtnClicked(void *dt, Evas_Object *obj,
50                         const char *emission, const char *source);
51         void m_OnSlideshowBtnClicked(Evas_Object *obj,
52                         const char *emission, const char *source);
53
54         static void sm_CbSettingBtnClicked(void *dt, Evas_Object *obj,
55                         const char *emission, const char *source);
56         void m_OnSettingBtnClicked(Evas_Object *obj,
57                         const char *emission, const char *source);
58
59         static void sm_CbZoomBtnClicked(void *dt, Evas_Object *obj,
60                         const char *emission, const char *source);
61         void m_OnZoomBtnClicked(Evas_Object *obj,
62                         const char *emission, const char *source);
63
64         static void sm_CbRotateBtnClicked(void *dt, Evas_Object *obj,
65                         const char *emission, const char *source);
66         void m_OnRotateBtnClicked(Evas_Object *obj,
67                         const char *emission, const char *source);
68
69         static void sm_CbCtxPopupSelected(void *cookie,
70                         CContextPopup *instance, const char *text);
71         static void sm_CbPhotocamLoaded(void *data, Evas_Object *obj,
72                         void *event_info);
73         static void sm_CbPhotocamLoadedDetail(void *data, Evas_Object *obj,
74                         void *event_info);
75         void m_OnPhotocamLoaded(Evas_Object *obj);
76         void m_OnPhotocamLoadedDetail(Evas_Object *obj);
77
78         void m_OnCtxPopupSelected(CContextPopup *instance, const char *text);
79
80         static Eina_Bool sm_CbTimerTooltip(void *cookie);
81         Eina_Bool m_OnTimerTooltip(void);
82
83         static Eina_Bool sm_CbTimerPreviewBar(void *cookie);
84         Eina_Bool m_OnTimerPreviewBar(void);
85
86         static Eina_Bool sm_CbFocus(void *dt);
87         Eina_Bool OnFocus(void);
88
89         static void sm_CbShowMenuViewFinish(void *dt, Evas_Object *obj,
90                         const char *emission, const char *source);
91
92         static Eina_Bool sm_CbTimerSlideshow(void *dt);
93
94 private:
95         bool m_DrawContentArea(CMediaInfo *minfo);
96         bool m_DrawTopArea(CMediaInfo *minfo);
97         bool m_DrawPreviewBar(void);
98         bool m_DrawPreviewBarItem(void);
99         bool m_DrawPreviewBarBorder(void);
100         bool m_UpdatePreviewBar(int direction);
101         Evas_Object *m_MovePreviewBar(int new_x,
102                         int unpack_item_idx, int new_item_idx);
103         bool m_DrawBottomArea(void);
104         bool m_DrawItems(void);
105         void m_HandleZoomFunction(const char *btn_id);
106         void m_HandleSpeedFunction(const char *btn_id);
107
108         void m_ShowMenuView();
109         void m_HideMenuView();
110
111 public:
112         CPhotoViewerView(const char *szViewId) : CBaseView(szViewId),
113                 IMouseClickedListener(this),
114                 IMouseMoveListener(this), IFocusedListener(this), m(0) {}
115         virtual ~CPhotoViewerView() {}
116
117         virtual bool Create(void *data, Evas_Object *eoBase);
118         virtual void Destroy(void);
119
120         virtual void OnTimeout(void);
121         virtual Eina_Bool OnEvent(int type, void *event_info);
122
123 public:
124         virtual void OnSKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_SKey_Down *ev);
125         virtual void OnMouseClicked(int id, Evas_Object *obj);
126         virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev);
127         virtual void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item);
128 };
129
130
131 #endif