Tizen 2.1 base
[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 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_SliderPresenter.h
19  * @brief               This is the header file for the _SliderPresenter class.
20  *
21  * This header file contains the declarations of the %_SliderPresenter class.
22  */
23 #ifndef _FUI_CTRL_INTERNAL_SLIDER_PRESENTER_H_
24 #define _FUI_CTRL_INTERNAL_SLIDER_PRESENTER_H_
25
26 #include <FBaseObject.h>
27 #include <FUiCtrlSlider.h>
28 #include <FGrp_TextTextObject.h>
29 #include "FUi_Control.h"
30
31 namespace Tizen { namespace Ui { namespace Controls
32 {
33 class _Slider;
34 class _SliderModel;
35 class _SliderOverlay;
36
37
38 class _SliderPresenter
39         : public Tizen::Base::Object
40 {
41 public:
42         virtual ~_SliderPresenter(void);
43
44         result Draw(void);
45         void SetMinValue(int minValue);
46         void SetMaxValue(int maxValue);
47         int GetMinValue(void) const;
48         int GetMaxValue(void) const;
49         void SetValue(int value);
50         int GetValue(void) const;
51         void SetNeedUpdate(void);
52         void SetGroupStyle(GroupStyle groupStyle);
53
54         Tizen::Graphics::Rectangle GetTitleTextBounds(void) const;
55         Tizen::Graphics::Rectangle GetIconBounds(IconPosition iconPosition) const;
56         Tizen::Graphics::Rectangle GetTouchBounds(void) const;
57
58         virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
59         virtual bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
60         virtual bool OnTouchMoved(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
61         virtual bool OnTouchCanceled(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
62         virtual void OnBoundsChanged(void);
63
64         void OnFontChanged(Tizen::Graphics::Font* pFont);
65         void OnFontInfoRequested(unsigned long& style, int& size);
66
67         static _SliderPresenter* CreateInstanceN(const _Slider& slider);
68         result SetThumbBitmap(SliderThumbStatus status, const Tizen::Graphics::Bitmap& bitmap);
69         void SetThumbTextColor(SliderThumbStatus status, const Tizen::Graphics::Color& color);
70
71 private:
72         int CalculateSliderValue(int positionX, int offsetX);
73         result Resize(void);
74         result LoadBitmap(void);
75         result DrawSlider(void);
76         result DrawBackground(Tizen::Graphics::Canvas& canvas);
77         result DrawSliderBar(Tizen::Graphics::Canvas& canvas);
78         result DrawTitleText(Tizen::Graphics::Canvas& canvas);
79         result DrawIcon(Tizen::Graphics::Canvas& canvas);
80         result DrawSliderOverlay(int value);
81         result DrawSliderBarNumber(int value);
82         result DrawBitmap(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& bounds, Tizen::Graphics::Bitmap* pBitmap);
83
84         _SliderPresenter(void);
85         _SliderPresenter(const _SliderPresenter&);
86         _SliderPresenter& operator =(const _SliderPresenter&);
87
88 private:
89
90         static const int SLIDER_HANDLE_THREE_DIGIT = 3;
91         static const int SLIDER_HANDLE_TWO_DIGIT = 2;
92
93         _Slider* __pSlider;
94         _SliderModel* __pSliderModel;
95         _SliderOverlay* __pSliderOverlay;
96         Tizen::Graphics::Rectangle __rect;
97         Tizen::Graphics::Rectangle __touchRect;
98         Tizen::Graphics::Rectangle __barBgRect;
99         Tizen::Graphics::Rectangle __barRect;
100         Tizen::Graphics::Rectangle __handleRect;
101
102         Tizen::Graphics::Bitmap* __pResourceBgTopBitmap;
103         Tizen::Graphics::Bitmap* __pResourceBgMiddleBitmap;
104         Tizen::Graphics::Bitmap* __pResourceBgBottomBitmap;
105         Tizen::Graphics::Bitmap* __pResourceBgSingleBitmap;
106
107
108         Tizen::Graphics::Bitmap* __pBgTopBitmap;
109         Tizen::Graphics::Bitmap* __pBgMiddleBitmap;
110         Tizen::Graphics::Bitmap* __pBgBottomBitmap;
111         Tizen::Graphics::Bitmap* __pBgSingleBitmap;
112         Tizen::Graphics::Bitmap* __pBgGrpStyleNoneBitmap;
113
114         Tizen::Graphics::Bitmap* __pBgTopEffectBitmap;
115         Tizen::Graphics::Bitmap* __pBgMiddleEffectBitmap;
116         Tizen::Graphics::Bitmap* __pBgBottomEffectBitmap;
117         Tizen::Graphics::Bitmap* __pBgSingleEffectBitmap;
118
119
120         Tizen::Graphics::Bitmap* __pResourceBarBitmap;
121         Tizen::Graphics::Bitmap* __pBarResourceEffectBitmap;
122         Tizen::Graphics::Bitmap* __pBarBgResourceEffectBitmap;
123         Tizen::Graphics::Bitmap* __pBarColorReplacementBitmap;
124         Tizen::Graphics::Bitmap* __pBarBgColorReplacementBitmap;
125
126         Tizen::Graphics::Bitmap* __pHandleNormalBitmap;
127         Tizen::Graphics::Bitmap* __pHandlePressedBitmap;
128         Tizen::Graphics::Bitmap* __pHandleDisabledBitmap;
129         Tizen::Graphics::Bitmap* __pHandleHighlightedBitmap;
130
131         Tizen::Graphics::Bitmap* __pHandleNormalEffectBitmap;
132         Tizen::Graphics::Bitmap* __pHandlePressedEffectBitmap;
133         Tizen::Graphics::Bitmap* __pHandleDisabledEffectBitmap;
134         Tizen::Graphics::Bitmap* __pHandleHighlightedEffectBitmap;
135
136         Tizen::Graphics::Color __currentBarColor;
137         Tizen::Graphics::Color __currentBgColor;
138         Tizen::Graphics::Color __currentGrpStyleNoneColor;
139
140         Tizen::Graphics::Color __handleTextColor;
141         Tizen::Graphics::Color __handleTextPressedColor;
142         Tizen::Graphics::Color __handleTextDisabledColor;
143         Tizen::Graphics::Color __handleTextHighlightedColor;
144
145         Tizen::Graphics::Font* __pFont;
146         Tizen::Graphics::_Text::TextObject* __pTitleTextObject;
147
148         int __sliderX;
149         int __handleX;
150         bool __isSliderPressed;
151
152         bool __isNeedToBeUpdated;
153         bool __isBubblingBlocked;
154         bool __isResourceLoaded;
155         bool __isCustomHandle;
156         bool __isCustomPressedTextColor;
157         GroupStyle __groupStyle;
158         int __fontSize;
159 };      // _SliderPresenter
160
161 }}} // Tizen::Ui::Controls
162
163 #endif  // _FUI_CTRL_INTERNAL_SLIDER_PRESENTER_H_