modify Klockwork bug
[platform/framework/native/uifw.git] / src / ui / inc / FUiCtrl_FooterImpl.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0/
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_FooterImpl.h
19  * @brief               This is the header file for the _FooterImp class.
20  *
21  * This header file contains the declarations of the %_FooterImp class.
22  */
23
24 #ifndef _FUI_CTRL_INTERNAL_FOOTER_IMPL_H_
25 #define _FUI_CTRL_INTERNAL_FOOTER_IMPL_H_
26
27 #include <climits>
28 #include <FSysSystemInfo.h>
29 #include <FUiCtrlFooter.h>
30 #include "FUi_ControlImpl.h"
31 #include "FUiCtrl_Button.h"
32 #include "FUiCtrl_Toolbar.h"
33
34 namespace Tizen { namespace Ui { namespace Controls
35 {
36
37 class _PublicActionEvent;
38
39 const int FOOTER_MAX_STATE_COUNT = 7;
40 const int FOOTER_BUTTON_MAX_STATE_COUNT = 4;
41 const int FOOTER_MAX_ITEM_COUNT_WITH_BUTTON = 3;
42 const int FOOTER_BUTTON_MAX_COUNT = 3;
43 const int FOOTER_ITEM_MAX_COUNT = 15;
44 const int FOOTER_ACTION_ID_MIN = 0;
45 const int FOOTER_NUMBERD_BADGE_ICON_NUMBER_MAX = 99999;
46
47 class _FooterImpl
48         : public _ControlImpl
49         , public _IActionEventListener
50         , virtual public Tizen::Base::Runtime::IEventListener
51 {
52 public:
53         static _FooterImpl* CreateFooterImplN(Footer* pControl);
54
55         _FooterImpl(Footer* pPublic, _Toolbar* pCore);
56
57         virtual ~_FooterImpl(void);
58
59         Footer* GetFooter(void) const;
60
61         virtual const char* GetPublicClassName(void) const;
62
63         virtual const Footer& GetPublic(void) const;
64
65         virtual Footer& GetPublic(void);
66
67         virtual const _Toolbar& GetCore(void) const;
68
69         virtual _Toolbar& GetCore(void);
70
71         static const _FooterImpl* GetInstance(const Footer& footer);
72
73         static _FooterImpl* GetInstance(Footer& footer);
74
75         result AddItem(const FooterItem& item);
76
77         Tizen::Graphics::Color GetButtonColor(ButtonItemStatus status) const;
78
79         Tizen::Graphics::Color GetButtonTextColor(ButtonItemStatus status) const;
80
81         ButtonItemStatus GetButtonStatus(ButtonPosition position) const;
82
83         ButtonItemStatus GetBackButtonStatus(void) const;
84
85         Tizen::Graphics::Color GetItemColor(FooterItemStatus status) const;
86
87         int GetItemCount(void) const;
88
89         result GetItemStatus(int itemIndex, FooterItemStatus& status) const;
90
91         Tizen::Graphics::Color GetItemTextColor(FooterItemStatus status) const;
92
93         FooterStyle GetStyle(void) const;
94
95         int GetSelectedItemIndex(void) const;
96
97         Tizen::Graphics::Color GetColor(void) const;
98
99         result InsertItemAt(int itemIndex, const FooterItem& item);
100
101         bool IsButtonSet(ButtonPosition position) const;
102
103         bool IsBackButtonSet(void) const;
104
105         bool IsTabEditModeEnabled(void) const;
106
107         result RemoveAllButtons(void);
108
109         result RemoveButtonAt(ButtonPosition position);
110
111         result RemoveBackButton(void);
112
113         result RemoveAllItems(void);
114
115         result RemoveItemAt(int itemIndex);
116
117         result SetBackButton(void);
118
119         result SetBackgroundBitmap(const Tizen::Graphics::Bitmap* pBitmap);
120
121         result SetButton(ButtonPosition position, const ButtonItem& button);
122
123         result SetButtonColor(ButtonItemStatus status, const Tizen::Graphics::Color& color);
124
125         result SetButtonTextColor(ButtonItemStatus status, const Tizen::Graphics::Color& color);
126
127         result SetButtonEnabled(ButtonPosition position, bool enable);
128
129         result SetBackButtonEnabled(bool enable);
130
131         result SetItemAt(int itemIndex, const FooterItem& item);
132
133         result SetItemColor(FooterItemStatus status, const Tizen::Graphics::Color& color);
134
135         result SetItemEnabled(int itemIndex, bool enable);
136
137         result SetItemBadgeIcon(int itemIndex, const Tizen::Graphics::Bitmap* pBadgeIcon);
138
139         result SetItemTextColor(FooterItemStatus status, const Tizen::Graphics::Color& color);
140
141         result SetItemSelected(int itemIndex);
142
143         result SetItemNumberedBadgeIcon(int itemIndex, int number);
144
145         result SetButtonBadgeIcon(ButtonPosition position, const Tizen::Graphics::Bitmap* pBadgeIcon);
146
147         result SetButtonNumberedBadgeIcon(ButtonPosition position, int number);
148
149         result SetColor(const Tizen::Graphics::Color& color);
150
151         result SetStyle(FooterStyle style);
152
153         result SetTabEditModeEnabled(bool enable);
154
155         result SetTransparent(bool transparent);
156
157         Tizen::Graphics::Rectangle GetButtonBounds(ButtonPosition position) const;
158
159         Tizen::Graphics::FloatRectangle GetButtonBoundsF(ButtonPosition position) const;
160
161         void AddActionEventListener(Tizen::Ui::IActionEventListener& listener);
162
163         void RemoveActionEventListener(Tizen::Ui::IActionEventListener& listener);
164
165         virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
166
167
168 private:
169         result CheckItemValidate(const FooterItem& item);
170
171         result CheckItemExceed(const FooterItem& item);
172
173         _Button* ConvertButtonItem(const ButtonItem& buttonItem);
174
175         _Button* ConvertFooterItem(const FooterItem& footerItem);
176
177         ButtonItemStatus ConvertButtonItemStatus(_ButtonStatus status) const;
178
179         FooterItemStatus ConvertFooterItemStatus(_ButtonStatus status) const;
180
181         _ButtonStatus ConvertButtonStatus(ButtonItemStatus status) const;
182
183         _ButtonStatus ConvertButtonStatus(FooterItemStatus status) const;
184
185         ToolbarStyle ConvertFooterStyle(FooterStyle style);
186
187         virtual void OnChangeLayout(_ControlOrientation orientation);
188
189         _FooterImpl(const _FooterImpl&);
190
191         _FooterImpl& operator =(const _FooterImpl&);
192
193
194 private:
195         //bool __calledBySetItemSelected;
196
197         FooterStyle __style;
198
199         _PublicActionEvent* __pPublicActionEvent;
200
201 };
202
203 }}} // Tizen::Ui::Controls
204
205 #endif  // _FUI_CTRL_INTERNAL_FOOTER_IMPL_H_