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.
18 * @file FUiCtrl_Button.h
19 * @brief This is the header file for the _Button class.
21 * This header file contains the declarations of the %_Button class.
23 #ifndef _FUI_CTRL_INTERNAL_BUTTON_H_
24 #define _FUI_CTRL_INTERNAL_BUTTON_H_
26 #include <FUiCtrlButton.h>
27 #include "FUi_Control.h"
28 #include "FUiCtrl_IActionEventListener.h"
29 #include "FUiCtrl_ActionEvent.h"
31 namespace Tizen { namespace Ui
33 class _AccessibilityElement;
36 namespace Tizen { namespace Ui { namespace Controls
38 class _ButtonPresenter;
51 _BUTTON_STATUS_NORMAL = 0,
52 _BUTTON_STATUS_DISABLED,
53 _BUTTON_STATUS_PRESSED,
54 _BUTTON_STATUS_HIGHLIGHTED,
55 _BUTTON_STATUS_SELECTED
64 class _OSP_EXPORT_ _Button
65 : public Tizen::Ui::_Control
66 , public _IPropertyChangeEventListener
67 , virtual public Tizen::Base::Runtime::IEventListener
68 , virtual public Tizen::Ui::_IUiEventListener
69 , virtual public Tizen::Ui::_IUiEventPreviewer
71 DECLARE_CLASS_BEGIN(_Button, _Control);
72 DECLARE_PROPERTY("normalColor", GetPropertyNormalColor, SetPropertyNormalColor);
73 DECLARE_PROPERTY("disabledColor", GetPropertyDisabledColor, SetPropertyDisabledColor);
74 DECLARE_PROPERTY("pressedColor", GetPropertyPressedColor, SetPropertyPressedColor);
75 DECLARE_PROPERTY("highlightedColor", GetPropertyHighlightedColor, SetPropertyHighlightedColor);
76 DECLARE_PROPERTY("selectedColor", GetPropertySelectedColor, SetPropertySelectedColor);
77 DECLARE_PROPERTY("normalTextColor", GetPropertyNormalTextColor, SetPropertyNormalTextColor);
78 DECLARE_PROPERTY("disabledTextColor", GetPropertyDisabledTextColor, SetPropertyDisabledTextColor);
79 DECLARE_PROPERTY("pressedTextColor", GetPropertyPressedTextColor, SetPropertyPressedTextColor);
80 DECLARE_PROPERTY("highlightedTextColor", GetPropertyHighlightedTextColor, SetPropertyHighlightedTextColor);
81 DECLARE_PROPERTY("selectedTextColor", GetPropertySelectedTextColor, SetPropertySelectedTextColor);
82 DECLARE_PROPERTY("text", GetPropertyText, SetPropertyText);
83 DECLARE_PROPERTY("textSize", GetPropertyTextSize, SetPropertyTextSize);
84 DECLARE_PROPERTY("actionId", GetPropertyActionId, SetPropertyActionId);
87 result SetPropertyNormalColor(const Variant& color);
88 Variant GetPropertyNormalColor(void) const;
89 result SetPropertyDisabledColor(const Variant& color);
90 Variant GetPropertyDisabledColor(void) const;
91 result SetPropertyPressedColor(const Variant& color);
92 Variant GetPropertyPressedColor(void) const;
93 result SetPropertyHighlightedColor(const Variant& color);
94 Variant GetPropertyHighlightedColor(void) const;
95 result SetPropertySelectedColor(const Variant& color);
96 Variant GetPropertySelectedColor(void) const;
98 result SetPropertyNormalTextColor(const Variant& color);
99 Variant GetPropertyNormalTextColor(void) const;
100 result SetPropertyDisabledTextColor(const Variant& color);
101 Variant GetPropertyDisabledTextColor(void) const;
102 result SetPropertyPressedTextColor(const Variant& color);
103 Variant GetPropertyPressedTextColor(void) const;
104 result SetPropertyHighlightedTextColor(const Variant& color);
105 Variant GetPropertyHighlightedTextColor(void) const;
106 result SetPropertySelectedTextColor(const Variant& color);
107 Variant GetPropertySelectedTextColor(void) const;
109 result SetPropertyText(const Variant& text);
110 Variant GetPropertyText(void) const;
112 result SetPropertyTextSize(const Variant& textSize);
113 Variant GetPropertyTextSize(void) const;
114 result SetPropertyActionId(const Variant& actionId);
115 Variant GetPropertyActionId(void) const;
117 virtual void OnPropertyChanging(Tizen::Ui::_PropertyBase& source, const Tizen::Base::String& name, const Variant& oldProperty, const Variant& newProperty);
118 virtual void OnPropertyChanged(Tizen::Ui::_PropertyBase& source, const Tizen::Base::String& name, const Variant& oldProperty, const Variant& newProperty);
121 virtual ~_Button(void);
124 static _Button* CreateButtonN(void);
126 virtual void OnDraw(void);
127 virtual result OnAttachedToMainTree(void);
128 virtual bool OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
129 virtual bool OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
130 virtual bool OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
131 virtual bool OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo);
132 virtual void OnTouchMoveHandled(const _Control& control);
133 virtual bool OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo);
134 virtual bool OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo);
135 virtual void OnBoundsChanged(void);
136 virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
137 virtual void OnFontInfoRequested(unsigned long& style, int& size);
138 virtual void OnFontInfoRequested(unsigned long& style, float& size);
139 virtual Tizen::Graphics::FloatDimension GetContentSizeF(bool horizontalMode, bool verticalMode) const;
140 virtual void OnAncestorEnableStateChanged(const _Control& control);
141 virtual void OnDrawFocus(void);
142 virtual void OnChildControlFocusMoved(const _Control& control);
143 virtual bool IsChildControlFocusManage(void) const;
144 virtual void OnFocusableStateChanged(bool focusalbeState);
145 virtual void OnFocusModeStateChanged(void);
146 virtual bool OnFocusGained(const _Control& source);
147 virtual bool OnFocusLost(const _Control& source);
148 virtual Tizen::Graphics::Canvas* OnCanvasRequestedN(const Tizen::Graphics::FloatRectangle& bounds);
151 result SetText(const Tizen::Base::String& text);
152 Tizen::Base::String GetText(void) const;
154 result SetColor(_ButtonStatus status, const Tizen::Graphics::Color& color);
155 Tizen::Graphics::Color GetColor(_ButtonStatus status) const;
157 result AddActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
158 result RemoveActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
160 result SetActionId(int actionId);
161 int GetActionId(void) const;
163 result SetTextHorizontalAlignment(HorizontalAlignment alignment);
164 HorizontalAlignment GetTextHorizontalAlignment(void) const;
165 result SetTextVerticalAlignment(VerticalAlignment alignment);
166 VerticalAlignment GetTextVerticalAlignment(void) const;
168 result SetTextColor(_ButtonStatus status, const Tizen::Graphics::Color& color);
169 Tizen::Graphics::Color GetTextColor(_ButtonStatus status) const;
171 result SetBitmap(_ButtonStatus status, const Tizen::Graphics::Point& position, const Tizen::Graphics::Bitmap& bitmap);
172 Tizen::Graphics::Bitmap* GetBitmap(_ButtonStatus status) const;
173 Tizen::Graphics::Point GetBitmapPosition(_ButtonStatus status) const;
175 result SetBitmap(_ButtonStatus status, const Tizen::Graphics::FloatPoint& position, const Tizen::Graphics::Bitmap& bitmap);
176 Tizen::Graphics::FloatPoint GetBitmapPositionF(_ButtonStatus status) const;
178 result SetEffectBitmap(_ButtonStatus status, const Tizen::Graphics::Point& position, const Tizen::Graphics::Bitmap& bitmap);
179 Tizen::Graphics::Bitmap* GetEffectBitmap(_ButtonStatus status) const;
180 Tizen::Graphics::Point GetEffectBitmapPosition(_ButtonStatus status) const;
182 result SetEffectBitmap(_ButtonStatus status, const Tizen::Graphics::FloatPoint& position, const Tizen::Graphics::Bitmap& bitmap);
183 Tizen::Graphics::FloatPoint GetEffectBitmapPositionF(_ButtonStatus status) const;
185 result SetToolbarItemBackgroundBitmap(_ButtonStatus status, const Tizen::Graphics::Bitmap& bitmap);
186 Tizen::Graphics::Bitmap* GetToolbarItemBackgroundBitmap(_ButtonStatus status) const;
188 result SetUnderlineBitmap(const Tizen::Graphics::Bitmap& bitmap);
189 Tizen::Graphics::Bitmap* GetUnderlineBitmap(void) const;
191 result SetTabTextDimLeftBitmap(const Tizen::Graphics::Bitmap& bitmap);
192 Tizen::Graphics::Bitmap* GetTabTextDimLeftBitmap(void) const;
194 result SetTabTextDimRightBitmap(const Tizen::Graphics::Bitmap& bitmap);
195 Tizen::Graphics::Bitmap* GetTabTextDimRightBitmap(void) const;
197 result SetSubTitleEffectBitmap(const Tizen::Graphics::Bitmap& bitmap);
198 Tizen::Graphics::Bitmap* GetSubTitleEffectBitmap(void) const;
200 result SetBackgroundBitmap(_ButtonStatus status, const Tizen::Graphics::Bitmap& bitmap);
201 Tizen::Graphics::Bitmap* GetBackgroundBitmap(_ButtonStatus status) const;
203 result SetBackgroundEffectBitmap(_ButtonStatus status, const Tizen::Graphics::Bitmap& bitmap);
204 Tizen::Graphics::Bitmap* GetBackgroundEffectBitmap(_ButtonStatus status) const;
206 result SetTextSize(int size, unsigned long fontStyle = Tizen::Graphics::FONT_STYLE_PLAIN);
207 int GetTextSize(void) const;
209 result SetTextSize(float size, unsigned long fontStyle = Tizen::Graphics::FONT_STYLE_PLAIN);
210 float GetTextSizeF(void) const;
212 result SetButtonStyle(_ButtonStyle buttonStyle);
213 _ButtonStyle GetButtonStyle(void) const;
215 result SetButtonStatus(_ButtonStatus buttonStatus, bool fire = true);
216 _ButtonStatus GetButtonStatus(void) const;
218 result SetTextMaxLine(int textMaxLine);
219 int GetTextMaxLine(void) const;
221 result UnloadBackgroundBitmap(_ButtonStatus status);
222 result UnloadBackgroundEffectBitmap(_ButtonStatus status);
223 bool IsUserBackgroundBitmap(_ButtonStatus status) const;
224 bool IsUserBackgroundEffectBitmap(_ButtonStatus status) const;
227 result FireActionEvent(void);
229 result SetUserDefinedTextArea(const Tizen::Graphics::Rectangle& bounds);
230 result SetUserDefinedTextArea(const Tizen::Graphics::FloatRectangle& bounds);
231 Tizen::Graphics::Rectangle GetUserDefinedTextArea(void) const;
232 Tizen::Graphics::FloatRectangle GetUserDefinedTextAreaF(void) const;
234 bool UserDefinedText(void) const;
235 result ShowUnderlineBitmap(bool show);
237 result SetMargin(int leftMargin, int topMargin, int rightMargin, int bottomMargin);
238 int GetLeftMargin(void) const;
239 int GetTopMargin(void) const;
240 int GetRightMargin(void) const;
241 int GetBottomMargin(void) const;
243 result SetMargin(float leftMargin, float topMargin, float rightMargin, float bottomMargin);
244 float GetLeftMarginF(void) const;
245 float GetTopMarginF(void) const;
246 float GetRightMarginF(void) const;
247 float GetBottomMarginF(void) const;
249 Tizen::Graphics::FloatDimension GetContentSizeInternalF(bool horizontalMode, bool verticalMode) const;
250 int GetTextExtentSize(void) const;
251 float GetTextExtentSizeF(void) const;
253 result SetMultilineTextSize(const Variant& textsize);
254 float GetMultilineTextSizeF(void) const;
256 bool IsMultilineFontSizeSet(void) const;
258 result SetTabTextSlide(bool tabTextSlide);
259 bool IsTabTextSlide(void) const;
262 result SetPresenter(const _ButtonPresenter& buttonPresenter);
265 bool IsTouchAreaChanged(bool currentButtonArea);
266 void InitializeAccessibilityElement(void);
269 _Button(const _Button& rhs);
270 _Button& operator =(const _Button& rhs);
275 NUMBER_OF_BUTTON_STATUS = 5
279 _ButtonPresenter* __pButtonPresenter;
280 _ActionEvent* __pActionEvent;
284 Tizen::Base::String __text;
286 Tizen::Graphics::Color __textColor[NUMBER_OF_BUTTON_STATUS];
287 Tizen::Graphics::Color __color[NUMBER_OF_BUTTON_STATUS];
289 Tizen::Graphics::Bitmap* __pBitmap[NUMBER_OF_BUTTON_STATUS];
290 Tizen::Graphics::FloatPoint __bitmapPosition[NUMBER_OF_BUTTON_STATUS];
292 Tizen::Graphics::Bitmap* __pEffectBitmap[NUMBER_OF_BUTTON_STATUS];
293 Tizen::Graphics::FloatPoint __effectBitmapPosition[NUMBER_OF_BUTTON_STATUS];
295 Tizen::Graphics::Bitmap* __pToolbarItemBackgroundBitmap[NUMBER_OF_BUTTON_STATUS];
296 Tizen::Graphics::Bitmap* __pBackgroundBitmap[NUMBER_OF_BUTTON_STATUS];
297 Tizen::Graphics::Bitmap* __pBackgroundEffectBitmap[NUMBER_OF_BUTTON_STATUS];
298 Tizen::Graphics::Bitmap* __pUnderlineBitmap;
299 Tizen::Graphics::Bitmap* __pTabTextDimLeftBitmap;
300 Tizen::Graphics::Bitmap* __pTabTextDimRightBitmap;
301 Tizen::Graphics::Bitmap* __pSubTitleEffectBitmap;
303 HorizontalAlignment __horizontalAlignment;
304 VerticalAlignment __verticalAlignment;
306 _ButtonStatus __buttonStatus;
307 _ButtonStyle __buttonStyle;
310 float __multilineFontSize;
313 bool __isSettingMultilineFontSize;
315 bool __isUserBackgroundBitmap[NUMBER_OF_BUTTON_STATUS];
316 bool __isUserBackgroundEffectBitmap[NUMBER_OF_BUTTON_STATUS];
318 bool __previousTouchArea;
320 bool __userDefinedText;
327 float __bottomMargin;
329 Tizen::Graphics::FloatRectangle __userDefinedTextArea;
331 Tizen::Ui::_AccessibilityElement* __pTextElement;
333 static const float SENSITIVE = 0.08f;
336 }}} // Tizen::Ui::Controls
338 #endif // _FUI_CTRL_INTERNAL_BUTTON_H_