24d9d50f1b01191a5a001e5fb1f00884025371b8
[platform/framework/native/uifw.git] / src / ui / inc / FUiCtrl_Slider.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_Slider.h
20  * @brief               This is the header file for the _Slider class.
21  *
22  * This header file contains the declarations of the %_Slider class.
23  */
24 #ifndef _FUI_CTRL_INTERNAL_SLIDER_H_
25 #define _FUI_CTRL_INTERNAL_SLIDER_H_
26
27 #include <FUiCtrlSlider.h>
28 #include "FUi_Control.h"
29 #include "FUiCtrl_AdjustmentEvent.h"
30 #include "FUiCtrl_SliderEvent.h"
31 #include "FUi_IAccessibilityListener.h"
32 const int _SLIDER_MAXIMUM_VALUE = 999;
33 const int _SLIDER_MINIMUM_VALUE = -99;
34
35 namespace Tizen { namespace Ui
36 {
37 class _AccessibilityElement;
38 }} // Tizen::Ui
39
40 namespace Tizen { namespace Ui { namespace Controls
41 {
42 class _SliderPresenter;
43 class _ISliderEventListener;
44 class _IAdjustmentEventListener;
45
46 enum _SliderStyle
47 {
48         _SLIDER_STYLE_NONE = 0x00000000,
49         _SLIDER_STYLE_OVERLAY = 0x00000001,
50         _SLIDER_STYLE_TITLE_TEXT = 0x00000002,
51         _SLIDER_STYLE_NO_BG = 0x00000004
52 };
53
54 class _OSP_EXPORT_ _Slider
55         : public Tizen::Ui::_Control
56         , virtual public Tizen::Base::Runtime::IEventListener
57         , virtual public Tizen::Ui::_IUiEventListener
58         , virtual public Tizen::Ui::_IUiEventPreviewer
59         , public Tizen::Ui::_IAccessibilityListener
60 {
61         DECLARE_CLASS_BEGIN(_Slider, Tizen::Ui::_Control);
62         DECLARE_PROPERTY("value", GetPropertyValue, SetPropertyValue);
63         DECLARE_PROPERTY("minValue", GetPropertyMinValue, SetPropertyMinValue);
64         DECLARE_PROPERTY("maxValue", GetPropertyMaxValue, SetPropertyMaxValue);
65         DECLARE_PROPERTY("barColor", GetPropertyBarColor, SetPropertyBarColor);
66         DECLARE_PROPERTY("barBackgroundColor", GetPropertyBarBackgroundColor, SetPropertyBarBackgroundColor);
67         DECLARE_PROPERTY("color", GetPropertyColor, SetPropertyColor);
68         DECLARE_PROPERTY("titleText", GetPropertyTitleText, SetPropertyTitleText);
69         DECLARE_PROPERTY("titleTextColor", GetPropertyTitleTextColor, SetPropertyTitleTextColor);
70         DECLARE_CLASS_END();
71
72 public:
73         result SetPropertyValue(const Tizen::Ui::Variant& value);
74         result SetPropertyMinValue(const Tizen::Ui::Variant& minValue);
75         result SetPropertyMaxValue(const Tizen::Ui::Variant& maxValue);
76         result SetPropertyBarColor(const Tizen::Ui::Variant& barColor);
77         result SetPropertyBarBackgroundColor(const Tizen::Ui::Variant& barBackgroundColor);
78         result SetPropertyTitleText(const Tizen::Ui::Variant& titleText);
79         result SetPropertyTitleTextColor(const Tizen::Ui::Variant& titleTextColor);
80         result SetPropertyColor(const Tizen::Ui::Variant& color);
81         void SetAccessibilityElementValue(void);
82
83         Tizen::Ui::Variant GetPropertyValue(void) const;
84         Tizen::Ui::Variant GetPropertyMinValue(void) const;
85         Tizen::Ui::Variant GetPropertyMaxValue(void) const;
86         Tizen::Ui::Variant GetPropertyBarColor(void) const;
87         Tizen::Ui::Variant GetPropertyBarBackgroundColor(void) const;
88         Tizen::Ui::Variant GetPropertyTitleText(void) const;
89         Tizen::Ui::Variant GetPropertyTitleTextColor(void) const;
90         Tizen::Ui::Variant GetPropertyColor(void) const;
91
92 public:
93         virtual ~_Slider(void);
94
95         void SetStyle(int style);
96         int GetStyle(void) const;
97         Tizen::Graphics::Canvas* GetHandleCanvasN(void) const;
98         Animations::_VisualElement* GetHandle(void) const;
99         void SetGroupStyle(GroupStyle groupStyle);
100         result UpdateHandle(const Tizen::Graphics::FloatRectangle& handleRect);
101
102         result SetRange(int minValue, int maxValue);
103         result GetRange(int& minValue, int& maxValue) const;
104         result SetValue(int value);
105         int GetValue(void) const;
106         result SetIcon(IconPosition position, const Tizen::Graphics::Bitmap& icon);
107         Tizen::Graphics::Bitmap* GetIcon(IconPosition position) const;
108         result SetTitleText(const Tizen::Base::String& title);
109         Tizen::Base::String GetTitleText(void) const;
110         result SetTitleTextColor(const Tizen::Graphics::Color& color);
111         Tizen::Graphics::Color GetTitleTextColor(void) const;
112         result AddAdjustmentEventListener(const _IAdjustmentEventListener& listener);
113         result RemoveAdjustmentEventListener(const _IAdjustmentEventListener& listener);
114         result AddSliderEventListener(const _ISliderEventListener& listener);
115         result RemoveSliderEventListener(const _ISliderEventListener& listener);
116         result SetBarColor(const Tizen::Graphics::Color& color);
117         Tizen::Graphics::Color GetBarColor(void) const;
118         result SetColor(const Tizen::Graphics::Color& color);
119         result SetBarBackgroundColor(const Tizen::Graphics::Color& color);
120         Tizen::Graphics::Color GetBarBackgroundColor(void) const;
121         Tizen::Graphics::Color GetColor(void) const;
122         Tizen::Base::Runtime::_Event* GetAdjustmentEvent(void) const;
123         _SliderEvent* GetSliderEvent(void) const;
124         result SetThumbBitmap(SliderThumbStatus status, const Tizen::Graphics::Bitmap& bitmap);
125         void SetThumbTextColor(SliderThumbStatus status, const Tizen::Graphics::Color& color);
126         void FireSliderMoveEvent(int value);
127         bool IsKeyPressed(void) const;
128
129         virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
130         virtual bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
131         virtual bool OnTouchMoved(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
132         virtual bool OnTouchCanceled(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
133         virtual void OnDrawFocus(void);
134         virtual bool OnFocusGained(const _Control& source);
135         virtual bool OnFocusLost(const _Control &source);
136         virtual bool OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo);
137         virtual bool OnKeyReleased(const _Control &source, const _KeyInfo &keyInfo);
138
139         virtual void OnBoundsChanged(void);
140         virtual void OnChangeLayout(Tizen::Ui::_ControlOrientation orientation);
141         virtual void OnDraw(void);
142         virtual result OnAttachedToMainTree(void);
143         virtual void OnFocusModeStateChanged(void);
144
145         virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
146         virtual void OnFontInfoRequested(unsigned long& style, float& size);
147         virtual void OnAncestorEnableStateChanged(const _Control& control);
148
149         // accessibility listener
150         virtual bool OnAccessibilityFocusMovedNext(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return false;}
151         virtual bool OnAccessibilityFocusMovedPrevious(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return false;}
152         virtual bool OnAccessibilityReadingElement(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return false;}
153         virtual bool OnAccessibilityReadElement(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return false;}
154         virtual bool OnAccessibilityFocusIn(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return false;}
155         virtual bool OnAccessibilityFocusOut(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return false;}
156         virtual bool OnAccessibilityActionPerformed(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element){return false;}
157         virtual bool OnAccessibilityValueIncreased(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element);
158         virtual bool OnAccessibilityValueDecreased(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element);
159         static _Slider* CreateSliderN(void);
160
161 private:
162         _Slider(void);
163         _Slider(const _Slider&);
164         _Slider& operator =(const _Slider&);
165
166         result Initialize(void);
167         result InitializeAccessibilityElement(void);
168
169 private:
170         _SliderPresenter* __pSliderPresenter;
171         _AdjustmentEvent* __pAdjustmentEvent;
172         _SliderEvent* __pSliderEvent;
173
174         Tizen::Base::String __titleText;
175         Tizen::Graphics::Bitmap* __pLeftBitmap;
176         Tizen::Graphics::Bitmap* __pRightBitmap;
177
178         Tizen::Graphics::Color __bgColor;
179         Tizen::Graphics::Color __barColor;
180         Tizen::Graphics::Color __barBgColor;
181         Tizen::Graphics::Color __titleTextColor;
182
183         int __sliderStyle;
184
185         Tizen::Ui::Animations::_VisualElement* __pBase;
186         Tizen::Ui::Animations::_VisualElement* __pHandle;
187
188         Tizen::Ui::_AccessibilityElement* __pAccessibilityElement;
189         bool __isKeyPressed;
190 }; // _Slider
191
192 }}} // Tizen::Ui::Controls
193
194 #endif // _FUI_CTRL_INTERNAL_SLIDER_H_