Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_HeaderImpl.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_HeaderImpl.h
19  * @brief               This is the header file for the _HeaderImpl class.
20  *
21  * This header file contains the declarations of the %_HeaderImpl class.
22  */
23
24 #ifndef _FUI_CTRL_INTERNAL_HEADER_IMPL_H_
25 #define _FUI_CTRL_INTERNAL_HEADER_IMPL_H_
26
27 #include <climits>
28 #include <FUiCtrlHeader.h>
29 #include "FUi_ControlImpl.h"
30 #include "FUiCtrl_Button.h"
31 #include "FUiCtrl_Toolbar.h"
32
33 namespace Tizen { namespace Ui { namespace Controls
34 {
35
36 class _PublicActionEvent;
37
38 const int HEADER_MAX_ITEM_COUNT_WITH_BUTTON = 3;
39 const int HEADER_BUTTON_MAX_COUNT = 2;
40 const int HEADER_ITEM_MAX_COUNT = 4;
41 const int HEADER_MAX_WAITING_ANIMATION_POSITION = 3;
42 const int HEADER_TITLE_BUTTON_STYLE_MAX_ITEM_COUNT = 1;
43 const int HEADER_TAB_STYLE_MAX_ITEM_COUNT = 15;
44 const int HEADER_ACTION_ID_MIN = 0;
45 const int HEADER_ACTION_ID_MAX = INT_MAX;
46 const int HEADER_NUMBERD_BADGE_ICON_NUMBER_MAX = 99999;
47 const int HEADER_MORE_BUTTON_ACTION_ID = 500;
48
49 class _HeaderImpl
50         : public _ControlImpl
51         , public _IActionEventListener
52         , virtual public Tizen::Base::Runtime::IEventListener
53 {
54 public:
55         static _HeaderImpl* CreateHeaderImplN(Header* pControl);
56
57         _HeaderImpl(Header* pPublic, _Toolbar* pCore);
58
59         virtual ~_HeaderImpl(void);
60
61         Header* GetHeader(void) const;
62
63         virtual const char* GetPublicClassName(void) const;
64
65         virtual const Header& GetPublic(void) const;
66
67         virtual Header& GetPublic(void);
68
69         virtual const _Toolbar& GetCore(void) const;
70
71         virtual _Toolbar& GetCore(void);
72
73         static const _HeaderImpl* GetInstance(const Header& header);
74
75         static _HeaderImpl* GetInstance(Header& header);
76
77         result AddItem(const HeaderItem& item);
78
79         ButtonItemStatus GetButtonStatus(ButtonPosition position) const;
80
81         Tizen::Graphics::Color GetButtonColor(ButtonItemStatus status) const;
82
83         Tizen::Graphics::Color GetButtonTextColor(ButtonItemStatus status) const;
84
85         Tizen::Base::String GetDescriptionText(void) const;
86
87         Tizen::Graphics::Color GetDescriptionTextColor(void) const;
88
89         Tizen::Graphics::Color GetItemColor(HeaderItemStatus status) const;
90
91         int GetItemCount(void) const;
92
93         result GetItemStatus(int itemIndex, HeaderItemStatus& status) const;
94
95         Tizen::Graphics::Color GetItemTextColor(HeaderItemStatus status) const;
96
97         HeaderStyle GetStyle(void) const;
98
99         int GetSelectedItemIndex(void) const;
100
101         Tizen::Base::String GetTitleText(void) const;
102
103         Tizen::Graphics::Color GetTitleTextColor(void) const;
104
105         Tizen::Graphics::Color GetColor(void) const;
106
107         AnimationStatus GetWaitingAnimationStatus(HeaderAnimationPosition animationPos) const;
108
109         result InsertItemAt(int itemIndex, const HeaderItem& item);
110
111         bool IsButtonSet(ButtonPosition position) const;
112
113         result PauseWaitingAnimation(HeaderAnimationPosition animationPos);
114
115         result PlayWaitingAnimation(HeaderAnimationPosition animationPos);
116
117         result RemoveAllButtons(void);
118
119         result RemoveAllItems(void);
120
121         result RemoveItemAt(int itemIndex);
122
123         result RemoveButtonAt(ButtonPosition position);
124
125         result SetBackgroundBitmap(const Tizen::Graphics::Bitmap* pBitmap);
126
127         result SetButton(ButtonPosition position, const ButtonItem& button);
128
129         result SetButtonColor(ButtonItemStatus status, const Tizen::Graphics::Color& color);
130
131         result SetButtonEnabled(ButtonPosition position, bool enable);
132
133         result SetButtonTextColor(ButtonItemStatus status, const Tizen::Graphics::Color& color);
134
135         result SetButtonBadgeIcon(ButtonPosition position, const Tizen::Graphics::Bitmap* pBadgeIcon);
136
137         result SetButtonNumberedBadgeIcon(ButtonPosition position, int number);
138
139         result SetItemAt(int itemIndex, const HeaderItem& item);
140
141         result SetItemBadgeIcon(int itemIndex, const Tizen::Graphics::Bitmap* pBadgeIcon);
142
143         result SetItemNumberedBadgeIcon(int itemIndex, int number);
144
145         result SetItemColor(HeaderItemStatus status, const Tizen::Graphics::Color& color);
146
147         result SetItemEnabled(int itemIndex, bool enable);
148
149         result SetItemTextColor(HeaderItemStatus status, const Tizen::Graphics::Color& color);
150
151         result SetItemSelected(int itemIndex);
152
153         result SetColor(const Tizen::Graphics::Color& color);
154
155         result SetStyle(HeaderStyle style);
156
157         result SetTitleIcon(const Tizen::Graphics::Bitmap* pIcon);
158
159         result SetTitleText(const Tizen::Base::String& text);
160
161         result SetTitleTextColor(const Tizen::Graphics::Color& color);
162
163         result SetTransparent(bool transparent);
164
165         result SetDescriptionText(const Tizen::Base::String& text);
166
167         result SetDescriptionTextColor(const Tizen::Graphics::Color& color);
168
169         result StopWaitingAnimation(HeaderAnimationPosition animationPos);
170
171         bool IsTabEditModeEnabled(void) const;
172
173         result SetTabEditModeEnabled(bool enable);
174
175         result SetBackButton(void);
176
177         bool IsBackButtonSet(void) const;
178
179         void RemoveBackButton(void);
180
181         result SetBackButtonEnabled(bool enable);
182
183         ButtonItemStatus GetBackButtonStatus(void) const;
184
185         Tizen::Graphics::Rectangle GetButtonBounds(ButtonPosition position) const;
186
187         void AddActionEventListener(Tizen::Ui::IActionEventListener& listener);
188
189         void RemoveActionEventListener(Tizen::Ui::IActionEventListener& listener);
190
191         virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
192
193
194 private:
195         result CheckItemValidate(const HeaderItem& item);
196
197         ToolbarStyle ConvertHeaderStyle(HeaderStyle style);
198
199         _Button* ConvertButtonItem(const ButtonItem& buttonItem);
200
201         _Button* ConvertHeaderItem(const HeaderItem& headerItem);
202
203         ButtonItemStatus ConvertButtonItemStatus(_ButtonStatus status) const;
204
205         HeaderItemStatus ConvertHeaderItemStatus(_ButtonStatus status) const;
206
207         _ButtonStatus ConvertButtonStatus(ButtonItemStatus status) const;
208
209         _ButtonStatus ConvertButtonStatus(HeaderItemStatus status) const;
210
211         _HeaderImpl(const _HeaderImpl&);
212
213         _HeaderImpl& operator =(const _HeaderImpl&);
214
215
216 private:
217         HeaderStyle __style;
218
219         _PublicActionEvent* __pPublicActionEvent;
220
221         //bool __calledBySetItemSelected;
222 };
223
224 }}} // Tizen::Ui::Controls
225
226 #endif  // _FUI_CTRL_INTERNAL_HEADER_IMPL_H_