2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.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
9 // http://www.apache.org/licenses/LICENSE-2.0/
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.
19 * @file FUiCtrl_DateTimeBarPresenter.h
20 * @brief This is the header file for the _DateTimeBarPresenter class.
22 * This header file contains the declarations of the %_DateTimeBarPresenter class.
25 #ifndef _FUI_CTRL_INTERNAL_DATETIMEBAR_PRESENTER_H_
26 #define _FUI_CTRL_INTERNAL_DATETIMEBAR_PRESENTER_H_
28 #include <FGrp_TextTextObject.h>
29 #include "FUiCtrl_DateTimeBarModel.h"
30 #include "FUi_ITouchFlickGestureEventListener.h"
31 #include "FUiCtrl_FlickAnimation.h"
33 namespace Tizen { namespace Ui { namespace Controls
37 class _DateTimeBarPresenter
38 : public Tizen::Base::Object
39 , public Tizen::Base::Runtime::ITimerEventListener
42 _DateTimeBarPresenter(_DateTimeBar* pDateTimeBar);
43 virtual ~_DateTimeBarPresenter(void);
46 static _DateTimeBarPresenter* CreateInstanceN(_DateTimeBar& dateTimeBar);
47 void AddFlickAnimationInfo();
49 result CalculateWindowBounds(void);
50 result LoadArrowBitmap(void);
53 result AddItems(int actionId);
54 result RemoveAllItems(void);
56 Tizen::Graphics::FloatRectangle GetBodyBounds(void) const;
57 void SetArrowBounds(const Tizen::Graphics::FloatRectangle& bounds);
58 Tizen::Graphics::FloatRectangle GetWindowBounds(void) const;
59 Tizen::Graphics::FloatRectangle GetArrowBounds(void) const;
61 int GetItemCount(void) const;
62 _DateTimeBarItem* GetItemAt(int index) const;
64 int GetFirstDrawnItemIndex(void) const;
66 int GetMinimumValue(void) const;
67 void SetMinimumValue(int minValue);
69 int GetMaximumValue(void) const;
70 void SetMaximumValue(int maxValue);
73 void SetItemFocused(bool isFocused);
75 float GetItemWidth(void) const;
76 float GetItemMargin(void) const;
77 float GetFontSize(void) const;
78 float GetLeftRightMargin(void) const;
80 bool OnKeyPressed(const _Control &source, const _KeyInfo &keyInfo);
81 virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
82 virtual bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
83 virtual bool OnTouchMoved(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
84 virtual bool OnTouchCanceled(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
85 virtual void OnTouchMoveHandled(const Tizen::Ui::_Control& control);
86 virtual bool OnFlickGestureDetected(int distanceX,int distanceY,int duration);
87 void StartFlickAnimation(void);
88 void StartAnimationEffect(void);
89 void SetInitialAnimationValue(float animationValue);
90 void SetFont(Tizen::Graphics::Font& pFont);
91 int GetSelectedItemIndex(void) const;
93 void MovePrevious(void);
95 virtual bool OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element);
96 virtual bool OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element);
99 result AddItem(int actionId);
100 result InsertItems(int actionId);
101 result InsertItem(int index, int actionId);
102 result DeleteItem(int index);
104 result DrawItem(Tizen::Graphics::Canvas& canvas);
105 result DrawBackground(Tizen::Graphics::Canvas& canvas);
106 result DrawArrow(Tizen::Graphics::Canvas& canvas);
108 result SetItemStatus(int index, _DateTimeBarItemStatus status);
109 _DateTimeBarItemStatus GetItemStatus(int index) const;
113 result StartFlickAnimationTimer(void);
114 result ResetFlickAnimationTimer(void);
116 void SetItemSelected(int index);
118 void SetFirstDrawnItemIndex(int index);
119 int GetItemIndexFromPosition(const Tizen::Graphics::FloatPoint& point) const;
121 void SetWindowBounds(const Tizen::Graphics::FloatRectangle& bounds);
122 void SetBodyBounds(const Tizen::Graphics::FloatRectangle& bounds);
123 result AdjustItemPosition(float distance);
124 result AdjustAccessibilityElementPosition(float distance);
125 void AddAccessibilityElement(void);
126 void InsertAccessibilityElementAt(int index);
128 Tizen::Base::String GetDisplayedText(int value) const;
129 result LoadResource(void);
131 _DateTimeBarPresenter(const _DateTimeBarPresenter&);
132 _DateTimeBarPresenter& operator =(const _DateTimeBarPresenter&);
134 virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
135 void ValidateAndAdjustStartPosition(void);
138 _DateTimeBar* __pDateTimeBar;
139 _DateTimeBarModel* __pDateTimeBarModel;
141 Tizen::Graphics::FloatPoint __currentPoint;
143 bool __touchMoveHandled;
144 bool __isFlickEnabled;
145 bool __isFlickInProgress;
147 Tizen::Base::Runtime::Timer* __pFlickAnimationTimer;
148 _FlickAnimation __flickAnimation;
149 Tizen::Base::String __selectedText;
151 static const int FLICK_ANIMATION_TIMER_PERIOD = 10;
152 static const int FLICK_ANIMATION_FPS_DATE_TIME_BAR = 30;
153 static const int FLICK_ANIMATION_SENSITIVITY_DATE_TIME_BAR = 30;
154 static const int FLICK_ANIMATION_VELOCITY_FACTOR_DATE_TIME_BAR = 3;
156 Tizen::Graphics::FloatRectangle __bodyAreaBounds;
157 Tizen::Graphics::FloatRectangle __arrowAreaBounds;
158 Tizen::Graphics::FloatRectangle __windowAreaBounds;
159 Tizen::Graphics::Bitmap* __pBgColorReplacementBitmap;
160 Tizen::Graphics::Bitmap* __pFocusBitmap;
161 Tizen::Graphics::Bitmap* __pArrowColorReplacementBitmap;
162 bool __isInitialAnimation;
163 int __initialAnimationValue;
164 Tizen::Graphics::Font* __pFont;
167 Tizen::Graphics::FloatRectangle __focusBounds;
168 static const int UPDATE_ITEM_COUNT = 3;
170 }; // _DateTimeBarPresenter
172 }}} // Tizen::Ui::Controls
174 #endif //_FUI_CTRL_INTERNAL_DATETIMEBAR_PRESENTER_H_