2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
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
9 // http://floralicense.org/license/
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_Toolbar.h
19 * @brief This is the header file for the _Toolbar class.
21 * This header file contains the declarations of the %_Toolbar class.
24 #ifndef _FUI_CTRL_INTERNAL_TOOLBAR_H_
25 #define _FUI_CTRL_INTERNAL_TOOLBAR_H_
28 #include <FGrpColor.h>
29 #include <FUiCtrlControlsTypes.h>
30 #include "FUi_Control.h"
31 #include "FUi_ITouchLongPressGestureEventListener.h"
32 #include "FUi_ITouchEventListener.h"
33 #include "FUiCtrl_Animation.h"
34 #include "FUiCtrl_Button.h"
35 #include "FUiCtrl_Label.h"
37 namespace Tizen { namespace Ui
39 class _TouchLongPressGestureDetector;
42 namespace Tizen { namespace Ui
44 class _AccessibilityElement;
47 namespace Tizen { namespace Ui { namespace Controls
50 class _ToolbarPresenter;
53 const int TOOLBAR_BUTTON_MAX_STATE_COUNT = 4;
54 const int TOOLBAR_ITEM_MAX_STATE_COUNT = 5;
55 const int TOOLBAR_ACTION_ID_MIN = 0;
56 const int TOOLBAR_ACTION_ID_MAX = (int) 0x7FFFFFFF;
57 const int TOOLBAR_MORE_BUTTON_ID = -2;
58 const int TAB_ITEM_MAX = 15;
59 const int SEGMENTED_ITEM_MAX = 4;
60 const int PROCESSING_ANIMATION_COUNT = 30;
65 TOOLBAR_HEADER_SEGMENTED,
66 TOOLBAR_HEADER_SEGMENTED_WITH_TITLE,
68 TOOLBAR_TAB_WITH_TITLE,
91 enum ToolbarAnimationPosition
93 TOOLBAR_ANIMATION_POSITION_TITLE = 0,
94 TOOLBAR_ANIMATION_POSITION_BUTTON_LEFT,
95 TOOLBAR_ANIMATION_POSITION_BUTTON_RIGHT,
96 TOOLBAR_ANIMATION_POSITION_MAX
101 * @brief _Toolbar class is the core class of Header, Footer classes
104 class _OSP_EXPORT_ _Toolbar
105 : public Tizen::Ui::_Control
106 , public Tizen::Ui::_ITouchLongPressGestureEventListener
107 , public Tizen::Ui::Controls::_IAnimationEventListener
108 , virtual public Tizen::Base::Runtime::IEventListener
109 , virtual public Tizen::Ui::_IUiEventListener
110 , virtual public Tizen::Ui::_IUiEventPreviewer
111 , virtual public Tizen::Ui::_ITouchGestureEventListener
113 DECLARE_CLASS_BEGIN(_Toolbar, _Control);
114 DECLARE_PROPERTY("color", GetPropertyColor, SetPropertyColor);
115 DECLARE_PROPERTY("descriptionText", GetPropertyDescriptionText, SetPropertyDescriptionText);
116 DECLARE_PROPERTY("descriptionTextColor", GetPropertyDescriptionTextColor, SetPropertyDescriptionTextColor);
117 DECLARE_PROPERTY("titleText", GetPropertyTitleText, SetPropertyTitleText);
118 DECLARE_PROPERTY("titleTextColor", GetPropertyTitleTextColor, SetPropertyTitleTextColor);
119 DECLARE_PROPERTY("disabledButtonColor", GetPropertyDisabledButtonColor, SetPropertyDisabledButtonColor);
120 DECLARE_PROPERTY("disabledButtonTextColor", GetPropertyDisabledButtonTextColor, SetPropertyDisabledButtonTextColor);
121 DECLARE_PROPERTY("highlightedButtonColor", GetPropertyHighlightedButtonColor, SetPropertyHighlightedButtonColor);
122 DECLARE_PROPERTY("highlightedButtonTextColor", GetPropertyHighlightedButtonTextColor, SetPropertyHighlightedButtonTextColor);
123 DECLARE_PROPERTY("normalButtonColor", GetPropertyNormalButtonColor, SetPropertyNormalButtonColor);
124 DECLARE_PROPERTY("normalButtonTextColor", GetPropertyNormalButtonTextColor, SetPropertyNormalButtonTextColor);
125 DECLARE_PROPERTY("pressedButtonColor", GetPropertyPressedButtonColor, SetPropertyPressedButtonColor);
126 DECLARE_PROPERTY("pressedButtonTextColor", GetPropertyPressedButtonTextColor, SetPropertyPressedButtonTextColor);
127 DECLARE_PROPERTY("disabledItemColor", GetPropertyDisabledItemColor, SetPropertyDisabledItemColor);
128 DECLARE_PROPERTY("disabledItemTextColor", GetPropertyDisabledItemTextColor, SetPropertyDisabledItemTextColor);
129 DECLARE_PROPERTY("highlightedItemColor", GetPropertyHighlightedItemColor, SetPropertyHighlightedItemColor);
130 DECLARE_PROPERTY("highlightedItemTextColor", GetPropertyHighlightedItemTextColor, SetPropertyHighlightedItemTextColor);
131 DECLARE_PROPERTY("normalItemColor", GetPropertyNormalItemColor, SetPropertyNormalItemColor);
132 DECLARE_PROPERTY("normalItemTextColor", GetPropertyNormalItemTextColor, SetPropertyNormalItemTextColor);
133 DECLARE_PROPERTY("pressedItemColor", GetPropertyPressedItemColor, SetPropertyPressedItemColor);
134 DECLARE_PROPERTY("pressedItemTextColor", GetPropertyPressedItemTextColor, SetPropertyPressedItemTextColor);
135 DECLARE_PROPERTY("selectedItemColor", GetPropertySelectedItemColor, SetPropertySelectedItemColor);
136 DECLARE_PROPERTY("selectedItemTextColor", GetPropertySelectedItemTextColor, SetPropertySelectedItemTextColor);
140 result SetPropertyColor(const Variant& color);
141 Variant GetPropertyColor(void) const;
142 result SetPropertyDescriptionText(const Variant& text);
143 Variant GetPropertyDescriptionText(void) const;
144 result SetPropertyDescriptionTextColor(const Variant& color);
145 Variant GetPropertyDescriptionTextColor(void) const;
146 result SetPropertyTitleText(const Variant& text);
147 Variant GetPropertyTitleText(void) const;
148 result SetPropertyTitleTextColor(const Variant& color);
149 Variant GetPropertyTitleTextColor(void) const;
150 result SetPropertyDisabledButtonColor(const Variant& color);
151 Variant GetPropertyDisabledButtonColor(void) const;
152 result SetPropertyDisabledButtonTextColor(const Variant& color);
153 Variant GetPropertyDisabledButtonTextColor(void) const;
154 result SetPropertyHighlightedButtonColor(const Variant& color);
155 Variant GetPropertyHighlightedButtonColor(void) const;
156 result SetPropertyHighlightedButtonTextColor(const Variant& color);
157 Variant GetPropertyHighlightedButtonTextColor(void) const;
158 result SetPropertyNormalButtonColor(const Variant& color);
159 Variant GetPropertyNormalButtonColor(void) const;
160 result SetPropertyNormalButtonTextColor(const Variant& color);
161 Variant GetPropertyNormalButtonTextColor(void) const;
162 result SetPropertyPressedButtonColor(const Variant& color);
163 Variant GetPropertyPressedButtonColor(void) const;
164 result SetPropertyPressedButtonTextColor(const Variant& color);
165 Variant GetPropertyPressedButtonTextColor(void) const;
166 result SetPropertyDisabledItemColor(const Variant& color);
167 Variant GetPropertyDisabledItemColor(void) const;
168 result SetPropertyDisabledItemTextColor(const Variant& color);
169 Variant GetPropertyDisabledItemTextColor(void) const;
170 result SetPropertyHighlightedItemColor(const Variant& color);
171 Variant GetPropertyHighlightedItemColor(void) const;
172 result SetPropertyHighlightedItemTextColor(const Variant& color);
173 Variant GetPropertyHighlightedItemTextColor(void) const;
174 result SetPropertyNormalItemColor(const Variant& color);
175 Variant GetPropertyNormalItemColor(void) const;
176 result SetPropertyNormalItemTextColor(const Variant& color);
177 Variant GetPropertyNormalItemTextColor(void) const;
178 result SetPropertyPressedItemColor(const Variant& color);
179 Variant GetPropertyPressedItemColor(void) const;
180 result SetPropertyPressedItemTextColor(const Variant& color);
181 Variant GetPropertyPressedItemTextColor(void) const;
182 result SetPropertySelectedItemColor(const Variant& color);
183 Variant GetPropertySelectedItemColor(void) const;
184 result SetPropertySelectedItemTextColor(const Variant& color);
185 Variant GetPropertySelectedItemTextColor(void) const;
191 virtual ~_Toolbar(void);
193 static _Toolbar* CreateToolbarN(bool header);
195 virtual result Construct(void);
197 result AddItem(_Button* pButton);
199 Tizen::Graphics::Bitmap* GetBackgroundBitmap(void) const;
201 _Button* GetButton(ToolbarButton position) const;
203 Tizen::Graphics::Color GetButtonColor(_ButtonStatus status) const;
205 _ButtonStatus GetButtonStatus(ToolbarButton position) const;
207 Tizen::Graphics::Color GetButtonTextColor(_ButtonStatus status) const;
209 Tizen::Graphics::Color GetColor(void) const;
211 Tizen::Base::String GetDescriptionText(void) const;
213 Tizen::Graphics::Color GetDescriptionTextColor(void) const;
215 int GetFirstEnabledItemIndex(void) const;
217 _Button* GetItem(int itemIndex) const;
219 Tizen::Graphics::Color GetItemColor(_ButtonStatus status) const;
221 int GetItemCount(void) const;
223 int GetItemIndexFromPosition(const Tizen::Graphics::Point& point) const;
225 result GetItemStatus(int itemIndex, _ButtonStatus& status) const; // Temporarily uses GetItem() instead of this method
227 Tizen::Graphics::Color GetItemTextColor(_ButtonStatus status) const;
229 int GetSelectedItemIndex(void) const;
231 ToolbarStyle GetStyle(void) const;
233 Tizen::Graphics::Bitmap* GetTitleIcon(void) const;
235 Tizen::Base::String GetTitleText(void) const;
237 Tizen::Graphics::Color GetTitleTextColor(void) const;
239 HorizontalAlignment GetTitleTextHorizontalAlignment(void) const;
241 bool IsInitialDraw(void) const;
243 bool IsTabEditModeEnabled(void) const;
245 bool IsTransparent(void) const;
247 AnimationStatus GetWaitingAnimationStatus(ToolbarAnimationPosition animationPos) const;
249 result InsertItemAt(int itemIndex, _Button* pButton);
251 bool IsButtonSet(ToolbarButton position) const;
253 bool IsUserBackgroundBitmap() const;
255 result MoveItem(const int srcIndex, const int destIndex);
257 result PauseWaitingAnimation(ToolbarAnimationPosition animationPos);
259 result PlayWaitingAnimation(ToolbarAnimationPosition animationPos);
261 result RemoveAllButtons(void);
263 result RemoveAllItems(void);
265 result RemoveButtonAt(ToolbarButton position);
267 result RemoveItemAt(int itemIndex);
269 result SetBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap);
271 result SetButton(ToolbarButton position, _Button* pButton);
273 result SetButtonColor(_ButtonStatus status, const Tizen::Graphics::Color& color);
275 result SetButtonEnabled(ToolbarButton position, bool enabled);
277 result SetButtonTextColor(_ButtonStatus status, const Tizen::Graphics::Color& color);
279 result SetButtonBadgeIcon(ToolbarButton position, const Tizen::Graphics::Bitmap* pBadgeIcon);
281 result SetButtonNumberedBadgeIcon(ToolbarButton position, int number);
283 result SetColor(const Tizen::Graphics::Color& color);
285 result SetTranslucentColor(const Tizen::Graphics::Color& color);
287 result SetDescriptionText(const Tizen::Base::String& text);
289 result SetDescriptionTextColor(const Tizen::Graphics::Color& color);
291 result SetItemAt(int itemIndex, const _Button* pButton);
293 result SetItemBadgeIcon(int itemIndex, const Tizen::Graphics::Bitmap* pBadgeIcon);
295 result SetItemColor(_ButtonStatus status, const Tizen::Graphics::Color& color);
297 result SetItemEnabled(int itemIndex, bool enabled);
299 result SetItemNumberedBadgeIcon(int itemIndex, int number);
301 result SetItemSelected(int itemIndex, bool fire = false);
303 result SetItemTextColor(_ButtonStatus status, const Tizen::Graphics::Color& color);
305 result SetStyle(ToolbarStyle style);
307 result SetTabEditModeEnabled(bool enable);
309 result SetTitleIcon(const Tizen::Graphics::Bitmap& bitmap);
311 result SetTitleText(const Tizen::Base::String& text, HorizontalAlignment alignment = ALIGNMENT_LEFT);
313 result SetTitleTextColor(const Tizen::Graphics::Color& color);
315 result SetTransparent(bool transparent);
317 result SetWaitingAnimationPosition(ToolbarAnimationPosition animationPos, int x, int y);
319 result StopWaitingAnimation(ToolbarAnimationPosition animationPos);
321 result InitializeLongPressGesture(void);
323 virtual void OnAnimationStopped(const Tizen::Ui::_Control& source);
325 virtual void OnBoundsChanged(void);
327 virtual void OnChangeLayout(_ControlOrientation orientationStatus);
329 virtual void OnDraw(void);
331 virtual bool OnLongPressGestureDetected(_TouchLongPressGestureDetector& gesture);
333 virtual bool OnLongPressGestureCanceled(_TouchLongPressGestureDetector& gesture);
335 virtual bool OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
337 virtual bool OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
339 virtual bool OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
341 virtual bool OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo);
343 void AddActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
345 void RemoveActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
347 void SetBackEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener, int actionId);
349 virtual result OnAttachedToMainTree(void);
351 virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
353 virtual void OnFontInfoRequested(unsigned long& style, int& size);
355 Tizen::Graphics::Rectangle GetButtonBounds(ToolbarButton position) const;
357 result RealignIcon(_Button* pButton);
359 result RealignButtonIcon(_Button* pButton);
361 result RearrangeItems(void);
364 result SetPresenter(const _ToolbarPresenter& toolbarPresenter);
368 _Toolbar(const _Toolbar& value);
370 _Toolbar& operator =(const _Toolbar& value);
372 result ApplyUserGUI(ButtonType buttonType, _Button* pButton);
374 int CalculateMinimumToolbarWidth(void);
376 result RearrangeHeaderSegmentedItems(void);
378 result RearrangeFooterSegmentedItems(void);
380 result RearrangeTabItmes(void);
382 result RearrangeButtonItems(void);
384 result SetAnimation(ToolbarAnimationPosition animationPos);
386 result SetColorReplacedBitmap(_Button* pButton, const _ButtonStatus status, const Tizen::Graphics::Color& color, const Tizen::Graphics::Bitmap* pBitmap);
388 void InitializeAccessibilityElement(void);
390 result AdjustToolbarBounds(void);
392 void AddAccessibilityItem(_Button* pButton);
394 result Initialize(bool header);
396 result InitToolbarColor(void);
401 _ToolbarPresenter* __pToolbarPresenter;
403 Tizen::Ui::Controls::_IActionEventListener* __pActionEventListener;
405 Tizen::Ui::Controls::_IActionEventListener* __pBackEventListener;
407 _TouchLongPressGestureDetector* __pLongPressGesture;
409 Tizen::Graphics::Bitmap* __pToolbarBackgroundBitmap;
411 Tizen::Graphics::Bitmap* __pTitleIcon;
413 Tizen::Graphics::Color __backgroundColor;
415 Tizen::Base::String __titleText;
417 Tizen::Base::String __descriptionText;
419 Tizen::Graphics::Color __descriptionTextColor;
421 Tizen::Graphics::Color __transDescriptionTextColor;
423 Tizen::Graphics::Color __titleTextColor;
425 Tizen::Graphics::Color __transTitleTextColor;
427 Tizen::Graphics::Color __itemBackgroundColor[TOOLBAR_ITEM_MAX_STATE_COUNT];
429 Tizen::Graphics::Color __itemTextColor[TOOLBAR_ITEM_MAX_STATE_COUNT];
431 Tizen::Graphics::Color __itemTransBackgroundColor[TOOLBAR_ITEM_MAX_STATE_COUNT];
433 Tizen::Graphics::Color __itemTransTextColor[TOOLBAR_ITEM_MAX_STATE_COUNT];
435 bool __isItemBgColorSetByUser[TOOLBAR_ITEM_MAX_STATE_COUNT];
437 bool __isItemTextColorSetByUser[TOOLBAR_ITEM_MAX_STATE_COUNT];
439 Tizen::Graphics::Color __buttonBackgroundColor[TOOLBAR_BUTTON_MAX_STATE_COUNT];
441 Tizen::Graphics::Color __buttonTextColor[TOOLBAR_BUTTON_MAX_STATE_COUNT];
443 Tizen::Graphics::Color __buttonTransBackgroundColor[TOOLBAR_BUTTON_MAX_STATE_COUNT];
445 Tizen::Graphics::Color __buttonTransTextColor[TOOLBAR_BUTTON_MAX_STATE_COUNT];
447 bool __isButtonBgColorSetByUser[TOOLBAR_BUTTON_MAX_STATE_COUNT];
449 bool __isButtonTextColorSetByUser[TOOLBAR_BUTTON_MAX_STATE_COUNT];
452 HorizontalAlignment __titleTextAlignment;
454 std::vector<_Button*> __pItems;
456 _Button* __pButtonItems[BUTTON_MAX];
458 _Animation* __pAnimation[TOOLBAR_ANIMATION_POSITION_MAX];
460 Tizen::Base::Collection::ArrayList* __pAnimationFrameList;
466 ToolbarStyle __style;
470 bool __isUserBackgroundBitmap;
472 Tizen::Graphics::Rectangle __titleTextArea;
474 Tizen::Graphics::Rectangle __itemArea;
476 Tizen::Ui::_AccessibilityElement* __pTitleTextElement;
479 }}} // Tizen::Ui::Controls
481 #endif // _FUI_CTRL_INTERNAL_TOOLBAR_H_