Revert " modify license, permission and remove ^M char"
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_ToolbarPresenter.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://floralicense.org/license/
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 /**
18  * @file                FUiCtrl_ToolbarPresenter.h
19  * @brief               This is the header file for the _ToolbarPresenter class.
20  *
21  * This header file contains the declarations of the %_ToolbarPresenter class.
22  */
23
24 #ifndef _FUI_CTRL_INTERNAL_TOOLBAR_PRESENTER_H_
25 #define _FUI_CTRL_INTERNAL_TOOLBAR_PRESENTER_H_
26
27 #include <FBaseObject.h>
28 #include <FUiAnimIVisualElementAnimationStatusEventListener.h>
29 #include <FGrp_TextTextObject.h>
30 #include "FUiCtrl_FlickAnimation.h"
31 #include "FUiCtrl_Toolbar.h"
32
33 namespace Tizen { namespace Ui { namespace Animations {
34         class VisualElementAnimation;
35 }}} // Tizen::Ui::Animations
36
37 namespace Tizen { namespace Ui { namespace Controls
38 {
39
40 class _Toolbar;
41 class _ToolbarModel;
42 class _Label;
43 class _FlickAnimation;
44
45 /**
46  * @class       _ToolbarPresenter
47  * @brief       The presenter class of _Toolbar class
48  * @since 2.0
49  */
50 class _ToolbarPresenter
51         : public Tizen::Base::Object
52         , public Tizen::Base::Runtime::ITimerEventListener
53         , public Tizen::Ui::Animations::IVisualElementAnimationStatusEventListener
54         , virtual public Tizen::Base::Runtime::IEventListener
55 {
56 public:
57         _ToolbarPresenter(void);
58
59         virtual ~_ToolbarPresenter(void);
60
61         result Construct(const _Toolbar& toolbar);
62
63         result Install(void);
64
65         result Draw(void);
66
67         void DrawBackground(void);
68
69         void DrawDescriptionText(void);
70
71         void DrawEditItem(const Tizen::Graphics::FloatPoint& point);
72
73         void DrawDivider(const Tizen::Graphics::FloatPoint& point, Tizen::Graphics::Canvas* pCanvas);
74
75         void DrawItems(void);
76
77         result DrawTitleText(Tizen::Graphics::Canvas* pCanvas);
78
79         int GetSelectedItemIndex(void) const;
80
81         bool IsInitialDraw(void) const;
82
83         bool IsTabEditModeEnabled(void) const;
84
85         result SetDescriptionText(const Tizen::Base::String& description);
86
87         result SetItemSelected(int itemIndex);
88
89         result SetInitialDrawState(bool state);
90
91         result SetTabEditModeEnabled(bool enable);
92
93         result SetTitleText(const Tizen::Base::String& title, HorizontalAlignment alignment);
94
95         result SetUsableAreaBounds(const Tizen::Graphics::FloatRectangle& rect);
96
97         bool OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
98
99         bool OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
100
101         bool OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
102
103         bool OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo);
104
105         void OnChangeLayout(Tizen::Ui::_ControlOrientation orientation);
106
107         bool OnLongPressGestureDetected(void);
108
109         virtual bool OnFlickGestureDetected(_TouchFlickGestureDetector& gesture);
110
111         virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
112
113         result TimerForTitleSlideInit(void);
114
115         result TimerForTitleSlideStart(void);
116
117         result TimerForTitleSlideTimeout(void);
118
119         Tizen::Graphics::FloatRectangle GetTitleTextBoundsF(void) const;
120
121         Tizen::Graphics::FloatRectangle GetDescriptionBoundsF(void) const;
122
123         void OnFontChanged(Tizen::Graphics::Font* pFont);
124         void OnFontInfoRequested(unsigned long& style, int& size);
125         void OnFontInfoRequested(unsigned long& style, float& size);
126         void OnAncestorVisibleStateChanged(const _Control& control);
127         void SetFontInfo(unsigned long style, float size);
128
129
130         result AdjustItemPositionX(float distance);
131
132 protected:
133         result _SetModel(const _ToolbarModel& toolbarModel);
134
135 private:
136         void SetBouncingVisualElement(float startX, float startY);
137
138         void StartFlickAnimation(void);
139         result StartFlickAnimationTimer(void);
140         result ResetFlickAnimationTimer(void);
141
142         void SetFirstLoadedItemIndex(void);
143         void SetLastLoadedItemIndex(void);
144
145         float CalculateProgress(float timeProgress) const;
146
147         void SetItemFit(int);
148
149         virtual void OnVisualElementAnimationStarted(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target);
150         virtual void OnVisualElementAnimationRepeated(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, long currentRepeatCount);
151         virtual void OnVisualElementAnimationFinished(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, bool completedNormally);
152
153 private:
154         _Toolbar* __pToolbar;
155
156         _ToolbarModel* __pToolbarModel;
157
158         bool __initialDraw;
159
160         bool __tabEditEnabled;
161
162         bool __beingEdited;
163
164         bool __touchInitiatedInToolbar;
165
166         int __editItemIndex;
167
168         int __pressedItemIndex;
169
170         _ButtonStatus __initialPressesItemStatus;
171
172         _Label* __pEditItem;
173
174         Tizen::Graphics::Bitmap* __pTitleBackgroundBitmap;
175
176         Tizen::Base::Runtime::Timer* __pTitleSlideTimer;
177
178         Tizen::Base::Runtime::Timer* __pFlickAnimationTimer;
179
180         Tizen::Graphics::FloatRectangle __titleRect;
181
182         Tizen::Graphics::FloatRectangle __descriptionRect;
183
184         Tizen::Graphics::FloatRectangle __toolbarUsableArea;
185
186         Tizen::Graphics::FloatPoint __currentTouchPosition;
187
188         Tizen::Base::String __titleText;
189
190         Tizen::Graphics::Font* __pTitleTextFont;
191
192         Tizen::Graphics::Font* __pTextFont;
193
194         Tizen::Graphics::_Text::TextObject* __pDescriptionTextObject;
195
196         Tizen::Graphics::_Text::TextObject* __pTitleTextObject;
197
198         _FlickAnimation __flickAnimation;
199
200         static const int FLICK_ANIMATION_TIMER_PERIOD = 3;
201         static const int FLICK_ANIMATION_FPS_TAB = 30;
202         static const int FLICK_ANIMATION_SENSITIVITY_TAB = 30;
203         static const int FLICK_ANIMATION_COUNT = 50;
204
205
206         float __moveDistance;
207         float __flickMove;
208         float __flickDistance;
209         int __flickFlag;
210         int __firstLoadedItemIndex;
211         int __lastLoadedItemIndex;
212         bool __tabSlideLeft;
213         bool __tabSlideRight;
214
215         Tizen::Graphics::FloatDimension __portraitSize;
216         Tizen::Graphics::FloatDimension __landscapeSize;
217
218         unsigned long __fontStyle;
219         float __fontSize;
220         bool __tabMoved;
221
222         bool __titlePressed;
223         bool __titleSliding;
224
225 private:
226         _ToolbarPresenter(const _ToolbarPresenter& value);
227
228         _ToolbarPresenter& operator =(const _ToolbarPresenter& value);
229
230 };
231
232 }}} // Tizen::Ui::Controls
233
234 #endif  // _FUI_CTRL_INTERNAL_TOOLBAR_PRESENTER_H_