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 FUiCtrlTabBar.h
19 * @brief This is the header file for the %TabBar class.
21 * This header file contains the declarations of the %TabBar class.
23 #ifndef _FUI_CTRL_TAB_BAR_H_
24 #define _FUI_CTRL_TAB_BAR_H_
26 #include <FUiControl.h>
28 namespace Tizen { namespace Ui
30 class IActionEventListener;
32 namespace Tizen { namespace Ui { namespace Controls
35 }}} // Tizen::Ui::Controls
37 namespace Tizen { namespace Ui { namespace Controls
40 * @enum TabBarItemStatus
42 * Defines the possible states of TabBarItem.
48 TAB_BAR_ITEM_STATUS_NORMAL, /**< The normal state */
49 TAB_BAR_ITEM_STATUS_SELECTED /**< The selected state */
55 * @brief This class is an implementation of %TabBar.
59 * The %TabBar class displays a list of possible options for the user selection in a horizontal list.
61 * For more information on the class features, see <a href="../org.tizen.native.appprogramming/html/guide/ui/implementing_tab_bar.htm">TabBar</a>.
63 * The following example demonstrates how to use the %TabBar class.
66 // Sample code for TabBarSample.h
70 : public Tizen::Ui::Controls::Form
71 , public Tizen::Ui::IActionEventListener
77 bool Initialize(void);
78 virtual result OnInitializing(void);
80 // IActionEventListener
81 virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
84 static const int ID_TABBAR_ITEM1 = 100;
85 static const int ID_TABBAR_ITEM2 = 101;
86 static const int ID_TABBAR_ITEM3 = 102;
88 Tizen::Ui::Controls::TabBar *__pTabBar;
93 // Sample code for TabBarSample.cpp
94 #include "TabBarSample.h"
96 using namespace Tizen::Ui::Controls;
99 TabBarSample::Initialize(void)
101 Construct(FORM_STYLE_NORMAL);
106 TabBarSample::OnInitializing()
108 result r = E_SUCCESS;
110 // Creates an instance of TabBar
111 __pTabBar = new TabBar();
112 __pTabBar->Construct(0, 0, GetClientAreaBounds().width);
114 // Creates instances of TabBarItem
115 TabBarItem tabBarItem1;
116 TabBarItem tabBarItem2;
117 TabBarItem tabBarItem3;
119 tabBarItem1.Construct(L"1", ID_TABBAR_ITEM1);
120 tabBarItem2.Construct(L"2", ID_TABBAR_ITEM2);
121 tabBarItem3.Construct(L"3", ID_TABBAR_ITEM3);
123 // Adds items to the tab bar
124 __pTabBar->AddItem(tabBarItem1);
125 __pTabBar->AddItem(tabBarItem2);
126 __pTabBar->AddItem(tabBarItem3);
127 __pTabBar->AddActionEventListener(*this);
129 // Adds the tab bar to the form
130 AddControl(*__pTabBar);
135 // IActionEventListener implementation
137 TabBarSample::OnActionPerformed(const Control& source, int actionId)
141 case ID_TABBAR_ITEM1:
146 case ID_TABBAR_ITEM2:
158 class _OSP_EXPORT_ TabBar
159 : public Tizen::Ui::Control
164 * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor.
173 * This destructor overrides Tizen::Base::Object::~Object().
178 virtual ~TabBar(void);
181 * Initializes this instance of %TabBar with the specified parameters.
185 * @return An error code
186 * @param[in] x The X position of the top left corner
187 * @param[in] y The Y position of the top left corner
188 * @param[in] width The width
189 * @exception E_SUCCESS The method is successful.
190 * @exception E_INVALID_ARG A specified input parameter is invalid.
191 * @exception E_INVALID_STATE This instance is in an invalid state.
192 * @exception E_SYSTEM A system error has occurred.
194 result Construct(int x, int y, int width);
197 * Initializes this instance of %TabBar with the specified parameters.
201 * @return An error code
202 * @param[in] x The X position of the top left corner
203 * @param[in] y The Y position of the top left corner
204 * @param[in] width The width
205 * @exception E_SUCCESS The method is successful.
206 * @exception E_INVALID_ARG A specified input parameter is invalid.
207 * @exception E_INVALID_STATE This instance is in an invalid state.
208 * @exception E_SYSTEM A system error has occurred.
210 result Construct(float x, float y, float width);
216 * Adds the specified item.
220 * @return An error code
221 * @param[in] item The item to add
222 * @exception E_SUCCESS The method is successful.
223 * @exception E_INVALID_ARG The specified input parameter is invalid. @n
224 * The specified @c item is not constructed.
225 * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit.
226 * @exception E_INVALID_STATE This instance is in an invalid state.
227 * @exception E_SYSTEM A system error has occurred.
228 * @remarks The maximum number of items for a %TabBar control is @c 100. @n
229 * However, the content of the specified item is copied to the %TabBar control. @n
230 * The item can be deallocated explicitly after this method call if it is created dynamically. @n
231 * The %TabBar control does not throw any exception even though the same action ID is assigned to multiple items.
233 result AddItem(const TabBarItem& item);
237 * Inserts the %TabBar item at the specified index.
241 * @return An error code
242 * @param[in] index The index of the item to insert
243 * @param[in] item The item to insert
244 * @exception E_SUCCESS The method is successful.
245 * @exception E_INVALID_ARG A specified input parameter is invalid. @n
246 * The specified @c item is not constructed.
247 * @exception E_MAX_EXCEEDED The number of items has exceeded the maximum limit.
248 * @exception E_OUT_OF_RANGE The specified @c index is out of the range of the data structure. @n
249 * The specified @c index is either greater than or equal to the number of items or is less than @c 0.
250 * @exception E_INVALID_STATE This instance is in an invalid state.
251 * @exception E_SYSTEM A system error has occurred.
252 * @remarks The maximum number of items for a %TabBar control is @c 100. @n
253 * However, the content of the specified item is copied to the @c %TabBar control. @n
254 * The item can be deallocated explicitly after this method call if it is created dynamically. @n
255 * The %TabBar control does not throw any exception even though the same action ID is assigned to multiple items.
257 result InsertItemAt(int index, const TabBarItem& item);
261 * Gets the color of the %TabBar control.
265 * @return The color, @n
266 * else RGBA(0,0,0,0) if an error occurs
267 * @exception E_SUCCESS The method is successful.
268 * @exception E_INVALID_STATE This instance is in an invalid state.
269 * @remarks The specific error code can be accessed using the GetLastResult() method.
271 Tizen::Graphics::Color GetColor(void) const;
275 * Gets the item count.
279 * @return The item count, @n
280 * else @c -1 if an error occurs
281 * @exception E_SUCCESS The method is successful.
282 * @exception E_INVALID_STATE This instance is in an invalid state.
283 * @remarks The specific error code can be accessed using the GetLastResult() method.
285 int GetItemCount(void) const;
289 * Gets the item color that is displayed when an item is selected.
293 * @return The selected item color, @n
294 * else RGBA(0,0,0,0) if an error occurs
295 * @exception E_SUCCESS The method is successful.
296 * @exception E_INVALID_STATE This instance is in an invalid state.
297 * @remarks The specific error code can be accessed using the GetLastResult() method.
299 Tizen::Graphics::Color GetSelectedItemColor(void) const;
303 * Gets the item text color for the specified state.
307 * @return The item text color, @n
308 * else RGBA (0,0,0,0) if an error occurs
309 * @param[in] status The item state
310 * @exception E_SUCCESS The method is successful.
311 * @exception E_INVALID_STATE This instance is in an invalid state.
312 * @remarks The specific error code can be accessed using the GetLastResult() method.
314 Tizen::Graphics::Color GetItemTextColor(TabBarItemStatus status) const;
318 * Gets the index of the selected item.
322 * @return The selected item index, @n
323 * else @c -1 if an error occurs
324 * @exception E_SUCCESS The method is successful.
325 * @exception E_INVALID_STATE This instance is in an invalid state.
326 * @remarks The specific error code can be accessed using the GetLastResult() method.
328 int GetSelectedItemIndex(void) const;
332 * Removes the %TabBar item at the specified index.
336 * @return An error code
337 * @param[in] index The index of the item
338 * @exception E_SUCCESS The method is successful.
339 * @exception E_OUT_OF_RANGE The specified @c index is out of the range of the data structure. @n
340 * The specified @c index is either greater than or equal to the number of items or is less than @c 0.
341 * @exception E_INVALID_STATE This instance is in an invalid state.
342 * @exception E_SYSTEM A system error has occurred.
343 * @remarks If the currently selected item is removed, the next item is selected automatically.
345 result RemoveItemAt(int index);
349 * Removes all the items from the %TabBar control.
353 * @return An error code
354 * @exception E_SUCCESS The method is successful.
355 * @exception E_INVALID_STATE This instance is in an invalid state.
356 * @exception E_SYSTEM A system error has occurred.
358 result RemoveAllItems(void);
362 * Sets the color of the %TabBar control.
366 * @return An error code
367 * @param[in] color The color
368 * @exception E_SUCCESS The method is successful.
369 * @exception E_INVALID_STATE This instance is in an invalid state.
371 result SetColor(const Tizen::Graphics::Color& color);
375 * Sets the content of the %TabBar item at the specified index.
379 * @return An error code
380 * @param[in] index The index at which to set the specified item
381 * @param[in] item The item to set
382 * @exception E_SUCCESS The method is successful.
383 * @exception E_INVALID_ARG A specified input parameter is invalid. @n
384 * The specified @c item is not constructed.
385 * @exception E_OUT_OF_RANGE The specified @c index is out of the range of the data structure. @n
386 * The specified @c index is either greater than or equal to the number of items or is less than @c 0.
387 * @exception E_INVALID_STATE This instance is in an invalid state.
388 * @exception E_SYSTEM A system error has occurred.
389 * @remarks The contents of the specified item are copied. @n
390 * The item can be deallocated explicitly after this method call if it is created dynamically.
392 result SetItemAt(int index, const TabBarItem& item);
396 * Selects the item at the specified index.
400 * @return An error code
401 * @param[in] index The index of the item to select
402 * @exception E_SUCCESS The method is successful.
403 * @exception E_OUT_OF_RANGE The specified @c index is not within the range of the data structure. @n
404 * The specified @c index is either greater than or equal to the number of items or is less than @c 0.
405 * @exception E_INVALID_STATE This instance is in an invalid state.
406 * @exception E_SYSTEM A system error has occurred.
408 result SetItemSelected(int index);
412 * Sets the item text color for the specified state.
416 * @return An error code
417 * @param[in] status The item state
418 * @param[in] color The item text color
419 * @exception E_SUCCESS The method is successful.
420 * @exception E_INVALID_STATE This instance is in an invalid state.
421 * @exception E_SYSTEM A system error has occurred.
423 result SetItemTextColor(TabBarItemStatus status, const Tizen::Graphics::Color& color);
427 * Sets the selected item color.
431 * @return An error code
432 * @param[in] color The item color
433 * @exception E_SUCCESS The method is successful.
434 * @exception E_INVALID_STATE This instance is in an invalid state.
435 * @exception E_SYSTEM A system error has occurred.
437 result SetSelectedItemColor(const Tizen::Graphics::Color& color);
441 * Sets the width of the tab bar.
445 * @return An error code
446 * @param[in] width The width
447 * @exception E_SUCCESS The method is successful.
448 * @exception E_INVALID_ARG The specified input parameter is invalid.
449 * @exception E_INVALID_STATE This instance is in an invalid state.
450 * @exception E_SYSTEM A system error has occurred.
452 result SetWidth(int width);
455 * Sets the width of the tab bar.
459 * @return An error code
460 * @param[in] width The width
461 * @exception E_SUCCESS The method is successful.
462 * @exception E_INVALID_ARG The specified input parameter is invalid.
463 * @exception E_INVALID_STATE This instance is in an invalid state.
464 * @exception E_SYSTEM A system error has occurred.
466 result SetWidth(float width);
472 * Adds an action event listener instance. @n
473 * The added listener can listen to events on the specified event dispatcher's context when they are fired.
477 * @param[in] listener The event listener to add
478 * @remarks The specific error code can be accessed using the GetLastResult() method.
480 void AddActionEventListener(Tizen::Ui::IActionEventListener& listener);
484 * Removes an action event listener instance. @n
485 * The removed listener cannot listen to events when they are fired.
489 * @param[in] listener The event listener to remove
490 * @remarks The specific error code can be accessed using the GetLastResult() method.
492 void RemoveActionEventListener(Tizen::Ui::IActionEventListener& listener);
495 friend class _TabBarImpl;
499 // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects.
504 TabBar(const TabBar& rhs);
507 // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects.
512 TabBar& operator =(const TabBar& rhs);
516 }}} // Tizen::Ui: Control
517 #endif //_FUI_CTRL_TAB_BAR_H_