Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_Tab.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_Tab.h
19  * @brief       This is the header file for the _Tab class.
20  *
21  * This header file contains the declarations of the %_Tab class.
22  */
23 #ifndef _FUICTRL_INTERNAL_TAB_H_
24 #define _FUICTRL_INTERNAL_TAB_H_
25
26
27 #include <FUiControl.h>
28 #include "FUi_Control.h"
29 #include "FUi_ITouchLongPressGestureEventListener.h"
30 #include "FUi_ITouchFlickGestureEventListener.h"
31 #include "FUi_IAccessibilityListener.h"
32 #include "FUiCtrl_ActionEvent.h"
33 #include "FUiCtrl_IActionEventListener.h"
34 #include "FUiCtrl_TabItem.h"
35 #include "FUiCtrl_TabPresenter.h"
36
37 const int _TAB_STATE = 6;
38 const int _TAB_ACTION_ID_MIN = 0;
39 const int _TAB_ACTION_ID_MAX = 999;
40 const int _TAB_ITEM_MAXCOUNT = 14;      // 3 Line
41
42 namespace Tizen { namespace Ui { namespace Controls {
43
44         class _PublicActionEvent;
45         class _TabPresenter;
46         class _TabItem;
47
48 // enum
49 enum _TabStatus
50 {
51         _TAB_STATUS_NORMAL = 0,         /** The normal status */
52         _TAB_STATUS_PRESSED,            /** The pressed status */
53         _TAB_STATUS_SELECTED,           /** The selected status */
54         _TAB_STATUS_HIGHLIGHTED,        /** The focused status */
55         _TAB_STATUS_DISABLED,           /** The disabled status */
56
57         _TAB_STATUS_MAX
58 };
59
60 enum _TabStyle
61 {
62         _TAB_STYLE_TEXT,
63         _TAB_STYLE_ICON,
64         _TAB_STYLE_ICON_TEXT
65 };
66
67
68 /**
69  * @class _Tab
70  * @brief
71  * @since 2.0
72  *
73  *
74  *
75  *
76  */
77 class _OSP_EXPORT_ _Tab
78         : public Tizen::Ui::_Control
79         , public Tizen::Ui::_ITouchLongPressGestureEventListener
80         , public Tizen::Ui::_IAccessibilityListener
81         , virtual public Tizen::Base::Runtime::IEventListener
82         , virtual public Tizen::Ui::_IUiEventListener
83         , virtual public Tizen::Ui::_IUiEventPreviewer
84         , virtual public Tizen::Ui::_ITouchGestureEventListener
85         , virtual public Tizen::Ui::_ITouchFlickGestureEventListener
86 {
87 private:
88         _Tab(const _Tab& value);
89         _Tab& operator=(const _Tab& value);
90
91 public:
92         _Tab(void);
93         virtual ~_Tab(void);
94
95 public:
96         static _Tab* CreateTabN(void);
97
98 protected:
99         result SetPresenter(const _TabPresenter& tabPresenter);
100
101
102 public:
103         result AddItem(const Tizen::Graphics::Bitmap& icon, const Tizen::Base::String& text, int actionId);
104         result AddItem(const Tizen::Graphics::Bitmap& icon, int actionId);
105         result AddItem(const Tizen::Base::String& text, int actionId);
106
107         result InsertItemAt(int index, const Tizen::Graphics::Bitmap& icon, const Tizen::Base::String& text, int actionId);
108         result InsertItemAt(int index, const Tizen::Graphics::Bitmap& icon, int actionId);
109         result InsertItemAt(int index, const Tizen::Base::String& text, int actionId);
110
111         result SetItemAt(int index, const Tizen::Graphics::Bitmap& icon, const Tizen::Base::String& text, int actionId);
112         result SetItemAt(int index, const Tizen::Graphics::Bitmap& icon, int actionId);
113         result SetItemAt(int index, const Tizen::Base::String& text, int actionId);
114
115         result RemoveItemAt(int index);
116         result RemoveAllItems(void);
117
118         bool ChangeItemAt(const int srcIndex, const int destIndex);
119
120         result SetBadgeIcon(int actionId, const Tizen::Graphics::Bitmap* pBadgeIcon);
121
122         int GetItemCount(void) const;
123
124         int GetItemIndexFromActionId(int actionId) const;
125         int GetItemActionIdAt(int index) const;
126
127         _TabItem* GetItemAt(int index);
128
129
130         void SetSelectedItemIndex(int index);
131         int GetSelectedItemIndex(void) const;
132
133         void SetFirstDrawnItemIndex(int index);
134         int GetFirstDrawnItemIndex(void) const;
135
136         void SetEditModeEnabled(bool enable);
137         bool IsEditModeEnabled(void) const;
138
139         result SetBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap);
140         Tizen::Graphics::Bitmap* GetBackgroundBitmap(void) const;
141
142         result SetPressedItemBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap);
143         Tizen::Graphics::Bitmap* GetPressedItemBackgroundBitmap(void) const;
144
145         result SetSelectedItemBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap);
146         Tizen::Graphics::Bitmap* GetSelectedItemBackgroundBitmap(void) const;
147
148         result SetHighlightedItemBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap);
149         Tizen::Graphics::Bitmap* GetHighlightedItemBackgroundBitmap(void) const;
150
151         void SetItemBackgroundColor(Tizen::Graphics::Color color);
152         Tizen::Graphics::Color GetItemBackgroundColor(void) const;
153
154         void SetPressedItemBackgroundColor(Tizen::Graphics::Color color);
155         Tizen::Graphics::Color GetPressedItemBackgroundColor(void) const;
156
157         void SetSelectedItemBackgroundColor(Tizen::Graphics::Color color);
158         Tizen::Graphics::Color GetSelectedItemBackgroundColor(void) const;
159
160         void SetHighlightedItemBackgroundColor(Tizen::Graphics::Color color);
161         Tizen::Graphics::Color GetHighlightedItemBackgroundColor(void) const;
162
163         void SetTextColor(const Tizen::Graphics::Color& textColor);
164         Tizen::Graphics::Color GetTextColor(void) const;
165
166         void SetPressedTextColor(const Tizen::Graphics::Color& textColor);
167         Tizen::Graphics::Color GetPressedTextColor(void) const;
168
169         void SetSelectedTextColor(const Tizen::Graphics::Color& textColor);
170         Tizen::Graphics::Color GetSelectedTextColor(void) const;
171
172         void SetHighlightedTextColor(const Tizen::Graphics::Color& textColor);
173         Tizen::Graphics::Color GetHighlightedTextColor(void) const;
174
175         void SetStyle(int style);
176         _TabStyle GetStyle(void) const;
177
178         void AddActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
179         void RemoveActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
180
181         virtual bool OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
182         virtual bool OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
183         virtual bool OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
184
185         virtual bool OnLongPressGestureDetected(_TouchLongPressGestureDetector& gesture);
186         virtual bool OnLongPressGestureCanceled(_TouchLongPressGestureDetector& gesture);
187
188         virtual bool OnFlickGestureDetected(_TouchFlickGestureDetector& gesture);
189         virtual bool OnFlickGestureCanceled(_TouchFlickGestureDetector& gesture);
190
191         virtual void OnDraw(void);
192         result OnAttachedToMainTree(void);
193
194         virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
195         virtual void OnFontInfoRequested(unsigned long& style, int& size);
196         virtual void OnBoundsChanged(void);
197
198         void AddAccessibilityElement(const Tizen::Graphics::Rectangle& itemBounds, const Tizen::Base::String& itemText, _TabItemStatus status);
199         void RemoveAllAccessibilityElement(void);
200
201         // accessibility listener
202         virtual bool OnAccessibilityFocusMovedNext(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element);
203         virtual bool OnAccessibilityFocusMovedPrevious(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element);
204         virtual bool OnAccessibilityReadElement(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element);
205         virtual bool OnAccessibilityFocusIn(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element);
206         virtual bool OnAccessibilityFocusOut(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element);
207         virtual bool OnAccessibilityActionPerformed(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element);
208         virtual bool OnAccessibilityValueIncreased(const Tizen::Ui::_AccessibilityContainer&, const Tizen::Ui::_AccessibilityElement&);
209         virtual bool OnAccessibilityValueDecreased(const Tizen::Ui::_AccessibilityContainer&, const Tizen::Ui::_AccessibilityElement&);
210
211 private:
212         int GetItemIndex(int actionId);
213         bool CheckDuplicatedActionId(int actionId);
214         result LoadBitmap(void);
215
216 private:
217         _TabPresenter* __pTabPresenter;
218
219         int __style;
220         _TabStatus __tabStatus;
221         Tizen::Base::Collection::ArrayList __tabItems;
222
223         Tizen::Ui::Controls::_ActionEvent* __pActionEvent;
224
225         _TouchLongPressGestureDetector* __pGestureLongPress;
226         _TouchFlickGestureDetector*     __pFlickGesture;
227
228         Tizen::Graphics::Bitmap*        __pBackgroundBitmap;
229         Tizen::Graphics::Bitmap*        __pPressedItemBackgroundBitmap;
230         Tizen::Graphics::Bitmap*        __pSelectedItemBackgroundBitmap;
231         Tizen::Graphics::Bitmap*        __pHighlightedItemBackgroundBitmap;
232
233         Tizen::Graphics::Color __itemBgColor[_TAB_STATE];
234         Tizen::Graphics::Color __itemTextColor[_TAB_STATE];
235
236         Tizen::Base::Collection::LinkedListT<_AccessibilityElement*> __accessibilityElements;
237 };
238
239 }}} // Tizen::Ui::Controls
240
241 #endif // _FUICTRL_INTERNAL_TAB_H_
242