add patch
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_SliderPresenter.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0/
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 /**
19  * @file                FUiCtrl_SliderPresenter.h
20  * @brief               This is the header file for the _SliderPresenter class.
21  *
22  * This header file contains the declarations of the %_SliderPresenter class.
23  */
24 #ifndef _FUI_CTRL_INTERNAL_SLIDER_PRESENTER_H_
25 #define _FUI_CTRL_INTERNAL_SLIDER_PRESENTER_H_
26
27 #include <FBaseObject.h>
28 #include <FUiCtrlSlider.h>
29 #include <FGrp_TextTextObject.h>
30 #include "FUi_Control.h"
31
32 namespace Tizen { namespace Ui { namespace Controls
33 {
34 class _Slider;
35 class _SliderModel;
36 class _SliderOverlay;
37
38
39 class _SliderPresenter
40         : public Tizen::Base::Object
41         , public Tizen::Base::Runtime::ITimerEventListener
42 {
43 public:
44         virtual ~_SliderPresenter(void);
45
46         result Draw(void);
47         void SetMinValue(int minValue);
48         void SetMaxValue(int maxValue);
49         int GetMinValue(void) const;
50         int GetMaxValue(void) const;
51         void SetValue(int value);
52         int GetValue(void) const;
53         void SetNeedUpdate(void);
54         void SetGroupStyle(GroupStyle groupStyle);
55
56         Tizen::Graphics::FloatRectangle GetTitleTextBounds(void) const;
57         Tizen::Graphics::FloatRectangle GetIconBounds(IconPosition iconPosition) const;
58         Tizen::Graphics::FloatRectangle GetTouchBounds(void) const;
59
60         _SliderOverlay* GetSliderOverlay(void) const;
61         bool IsTouchPressed(void) const;
62
63         virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
64         virtual bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
65         virtual bool OnTouchMoved(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
66         virtual bool OnTouchCanceled(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
67         virtual void OnBoundsChanged(void);
68         virtual void OnChangeLayout(Tizen::Ui::_ControlOrientation orientation);
69
70         void OnFontChanged(Tizen::Graphics::Font* pFont);
71         void OnFontInfoRequested(unsigned long& style, float& size);
72         virtual void OnAncestorEnableStateChanged(const _Control& control);
73         virtual void OnAncestorVisibleStateChanged(const _Control& control);
74
75         static _SliderPresenter* CreateInstanceN(const _Slider& slider);
76         result SetThumbBitmap(SliderThumbStatus status, const Tizen::Graphics::Bitmap& bitmap);
77         void SetThumbTextColor(SliderThumbStatus status, const Tizen::Graphics::Color& color);
78         void SetFocusMode(bool focusmode);
79         bool GetFocusMode(void);
80         virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
81
82 private:
83         int CalculateSliderValue(float positionX, float offsetX);
84         result Resize(void);
85         result LoadBitmap(void);
86         result DrawSlider(void);
87         result DrawBackground(Tizen::Graphics::Canvas& canvas);
88         result DrawSliderBar(Tizen::Graphics::Canvas& canvas);
89         result DrawTitleText(Tizen::Graphics::Canvas& canvas);
90         result DrawIcon(Tizen::Graphics::Canvas& canvas);
91         result DrawSliderOverlay(int value);
92         result DrawSliderBarNumber(int value);
93         result DrawBitmap(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::FloatRectangle& bounds, Tizen::Graphics::Bitmap* pBitmap);
94
95         _SliderPresenter(void);
96         _SliderPresenter(const _SliderPresenter&);
97         _SliderPresenter& operator =(const _SliderPresenter&);
98
99 private:
100
101         static const int SLIDER_HANDLE_THREE_DIGIT = 3;
102         static const int SLIDER_HANDLE_TWO_DIGIT = 2;
103
104         _Slider* __pSlider;
105         _SliderModel* __pSliderModel;
106         _SliderOverlay* __pSliderOverlay;
107         Tizen::Graphics::FloatRectangle __rect;
108         Tizen::Graphics::FloatRectangle __touchRect;
109         Tizen::Graphics::FloatRectangle __barBgRect;
110         Tizen::Graphics::FloatRectangle __barRect;
111         Tizen::Graphics::FloatRectangle __handleRect;
112
113         Tizen::Base::Runtime::Timer* __pSlideTimer;
114
115         Tizen::Graphics::Bitmap* __pResourceBgTopBitmap;
116         Tizen::Graphics::Bitmap* __pResourceBgMiddleBitmap;
117         Tizen::Graphics::Bitmap* __pResourceBgBottomBitmap;
118         Tizen::Graphics::Bitmap* __pResourceBgSingleBitmap;
119
120
121         Tizen::Graphics::Bitmap* __pBgTopBitmap;
122         Tizen::Graphics::Bitmap* __pBgMiddleBitmap;
123         Tizen::Graphics::Bitmap* __pBgBottomBitmap;
124         Tizen::Graphics::Bitmap* __pBgSingleBitmap;
125         Tizen::Graphics::Bitmap* __pBgGrpStyleNoneBitmap;
126
127         Tizen::Graphics::Bitmap* __pBgTopEffectBitmap;
128         Tizen::Graphics::Bitmap* __pBgMiddleEffectBitmap;
129         Tizen::Graphics::Bitmap* __pBgBottomEffectBitmap;
130         Tizen::Graphics::Bitmap* __pBgSingleEffectBitmap;
131
132         Tizen::Graphics::Bitmap* __pResourceBarBitmap;
133         Tizen::Graphics::Bitmap* __pResourceBarBgBitmap;
134         Tizen::Graphics::Bitmap* __pBarResourceEffectBitmap;
135         Tizen::Graphics::Bitmap* __pBarBgResourceEffectBitmap;
136         Tizen::Graphics::Bitmap* __pBarColorReplacementBitmap;
137         Tizen::Graphics::Bitmap* __pBarBgColorReplacementBitmap;
138
139         Tizen::Graphics::Bitmap* __pHandleNormalBitmap;
140         Tizen::Graphics::Bitmap* __pHandlePressedBitmap;
141         Tizen::Graphics::Bitmap* __pHandleDisabledBitmap;
142         Tizen::Graphics::Bitmap* __pHandleHighlightedBitmap;
143
144         Tizen::Graphics::Bitmap* __pHandleNormalEffectBitmap;
145         Tizen::Graphics::Bitmap* __pHandlePressedEffectBitmap;
146         Tizen::Graphics::Bitmap* __pHandleDisabledEffectBitmap;
147         Tizen::Graphics::Bitmap* __pHandleHighlightedEffectBitmap;
148
149         Tizen::Graphics::Color __currentBarColor;
150         Tizen::Graphics::Color __currentBarBgColor;
151         Tizen::Graphics::Color __currentBgColor;
152         Tizen::Graphics::Color __currentGrpStyleNoneColor;
153
154         Tizen::Graphics::Color __handleTextColor;
155         Tizen::Graphics::Color __handleTextPressedColor;
156         Tizen::Graphics::Color __handleTextDisabledColor;
157         Tizen::Graphics::Color __handleTextHighlightedColor;
158
159         Tizen::Graphics::Font* __pFont;
160         Tizen::Graphics::_Text::TextObject* __pTitleTextObject;
161
162         int __handleX;
163         int __prevSliderValue;
164         int __handleOffset;
165         bool __isSliderPressed;
166         bool __isSetValue;
167         bool __isFocusModeStateChanged;
168
169         bool __isNeedToBeUpdated;
170         bool __isResourceLoaded;
171         bool __isCustomHandle;
172         bool __isCustomPressedTextColor;
173         bool __isTouchCanceled;
174         GroupStyle __groupStyle;
175         float __fontSize;
176         float __barOffset;
177
178         bool __isTimerRunning;
179
180         Tizen::Graphics::FloatPoint __currentPosition;
181         static const int __timerValue = 5;
182 };      // _SliderPresenter
183
184 }}} // Tizen::Ui::Controls
185
186 #endif  // _FUI_CTRL_INTERNAL_SLIDER_PRESENTER_H_