Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_TabBar.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_TabBar.h
19  * @brief       This is the header file for the _TabBar class.
20  *
21  * This header file contains the declarations of the %_TabBar class.
22  */
23 #ifndef _FUI_CTRL_INTERNAL_TABBAR_H_
24 #define _FUI_CTRL_INTERNAL_TABBAR_H_
25
26
27 #include "FUi_Control.h"
28 #include "FUiCtrl_TabBarItem.h"
29 #include "FUiCtrl_TabBarPresenter.h"
30 #include "FUiCtrl_IActionEventListener.h"
31 #include "FUiCtrl_ActionEvent.h"
32
33 namespace Tizen { namespace Ui {
34 class _AccessibilityElement;
35 }} // Tizen::Ui
36
37 namespace Tizen { namespace Ui { namespace Controls
38 {
39
40 class _TabBarPresenter;
41
42 /**
43  * @class _TabBar
44  * @brief
45  * @since 2.0
46  *
47  *
48  *
49  *
50  */
51 class _OSP_EXPORT_ _TabBar
52         : public Tizen::Ui::_Control
53         , virtual public Tizen::Base::Runtime::IEventListener
54         , virtual public _IUiEventListener
55         , virtual public _IUiEventPreviewer
56 {
57         DECLARE_CLASS_BEGIN(_TabBar, _Control);
58         DECLARE_PROPERTY("color", GetPropertyColor, SetPropertyColor);
59         DECLARE_PROPERTY("normalItemColor", GetPropertyNormalItemColor, SetPropertyNormalItemColor);
60         DECLARE_PROPERTY("selectedItemColor", GetPropertySelectedItemColor, SetPropertySelectedItemColor);
61         DECLARE_PROPERTY("highlightedItemColor", GetPropertyHighlightedItemColor, SetPropertyHighlightedItemColor);
62         DECLARE_PROPERTY("normalItemTextColor", GetPropertyNormalItemTextColor, SetPropertyNormalItemTextColor);
63         DECLARE_PROPERTY("selectedItemTextColor", GetPropertySelectedItemTextColor, SetPropertySelectedItemTextColor);
64         DECLARE_PROPERTY("highlightedItemTextColor", GetPropertyHighlightedItemTextColor, SetPropertyHighlightedItemTextColor);
65         DECLARE_CLASS_END();
66
67 // Properties
68         result SetPropertyColor(const Variant& color);
69         Variant GetPropertyColor(void) const;
70
71         result SetPropertyNormalItemColor(const Variant& color);
72         Variant GetPropertyNormalItemColor(void) const;
73
74         result SetPropertySelectedItemColor(const Variant& color);
75         Variant GetPropertySelectedItemColor(void) const;
76
77         result SetPropertyHighlightedItemColor(const Variant& color);
78         Variant GetPropertyHighlightedItemColor(void) const;
79
80         result SetPropertyNormalItemTextColor(const Variant& color);
81         Variant GetPropertyNormalItemTextColor(void) const;
82
83         result SetPropertySelectedItemTextColor(const Variant& color);
84         Variant GetPropertySelectedItemTextColor(void) const;
85
86         result SetPropertyHighlightedItemTextColor(const Variant& color);
87         Variant GetPropertyHighlightedItemTextColor(void) const;
88
89 // Lifecycle
90 public:
91         virtual ~_TabBar(void);
92
93 // Operations
94 public:
95         static _TabBar* CreateTabBarN(void);
96         result Initialize(void);
97         result AddItem(const Tizen::Base::String& text, int actionId);
98         result InsertItemAt(int index, const Tizen::Base::String& text, int actionId);
99         result SetItemAt(int index, const Tizen::Base::String& text, int actionId);
100         result RemoveItemAt(int index);
101         result RemoveAllItems(void);
102
103         result SetColor(Tizen::Graphics::Color color);
104         Tizen::Graphics::Color GetColor(void) const;
105
106         result SetItemColor(_TabBarItemStatus itemStatus, Tizen::Graphics::Color color);
107         Tizen::Graphics::Color GetItemColor(_TabBarItemStatus itemStatus) const;
108
109         void SetItemTextColor(_TabBarItemStatus status, Tizen::Graphics::Color color);
110         Tizen::Graphics::Color GetItemTextColor(_TabBarItemStatus status) const;
111
112         result SetItemSelected(int index);
113         int GetSelectedItemIndex(void) const;
114
115         _TabBarItem* GetItemFromPosition(const Tizen::Graphics::Point& position) const;
116         result SetTopDrawnItemIndex(int index);
117
118         int GetItemCount(void) const;
119
120         result SetWidth(int width);
121
122         void AddActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
123         void RemoveActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
124
125         Tizen::Ui::_AccessibilityElement* GetAccessibilityElement(const int mainIndex) const;
126         void AddAccessibilityElement(const _AccessibilityElement& element);
127
128         virtual void OnDraw(void);
129
130         virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
131         virtual void OnFontInfoRequested(unsigned long& style, int& size);
132
133         virtual bool OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
134         virtual bool OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
135         virtual bool OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
136         virtual void OnBoundsChanged(void);
137
138 protected:
139         result SetPresenter(const _TabBarPresenter& tabBarPresenter);
140
141 private:
142         void SetAllAccessibilityElement(void);
143         void RemoveAllAccessibilityElement(void);
144
145 private:
146         _TabBar(void);
147
148         _TabBar(const _TabBar& rhs);
149         _TabBar& operator =(const _TabBar& rhs);
150
151 // Attribute
152 private:
153         _TabBarPresenter* __pTabBarPresenter;
154
155         _ActionEvent* __pActionEvent;
156
157         Tizen::Graphics::Color __color;
158         Tizen::Graphics::Color __itemColor[ITEM_STATUS_MAX];
159         Tizen::Graphics::Color __itemTextColor[ITEM_STATUS_MAX];
160         Tizen::Base::Collection::LinkedListT<_AccessibilityElement*> __accessibilityElements;
161 }; // _TabBar
162
163 }}} // Tizen::Ui::Controls
164
165 #endif // _FUI_CTRL_INTERNAL_TABBAR_H_