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 FUiCtrl_FooterImpl.cpp
19 * @brief This is the implementation file for the _FooterImpl class.
23 #include <FGrp_BitmapImpl.h>
24 #include "FUi_Control.h"
25 #include "FUi_ResourceManager.h"
26 #include "FUi_UiBuilder.h"
27 #include "FUiCtrl_ButtonItemImpl.h"
28 #include "FUiCtrl_FooterImpl.h"
29 #include "FUiCtrl_FooterItemImpl.h"
30 #include "FUiCtrl_IActionEventListener.h"
31 #include "FUiCtrl_PublicActionEvent.h"
33 using namespace Tizen::Base;
34 using namespace Tizen::Graphics;
36 namespace Tizen { namespace Ui { namespace Controls
40 _FooterImpl::CreateFooterImplN(Footer* pControl)
45 _Toolbar* pCore = null;
47 pCore = _Toolbar::CreateToolbarN(false);
49 SysTryReturn(NID_UI_CTRL, pCore, null, r, "[%s] Propagating.", GetErrorMessage(r));
51 r = pCore->InitializeLongPressGesture();
52 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
54 _FooterImpl* pFooterImpl = new (std::nothrow) _FooterImpl(pControl, pCore);
56 r = CheckConstruction(pCore, pFooterImpl);
57 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
62 _FooterImpl::_FooterImpl(Footer* pPublic, _Toolbar* pCore)
63 : _ControlImpl(pPublic, pCore)
64 //, __calledBySetItemSelected(false)
65 , __style(FOOTER_STYLE_BUTTON_TEXT)
66 , __pPublicActionEvent(null)
68 result r = GetLastResult(); // Check if _ControlImpl succeeded.
69 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
71 pCore->SetStyle(TOOLBAR_TEXT);
73 Color tempColor = Color(0);
75 GET_COLOR_CONFIG(FOOTER::BG_NORMAL, tempColor);
76 pCore->SetColor(tempColor);
79 _FooterImpl::~_FooterImpl(void)
81 if (__pPublicActionEvent)
83 delete __pPublicActionEvent;
84 __pPublicActionEvent = null;
89 _FooterImpl::GetFooter(void) const
91 return &const_cast <Footer&>(GetPublic());
95 _FooterImpl::GetPublicClassName(void) const
97 return "Tizen::Ui::Controls::Footer";
101 _FooterImpl::GetPublic(void) const
103 return static_cast<const Footer&>(_ControlImpl::GetPublic());
107 _FooterImpl::GetPublic(void)
109 return static_cast<Footer&>(_ControlImpl::GetPublic());
113 _FooterImpl::GetCore(void) const
115 return static_cast<const _Toolbar&>(_ControlImpl::GetCore());
119 _FooterImpl::GetCore(void)
121 return static_cast<_Toolbar&>(_ControlImpl::GetCore());
125 _FooterImpl::GetInstance(const Footer& footer)
127 return static_cast<const _FooterImpl*> (footer._pControlImpl);
131 _FooterImpl::GetInstance(Footer& footer)
133 return static_cast<_FooterImpl*> (footer._pControlImpl);
137 _FooterImpl::AddItem(const FooterItem& item)
139 SysTryReturnResult(NID_UI_CTRL, (__style >= FOOTER_STYLE_BUTTON_TEXT && __style <= FOOTER_MAX_STATE_COUNT),
140 E_INVALID_OPERATION, "[E_INVALID_OPERATION] Current Footer style doesn't support this operation.");
142 SysTryReturnResult(NID_UI_CTRL, (item.GetActionId() <= FOOTER_ITEM_ACTION_ID_MAX && item.GetActionId() >= FOOTER_ACTION_ID_MIN),
143 E_INVALID_ARG, "[E_INVALID_ARG] The item isn't constructed.");
145 result r = CheckItemValidate(item);
152 _Button* pButton = ConvertFooterItem(item);
154 if (__style == FOOTER_STYLE_SEGMENTED_TEXT || __style == FOOTER_STYLE_SEGMENTED_ICON || __style == FOOTER_STYLE_SEGMENTED_ICON_TEXT || __style == FOOTER_STYLE_TAB)
156 pButton->SetButtonStyle(_BUTTON_STYLE_SEGMENT);
159 return GetCore().AddItem(pButton);
163 _FooterImpl::GetButtonColor(ButtonItemStatus status) const
165 _ButtonStatus tempStatus = ConvertButtonStatus(status);
167 return GetCore().GetButtonColor(tempStatus);
171 _FooterImpl::GetButtonTextColor(ButtonItemStatus status) const
173 _ButtonStatus tempStatus = ConvertButtonStatus(status);
175 return GetCore().GetButtonTextColor(tempStatus);
179 _FooterImpl::GetButtonStatus(ButtonPosition position) const
181 SysTryReturn(NID_UI_CTRL, (IsButtonSet(position) == true), BUTTON_ITEM_STATUS_NORMAL, E_INVALID_OPERATION,
182 "[E_INVALID_OPERATION] No button item is set at the specified position.");
184 _ButtonStatus buttonStatus;
186 if (position == BUTTON_POSITION_LEFT)
188 buttonStatus = GetCore().GetButtonStatus(LEFT_BUTTON);
190 else if (position == BUTTON_POSITION_RIGHT)
192 buttonStatus = GetCore().GetButtonStatus(RIGHT_BUTTON);
196 return BUTTON_ITEM_STATUS_NORMAL;
199 return ConvertButtonItemStatus(buttonStatus);
203 _FooterImpl::GetBackButtonStatus(void) const
205 SysTryReturn(NID_UI_CTRL, (IsBackButtonSet() == true), BUTTON_ITEM_STATUS_NORMAL, E_INVALID_OPERATION,
206 "[E_INVALID_OPERATION] A Back button doesn't exist");
208 _ButtonStatus buttonStatus;
210 buttonStatus = GetCore().GetButtonStatus(BACK_BUTTON);
212 return ConvertButtonItemStatus(buttonStatus);
216 _FooterImpl::GetItemColor(FooterItemStatus status) const
218 _ButtonStatus tempStatus = ConvertButtonStatus(status);
220 return GetCore().GetItemColor(tempStatus);
224 _FooterImpl::GetItemCount(void) const
226 return GetCore().GetItemCount();
230 _FooterImpl::GetItemStatus(int itemIndex, FooterItemStatus& status) const
232 int count = GetItemCount();
234 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
235 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
237 _Button* pButton = GetCore().GetItem(itemIndex);
239 SysTryReturnResult(NID_UI_CTRL, pButton, E_SYSTEM, "[E_SYSTEM] Unable to get the item status.");
241 status = ConvertFooterItemStatus(pButton->GetButtonStatus());
247 _FooterImpl::GetItemTextColor(FooterItemStatus status) const
249 _ButtonStatus tempStatus = ConvertButtonStatus(status);
251 return GetCore().GetItemTextColor(tempStatus);
255 _FooterImpl::GetStyle(void) const
261 _FooterImpl::GetSelectedItemIndex(void) const
263 SysTryReturn(NID_UI_CTRL, (__style != FOOTER_STYLE_BUTTON_TEXT && __style != FOOTER_STYLE_BUTTON_ICON && __style != FOOTER_STYLE_BUTTON_ICON_TEXT), -1,
264 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to get the selected item itemIndex because the current style does not support it.");
266 return GetCore().GetSelectedItemIndex();
270 _FooterImpl::GetColor(void) const
272 return GetCore().GetColor();
276 _FooterImpl::InsertItemAt(int itemIndex, const FooterItem& item)
278 result r = CheckItemValidate(item);
285 int count = GetItemCount();
287 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex <= count), E_OUT_OF_RANGE,
288 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
290 _Button* pButton = ConvertFooterItem(item);
292 if (__style == FOOTER_STYLE_SEGMENTED_TEXT || __style == FOOTER_STYLE_SEGMENTED_ICON || __style == FOOTER_STYLE_SEGMENTED_ICON_TEXT || __style == FOOTER_STYLE_TAB)
294 pButton->SetButtonStyle(_BUTTON_STYLE_SEGMENT);
297 return GetCore().InsertItemAt(itemIndex, pButton);
301 _FooterImpl::IsButtonSet(ButtonPosition position) const
303 if (position == BUTTON_POSITION_LEFT)
305 return GetCore().IsButtonSet(LEFT_BUTTON);
307 else if (position == BUTTON_POSITION_RIGHT)
309 return GetCore().IsButtonSet(RIGHT_BUTTON);
318 _FooterImpl::IsBackButtonSet(void) const
320 return GetCore().IsButtonSet(BACK_BUTTON);
324 _FooterImpl::IsTabEditModeEnabled(void) const
326 return GetCore().IsTabEditModeEnabled();
330 _FooterImpl::RemoveAllButtons(void)
332 return GetCore().RemoveAllButtons();
336 _FooterImpl::RemoveButtonAt(ButtonPosition position)
338 if (position == BUTTON_POSITION_LEFT)
340 return GetCore().RemoveButtonAt(LEFT_BUTTON);
342 else if (position == BUTTON_POSITION_RIGHT)
344 return GetCore().RemoveButtonAt(RIGHT_BUTTON);
351 _FooterImpl::RemoveBackButton(void)
353 return GetCore().RemoveButtonAt(BACK_BUTTON);
357 _FooterImpl::RemoveAllItems(void)
359 return GetCore().RemoveAllItems();
363 _FooterImpl::RemoveItemAt(int itemIndex)
365 int count = GetItemCount();
367 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
368 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
370 return GetCore().RemoveItemAt(itemIndex);
374 _FooterImpl::SetBackgroundBitmap(const Bitmap* pBitmap)
376 return GetCore().SetBackgroundBitmap(*pBitmap);
380 _FooterImpl::SetButton(ButtonPosition position, const ButtonItem& button)
382 SysTryReturnResult(NID_UI_CTRL, (__style == FOOTER_STYLE_SEGMENTED_TEXT || __style == FOOTER_STYLE_SEGMENTED_ICON || __style == FOOTER_STYLE_SEGMENTED_ICON_TEXT
383 || __style == FOOTER_STYLE_BUTTON_TEXT || __style == FOOTER_STYLE_BUTTON_ICON || __style == FOOTER_STYLE_BUTTON_ICON_TEXT),
384 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to set the button item because the current style does not support it.");
386 SysTryReturnResult(NID_UI_CTRL, (button.GetActionId() >= FOOTER_ACTION_ID_MIN && button.GetActionId() <= FOOTER_ACTION_ID_MAX),
387 E_INVALID_ARG, "[E_INVALID_ARG] The actionId is invalid.");
389 int count = GetItemCount();
391 if (__style == FOOTER_STYLE_SEGMENTED_TEXT || __style == FOOTER_STYLE_SEGMENTED_ICON || __style == FOOTER_STYLE_SEGMENTED_ICON_TEXT
392 || __style == FOOTER_STYLE_BUTTON_TEXT || __style == FOOTER_STYLE_BUTTON_ICON || __style == FOOTER_STYLE_BUTTON_ICON_TEXT)
394 if (position == BUTTON_POSITION_RIGHT)
396 SysTryReturnResult(NID_UI_CTRL, (IsBackButtonSet() == false), E_SYSTEM,
397 "[E_SYSTEM] A Back button exists.");
400 SysTryReturnResult(NID_UI_CTRL, (count <= FOOTER_MAX_ITEM_COUNT_WITH_BUTTON), E_SYSTEM,
401 "[E_SYSTEM] If the item count is larger then 3, no button can be set.");
404 SysTryReturnResult(NID_UI_CTRL, (position == BUTTON_POSITION_LEFT || position == BUTTON_POSITION_RIGHT), E_INVALID_ARG,
405 "[E_INVALID_ARG] The position is invalid.");
407 _Button* pButton = ConvertButtonItem(button);
409 if (position == BUTTON_POSITION_LEFT)
411 return GetCore().SetButton(LEFT_BUTTON, pButton);
413 else if (position == BUTTON_POSITION_RIGHT)
415 return GetCore().SetButton(RIGHT_BUTTON, pButton);
422 _FooterImpl::SetButtonColor(ButtonItemStatus status, const Color& color)
424 _ButtonStatus tempStatus = ConvertButtonStatus(status);
426 return GetCore().SetButtonColor(tempStatus, color);
430 _FooterImpl::SetButtonTextColor(ButtonItemStatus status, const Color& color)
432 _ButtonStatus tempStatus = ConvertButtonStatus(status);
434 return GetCore().SetButtonTextColor(tempStatus, color);
438 _FooterImpl::SetBackButton(void)
440 SysTryReturnResult(NID_UI_CTRL, (__style != FOOTER_STYLE_TAB), E_UNSUPPORTED_OPERATION,
441 "[E_UNSUPPORTED_OPERATION] The current Footer style does not support the operation.");
443 if ((__style == FOOTER_STYLE_SEGMENTED_TEXT || __style == FOOTER_STYLE_SEGMENTED_ICON || __style == FOOTER_STYLE_SEGMENTED_ICON_TEXT) && GetItemCount() > 4)
445 SysLogException(NID_UI_CTRL, E_SYSTEM, "[E_SYSTEM] Unable to set the back button.");
448 else if ((__style == FOOTER_STYLE_BUTTON_ICON || __style == FOOTER_STYLE_BUTTON_TEXT || __style == FOOTER_STYLE_BUTTON_ICON_TEXT) && GetItemCount() > 5)
450 SysLogException(NID_UI_CTRL, E_SYSTEM, "[E_SYSTEM] Unable to set the back button.");
454 _Button* pButton = _Button::CreateButtonN();
456 int buttonHeight = 0;
460 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_HEIGHT, GetCore().GetOrientation(), buttonHeight);
461 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_WIDTH, GetCore().GetOrientation(), buttonWidth);
462 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize);
464 pButton->SetSize(Dimension(buttonWidth, buttonHeight));
466 Bitmap* pBackgroundBaseBitmap = null;
467 Bitmap* pPressedBitmap = null;
468 Bitmap* pColorReplacedBitmap = null;
469 Bitmap* pIconBaseBitmap = null;
470 Bitmap* pIconBaseEffectBitmap = null;
472 GET_BITMAP_CONFIG_N(FOOTER::BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pBackgroundBaseBitmap);
473 GET_BITMAP_CONFIG_N(FOOTER::BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pPressedBitmap);
474 GET_BITMAP_CONFIG_N(FOOTER::BACK_ICON_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pIconBaseBitmap);
475 GET_BITMAP_CONFIG_N(FOOTER::BACK_ICON_EFFECT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pIconBaseEffectBitmap);
477 if (pBackgroundBaseBitmap)
479 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundBaseBitmap, Color::GetColor(COLOR_ID_MAGENTA),
480 GetCore().GetButtonColor(_BUTTON_STATUS_NORMAL));
481 pButton->SetBackgroundBitmap(_BUTTON_STATUS_NORMAL, *pColorReplacedBitmap);
482 delete pColorReplacedBitmap;
484 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundBaseBitmap, Color::GetColor(COLOR_ID_MAGENTA),
485 GetCore().GetButtonColor(_BUTTON_STATUS_HIGHLIGHTED));
486 pButton->SetBackgroundBitmap(_BUTTON_STATUS_HIGHLIGHTED, *pColorReplacedBitmap);
487 delete pColorReplacedBitmap;
489 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundBaseBitmap, Color::GetColor(COLOR_ID_MAGENTA),
490 GetCore().GetButtonColor(_BUTTON_STATUS_DISABLED));
491 pButton->SetBackgroundBitmap(_BUTTON_STATUS_DISABLED, *pColorReplacedBitmap);
492 delete pColorReplacedBitmap;
494 delete pBackgroundBaseBitmap;
497 //# if (pBackgroundEffectBitmap)
499 //# pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_NORMAL, *pBackgroundEffectBitmap);
500 //# pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_HIGHLIGHTED, *pBackgroundEffectBitmap);
501 //# pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_DISABLED, *pBackgroundEffectBitmap);
502 //# delete pBackgroundEffectBitmap;
507 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA),
508 GetCore().GetButtonColor(_BUTTON_STATUS_PRESSED));
509 pButton->SetBackgroundBitmap(_BUTTON_STATUS_PRESSED, *pColorReplacedBitmap);
510 delete pColorReplacedBitmap;
512 delete pPressedBitmap;
515 //# if (pPressedEffectBitmap)
517 //# pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_PRESSED, *pPressedEffectBitmap);
518 //# delete pPressedEffectBitmap;
527 GET_COLOR_CONFIG(FOOTER::BACK_ICON_NORMAL, normalColor);
528 GET_COLOR_CONFIG(FOOTER::BACK_ICON_PRESSED, pressedColor);
529 GET_COLOR_CONFIG(FOOTER::BACK_ICON_DISABLED, disabledColor);
531 pIconBaseBitmap->Scale(Dimension(iconSize, iconSize));
533 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pIconBaseBitmap, Color::GetColor(COLOR_ID_MAGENTA), normalColor);
534 if (pColorReplacedBitmap)
536 pButton->SetBitmap(_BUTTON_STATUS_NORMAL,
537 Point((buttonWidth - iconSize) / 2, (buttonHeight - iconSize) / 2), *pColorReplacedBitmap);
539 delete pColorReplacedBitmap;
542 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pIconBaseBitmap, Color::GetColor(COLOR_ID_MAGENTA), pressedColor);
543 if (pColorReplacedBitmap)
545 pButton->SetBitmap(_BUTTON_STATUS_PRESSED,
546 Point((buttonWidth - iconSize) / 2, (buttonHeight - iconSize) / 2), *pColorReplacedBitmap);
547 delete pColorReplacedBitmap;
550 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pIconBaseBitmap, Color::GetColor(COLOR_ID_MAGENTA), disabledColor);
551 if (pColorReplacedBitmap)
553 pButton->SetBitmap(_BUTTON_STATUS_DISABLED,
554 Point((buttonWidth - iconSize) / 2, (buttonHeight - iconSize) / 2), *pColorReplacedBitmap);
555 delete pColorReplacedBitmap;
558 delete pIconBaseBitmap;
561 if (pIconBaseEffectBitmap)
563 pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_NORMAL, *pIconBaseEffectBitmap);
564 pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_PRESSED, *pIconBaseEffectBitmap);
565 pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_SELECTED, *pIconBaseEffectBitmap);
566 pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_HIGHLIGHTED, *pIconBaseEffectBitmap);
567 pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_DISABLED, *pIconBaseEffectBitmap);
569 delete pIconBaseEffectBitmap;
572 return GetCore().SetButton(BACK_BUTTON, pButton);
576 _FooterImpl::SetItemAt(int itemIndex, const FooterItem& item)
578 SysTryReturnResult(NID_UI_CTRL, (item.GetActionId() != -1), E_INVALID_ARG, "[E_INVALID_ARG] The FooterItem isn't constructed.");
580 if (item.GetActionId() < FOOTER_ACTION_ID_MIN || item.GetActionId() > FOOTER_ACTION_ID_MAX)
582 SysLogException(NID_UI_CTRL, E_INVALID_ARG, "[E_INVALID_ARG] The actionId is invalid.");
583 return E_INVALID_ARG;
586 int count = GetItemCount();
588 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
589 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
591 _Button* pButton = ConvertFooterItem(item);
593 if (__style == FOOTER_STYLE_SEGMENTED_TEXT || __style == FOOTER_STYLE_SEGMENTED_ICON || __style == FOOTER_STYLE_SEGMENTED_ICON_TEXT || __style == FOOTER_STYLE_TAB)
595 pButton->SetButtonStyle(_BUTTON_STYLE_SEGMENT);
598 return GetCore().SetItemAt(itemIndex, pButton);
602 _FooterImpl::SetItemColor(FooterItemStatus status, const Color& color)
604 _ButtonStatus tempStatus = ConvertButtonStatus(status);
606 return GetCore().SetItemColor(tempStatus, color);
610 _FooterImpl::SetItemEnabled(int itemIndex, bool enable)
612 int count = GetItemCount();
614 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
615 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
617 if (__style == FOOTER_STYLE_SEGMENTED_TEXT || __style == FOOTER_STYLE_SEGMENTED_ICON || __style == FOOTER_STYLE_SEGMENTED_ICON_TEXT || __style == FOOTER_STYLE_TAB)
619 // Selected item cannot be disabled.
620 int selectedItemIndex = GetSelectedItemIndex();
622 if ((selectedItemIndex == itemIndex && enable == false) || (selectedItemIndex == -1 && itemIndex == 0 && enable == false))
624 SysLogException(NID_UI_CTRL, E_INVALID_OPERATION, "[E_INVALID_OPERATION] The Selected item cannot be disabled.");
625 return E_INVALID_OPERATION;
629 return GetCore().SetItemEnabled(itemIndex, enable);
633 _FooterImpl::SetItemBadgeIcon(int itemIndex, const Bitmap* pBadgeIcon)
635 SysTryReturnResult(NID_UI_CTRL, (__style != FOOTER_STYLE_BUTTON_ICON && __style != FOOTER_STYLE_BUTTON_ICON_TEXT), E_UNSUPPORTED_OPERATION,
636 "[E_UNSUPPORTED_OPERATION] Unable to set the badge icon because the current style does not support it.");
638 int count = GetItemCount();
640 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
641 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
643 return GetCore().SetItemBadgeIcon(itemIndex, pBadgeIcon);
647 _FooterImpl::SetItemTextColor(FooterItemStatus status, const Color& color)
649 _ButtonStatus tempStatus = ConvertButtonStatus(status);
651 return GetCore().SetItemTextColor(tempStatus, color);
655 _FooterImpl::SetButtonEnabled(ButtonPosition position, bool enable)
657 bool isButtonSet = IsButtonSet(position);
659 SysTryReturnResult(NID_UI_CTRL, isButtonSet, E_INVALID_OPERATION,
660 "[E_INVALID_OPERATION] No button item is set at the specified position.");
662 if (position == BUTTON_POSITION_LEFT)
664 return GetCore().SetButtonEnabled(LEFT_BUTTON, enable);
666 else if (position == BUTTON_POSITION_RIGHT)
668 return GetCore().SetButtonEnabled(RIGHT_BUTTON, enable);
671 return E_INVALID_STATE;
675 _FooterImpl::SetBackButtonEnabled(bool enable)
677 return GetCore().SetButtonEnabled(BACK_BUTTON, enable);
681 _FooterImpl::SetItemSelected(int itemIndex)
683 int count = GetItemCount();
685 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
686 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
688 SysTryReturnResult(NID_UI_CTRL, (__style != FOOTER_STYLE_BUTTON_ICON && __style != FOOTER_STYLE_BUTTON_TEXT && __style != FOOTER_STYLE_BUTTON_ICON_TEXT),
689 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to get the selected item itemIndex because the current style does not support it.");
691 // Disabled item can not selected.
692 FooterItemStatus status;
693 result r = GetItemStatus(itemIndex, status);
695 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[E_INVALID_STATE] Failed to get item status.");
697 SysTryReturnResult(NID_UI_CTRL, (status != FOOTER_ITEM_STATUS_DISABLED), E_INVALID_OPERATION,
698 "[E_INVALID_OPERATION] The disabled item can not be selected.");
700 //__calledBySetItemSelected = true;
702 return GetCore().SetItemSelected(itemIndex);
706 _FooterImpl::SetItemNumberedBadgeIcon(int itemIndex, int number)
708 SysTryReturnResult(NID_UI_CTRL, (__style != FOOTER_STYLE_BUTTON_ICON && __style != FOOTER_STYLE_BUTTON_ICON_TEXT), E_UNSUPPORTED_OPERATION,
709 "[E_UNSUPPORTED_OPERATION] Unable to set the badge icon because the current style does not support it.");
711 int count = GetItemCount();
713 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
714 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
716 SysTryReturnResult(NID_UI_CTRL, (number >= 0 && number <= FOOTER_NUMBERD_BADGE_ICON_NUMBER_MAX), E_INVALID_ARG,
717 "[E_INVALID_ARG] The number is invalid.");
719 return GetCore().SetItemNumberedBadgeIcon(itemIndex, number);
723 _FooterImpl::SetColor(const Color& color)
725 return GetCore().SetColor(color);
729 _FooterImpl::SetStyle(FooterStyle style)
736 return GetCore().SetStyle(ConvertFooterStyle(__style));
740 _FooterImpl::SetTabEditModeEnabled(bool enable)
742 SysTryReturnResult(NID_UI_CTRL, (__style == FOOTER_STYLE_TAB), E_UNSUPPORTED_OPERATION,
743 "[E_UNSUPPORTED_OPERATION] This operation is only for FOOTER_STYLE_TAB.");
745 return GetCore().SetTabEditModeEnabled(enable);
749 _FooterImpl::SetTransparent(bool transparent)
751 return GetCore().SetTransparent(transparent);
755 _FooterImpl::GetButtonBounds(ButtonPosition position) const
757 bool isButtonSet = IsButtonSet(position);
759 SysTryReturn(NID_UI_CTRL, isButtonSet, Rectangle(-1, -1, -1, -1),
760 E_INVALID_OPERATION, "[E_INVALID_OPERATION] No button item is set at the specified position.");
764 if (position == BUTTON_POSITION_LEFT)
766 rect = GetCore().GetButtonBounds(LEFT_BUTTON);
768 else if (position == BUTTON_POSITION_RIGHT)
770 rect = GetCore().GetButtonBounds(RIGHT_BUTTON);
777 _FooterImpl::AddActionEventListener(IActionEventListener& listener)
779 if (__pPublicActionEvent == null)
781 __pPublicActionEvent = _PublicActionEvent::CreateInstanceN(GetPublic());
783 if (IsFailed(GetLastResult()))
785 SysLogException(NID_UI_CTRL, E_SYSTEM, "[E_SYSTEM] System error occurred.");
786 delete __pPublicActionEvent;
791 __pPublicActionEvent->AddListener(listener);
793 GetCore().AddActionEventListener(*this);
799 _FooterImpl::RemoveActionEventListener(IActionEventListener& listener)
803 SysTryReturnVoidResult(NID_UI_CTRL, __pPublicActionEvent, E_INVALID_STATE, "[E_INVALID_STATE] This instance isn't constructed.");
805 // Todo : check fail case of RemoveListener
806 __pPublicActionEvent->RemoveListener(listener);
808 GetCore().RemoveActionEventListener(*this);
814 _FooterImpl::OnActionPerformed(const _Control& source, int actionId)
816 //if (__calledBySetItemSelected)
818 // __calledBySetItemSelected = false;
822 if (GetCore().IsInitialDraw() == true && GetCore().GetSelectedItemIndex() == 0)
827 if (__pPublicActionEvent != null)
829 __pPublicActionEvent->Fire(*_PublicActionEvent::CreateActionEventArgN(actionId));
836 _FooterImpl::CheckItemValidate(const FooterItem& item)
838 result r = E_SUCCESS;
840 SysTryReturnResult(NID_UI_CTRL, (item.GetActionId() != -1), E_INVALID_ARG,
841 "[E_INVALID_ARG] The FooterItem isn't constructed.");
843 int count = GetItemCount();
845 if (__style == FOOTER_STYLE_BUTTON_ICON || __style == FOOTER_STYLE_BUTTON_TEXT || __style == FOOTER_STYLE_BUTTON_ICON_TEXT)
847 SysTryReturnResult(NID_UI_CTRL, (count < 5), E_MAX_EXCEEDED,
848 "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit.");
850 else if (__style == FOOTER_STYLE_TAB)
852 SysTryReturnResult(NID_UI_CTRL, (count < 15), E_MAX_EXCEEDED,
853 "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit.");
855 else if (__style == FOOTER_STYLE_SEGMENTED_TEXT || __style == FOOTER_STYLE_SEGMENTED_ICON || __style == FOOTER_STYLE_SEGMENTED_ICON_TEXT
856 || __style == FOOTER_STYLE_BUTTON_TEXT || __style == FOOTER_STYLE_BUTTON_ICON || __style == FOOTER_STYLE_BUTTON_ICON_TEXT)
858 if (IsButtonSet(BUTTON_POSITION_LEFT))
860 SysTryReturnResult(NID_UI_CTRL, (count < 3), E_MAX_EXCEEDED,
861 "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit.");
865 if (IsBackButtonSet())
867 SysTryReturnResult(NID_UI_CTRL, (count < 4), E_MAX_EXCEEDED,
868 "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit.");
872 if (IsButtonSet(BUTTON_POSITION_RIGHT))
874 SysTryReturnResult(NID_UI_CTRL, (count < 3), E_MAX_EXCEEDED,
875 "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit.");
879 SysTryReturnResult(NID_UI_CTRL, (count < 4), E_MAX_EXCEEDED,
880 "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit.");
886 if (item.GetActionId() < FOOTER_ACTION_ID_MIN || item.GetActionId() > FOOTER_ACTION_ID_MAX)
888 SysLogException(NID_UI_CTRL, E_INVALID_ARG, "[E_INVALID_ARG] The actionId is invalid.");
889 return E_INVALID_ARG;
896 _FooterImpl::ConvertButtonItem(const ButtonItem& buttonItem)
898 _Button* pButton = _Button::CreateButtonN();
900 int buttonItemWidth = 0;
901 int buttonItemHeight = 0;
903 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_WIDTH, GetCore().GetOrientation(), buttonItemWidth);
904 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_HEIGHT, GetCore().GetOrientation(), buttonItemHeight);
906 pButton->SetMargin(0, 0);
907 pButton->SetSize(Dimension(buttonItemWidth, buttonItemHeight));
909 pButton->SetActionId(buttonItem.GetActionId());
911 pButton->SetText(buttonItem.GetText());
913 pButton->SetTextMaxLine(2);
916 result r = GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
920 pButton->SetTextSize(fontSize, FONT_STYLE_BOLD);
925 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize);
927 Bitmap* pIconBitmap = null;
929 pIconBitmap = const_cast<Bitmap*>(buttonItem.__pImpl->GetIcon(BUTTON_ITEM_STATUS_NORMAL));
933 pIconBitmap->Scale(Dimension(iconSize, iconSize));
935 pButton->SetBitmap(_BUTTON_STATUS_NORMAL,
936 Point((buttonItemWidth - iconSize) / 2, (buttonItemHeight - iconSize) / 2), *pIconBitmap);
937 pButton->SetBitmap(_BUTTON_STATUS_PRESSED,
938 Point((buttonItemWidth - iconSize) / 2, (buttonItemHeight - iconSize) / 2), *pIconBitmap);
939 pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED,
940 Point((buttonItemWidth - iconSize) / 2, (buttonItemHeight - iconSize) / 2), *pIconBitmap);
941 pButton->SetBitmap(_BUTTON_STATUS_DISABLED,
942 Point((buttonItemWidth - iconSize) / 2, (buttonItemHeight - iconSize) / 2), *pIconBitmap);
945 pIconBitmap = const_cast<Bitmap*>(buttonItem.__pImpl->GetIcon(BUTTON_ITEM_STATUS_PRESSED));
949 pIconBitmap->Scale(Dimension(iconSize, iconSize));
951 pButton->SetBitmap(_BUTTON_STATUS_PRESSED,
952 Point((buttonItemWidth - iconSize) / 2, (buttonItemHeight - iconSize) / 2), *pIconBitmap);
955 pIconBitmap = const_cast<Bitmap*>(buttonItem.__pImpl->GetIcon(BUTTON_ITEM_STATUS_HIGHLIGHTED));
959 pIconBitmap->Scale(Dimension(iconSize, iconSize));
961 pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED,
962 Point((buttonItemWidth - iconSize) / 2, (buttonItemHeight - iconSize) / 2), *pIconBitmap);
965 pIconBitmap = const_cast<Bitmap*>(buttonItem.__pImpl->GetIcon(BUTTON_ITEM_STATUS_DISABLED));
969 pIconBitmap->Scale(Dimension(iconSize, iconSize));
971 pButton->SetBitmap(_BUTTON_STATUS_DISABLED,
972 Point((buttonItemWidth - iconSize) / 2, (buttonItemHeight - iconSize) / 2), *pIconBitmap);
975 Bitmap* pNormalBackgroundBitmap = null;
976 Bitmap* pColorReplacedBitmap = null;
978 GET_BITMAP_CONFIG_N(FOOTER::BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pNormalBackgroundBitmap);
980 if (pNormalBackgroundBitmap)
982 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pNormalBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
983 GetCore().GetButtonColor(_BUTTON_STATUS_NORMAL));
985 if (GetCore().GetButtonColor(_BUTTON_STATUS_NORMAL).GetAlpha() != 0xFF)
987 pColorReplacedBitmap->SetAlphaConstant(GetCore().GetButtonColor(_BUTTON_STATUS_NORMAL).GetAlpha());
990 pButton->SetBackgroundBitmap(_BUTTON_STATUS_NORMAL, *pColorReplacedBitmap);
991 delete pColorReplacedBitmap;
994 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pNormalBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
995 GetCore().GetButtonColor(_BUTTON_STATUS_PRESSED));
997 if (GetCore().GetButtonColor(_BUTTON_STATUS_PRESSED).GetAlpha() != 0xFF)
999 pColorReplacedBitmap->SetAlphaConstant(GetCore().GetButtonColor(_BUTTON_STATUS_PRESSED).GetAlpha());
1002 pButton->SetBackgroundBitmap(_BUTTON_STATUS_PRESSED, *pColorReplacedBitmap);
1003 delete pColorReplacedBitmap;
1006 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pNormalBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1007 GetCore().GetButtonColor(_BUTTON_STATUS_HIGHLIGHTED));
1009 if (GetCore().GetButtonColor(_BUTTON_STATUS_HIGHLIGHTED).GetAlpha() != 0xFF)
1011 pColorReplacedBitmap->SetAlphaConstant(GetCore().GetButtonColor(_BUTTON_STATUS_HIGHLIGHTED).GetAlpha());
1014 pButton->SetBackgroundBitmap(_BUTTON_STATUS_HIGHLIGHTED, *pColorReplacedBitmap);
1015 delete pColorReplacedBitmap;
1018 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pNormalBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1019 GetCore().GetButtonColor(_BUTTON_STATUS_DISABLED));
1021 if (GetCore().GetButtonColor(_BUTTON_STATUS_DISABLED).GetAlpha() != 0xFF)
1023 pColorReplacedBitmap->SetAlphaConstant(GetCore().GetButtonColor(_BUTTON_STATUS_DISABLED).GetAlpha());
1026 pButton->SetBackgroundBitmap(_BUTTON_STATUS_DISABLED, *pColorReplacedBitmap);
1029 delete pColorReplacedBitmap;
1031 delete pNormalBackgroundBitmap;
1034 if (buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL) != null)
1036 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_NORMAL, *buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL));
1038 if (buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED) != null)
1040 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_PRESSED, *buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED));
1042 if (buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_HIGHLIGHTED) != null)
1044 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_HIGHLIGHTED, *buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_HIGHLIGHTED));
1046 if (buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_DISABLED) != null)
1048 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_DISABLED, *buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_DISABLED));
1055 _FooterImpl::ConvertFooterItem(const FooterItem& footerItem)
1057 _Button* pButton = _Button::CreateButtonN();
1059 int minItemLength = 0;
1061 GET_SHAPE_CONFIG(FOOTER::FOOTER_ITEM_WIDTH_1_MIN, GetCore().GetOrientation(), minItemLength);
1063 pButton->SetSize(Dimension(minItemLength, minItemLength));
1065 pButton->SetActionId(footerItem.GetActionId());
1067 if (__style != FOOTER_STYLE_BUTTON_ICON && __style != FOOTER_STYLE_SEGMENTED_ICON)
1069 pButton->SetText(footerItem.GetText());
1072 pButton->SetTextMaxLine(2);
1077 result r = E_SUCCESS;
1079 if (__style == FOOTER_STYLE_SEGMENTED_TEXT || __style == FOOTER_STYLE_SEGMENTED_ICON
1080 || __style == FOOTER_STYLE_SEGMENTED_ICON_TEXT || __style == FOOTER_STYLE_TAB)
1082 r = GET_SHAPE_CONFIG(FOOTER::SEGMENTED_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
1084 if (footerItem.GetText() != L"")
1086 GET_SHAPE_CONFIG(HEADER::TAB_ITEM_ICON_SIZE_WITH_TEXT, GetCore().GetOrientation(), iconSize);
1090 GET_SHAPE_CONFIG(HEADER::TAB_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize);
1093 Bitmap* pSelectedBitmap = null;
1094 Bitmap* pColorReplacedBitmap = null;
1095 Color selectedBitmapColor;
1097 GET_BITMAP_CONFIG_N(HEADER::TAB_ITEM_BG_SELECTED, BITMAP_PIXEL_FORMAT_ARGB8888, pSelectedBitmap);
1098 GET_COLOR_CONFIG(HEADER::SEGMENTED_ITEM_TEXT_PRESSED, selectedBitmapColor);
1100 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), selectedBitmapColor);
1102 if (pColorReplacedBitmap)
1104 pButton->SetToolbarSelectedBitmap(*pColorReplacedBitmap, false);
1106 delete pColorReplacedBitmap;
1108 delete pSelectedBitmap;
1111 else if (__style == FOOTER_STYLE_BUTTON_TEXT || __style == FOOTER_STYLE_BUTTON_ICON || __style == FOOTER_STYLE_BUTTON_ICON_TEXT)
1113 r = GET_SHAPE_CONFIG(FOOTER::FOOTER_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
1115 if (footerItem.GetText() != L"")
1117 GET_SHAPE_CONFIG(FOOTER::FOOTER_ITEM_BUTTON_STYLE_ICON_SIZE_WITH_TEXT, GetCore().GetOrientation(), iconSize);
1121 GET_SHAPE_CONFIG(FOOTER::FOOTER_ITEM_BUTTON_STYLE_ICON_SIZE, GetCore().GetOrientation(), iconSize);
1127 pButton->SetTextSize(fontSize, FONT_STYLE_BOLD);
1130 Bitmap* pIconBitmap = null;
1132 if (__style != FOOTER_STYLE_BUTTON_TEXT && __style != FOOTER_STYLE_SEGMENTED_TEXT)
1134 pIconBitmap = const_cast<Bitmap*>(footerItem.__pImpl->GetIcon(FOOTER_ITEM_STATUS_NORMAL));
1137 pIconBitmap->Scale(Dimension(iconSize, iconSize));
1139 pButton->SetBitmap(_BUTTON_STATUS_NORMAL, Point(0, 0), *pIconBitmap);
1140 pButton->SetBitmap(_BUTTON_STATUS_PRESSED, Point(0, 0), *pIconBitmap);
1141 pButton->SetBitmap(_BUTTON_STATUS_SELECTED, Point(0, 0), *pIconBitmap);
1142 pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED, Point(0, 0), *pIconBitmap);
1143 pButton->SetBitmap(_BUTTON_STATUS_DISABLED, Point(0, 0), *pIconBitmap);
1146 pIconBitmap = const_cast<Bitmap*>(footerItem.__pImpl->GetIcon(FOOTER_ITEM_STATUS_PRESSED));
1150 pIconBitmap->Scale(Dimension(iconSize, iconSize));
1152 pButton->SetBitmap(_BUTTON_STATUS_PRESSED, Point(0, 0), *pIconBitmap);
1155 pIconBitmap = const_cast<Bitmap*>(footerItem.__pImpl->GetIcon(FOOTER_ITEM_STATUS_SELECTED));
1159 pIconBitmap->Scale(Dimension(iconSize, iconSize));
1161 pButton->SetBitmap(_BUTTON_STATUS_SELECTED, Point(0, 0), *pIconBitmap);
1164 pIconBitmap = const_cast<Bitmap*>(footerItem.__pImpl->GetIcon(FOOTER_ITEM_STATUS_HIGHLIGHTED));
1168 pIconBitmap->Scale(Dimension(iconSize, iconSize));
1170 pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED, Point(0, 0), *pIconBitmap);
1173 pIconBitmap = const_cast<Bitmap*>(footerItem.__pImpl->GetIcon(FOOTER_ITEM_STATUS_DISABLED));
1177 pIconBitmap->Scale(Dimension(iconSize, iconSize));
1179 pButton->SetBitmap(_BUTTON_STATUS_DISABLED, Point(0, 0), *pIconBitmap);
1183 if (footerItem.__pImpl->GetBackgroundBitmap(FOOTER_ITEM_STATUS_NORMAL) != null)
1185 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_NORMAL,
1186 *footerItem.__pImpl->GetBackgroundBitmap(FOOTER_ITEM_STATUS_NORMAL));
1188 if (footerItem.__pImpl->GetBackgroundBitmap(FOOTER_ITEM_STATUS_PRESSED) != null)
1190 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_PRESSED,
1191 *footerItem.__pImpl->GetBackgroundBitmap(FOOTER_ITEM_STATUS_PRESSED));
1193 if (footerItem.__pImpl->GetBackgroundBitmap(FOOTER_ITEM_STATUS_SELECTED) != null)
1195 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_SELECTED,
1196 *footerItem.__pImpl->GetBackgroundBitmap(FOOTER_ITEM_STATUS_SELECTED));
1198 if (footerItem.__pImpl->GetBackgroundBitmap(FOOTER_ITEM_STATUS_HIGHLIGHTED) != null)
1200 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_HIGHLIGHTED,
1201 *footerItem.__pImpl->GetBackgroundBitmap(FOOTER_ITEM_STATUS_HIGHLIGHTED));
1203 if (footerItem.__pImpl->GetBackgroundBitmap(FOOTER_ITEM_STATUS_DISABLED) != null)
1205 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_DISABLED,
1206 *footerItem.__pImpl->GetBackgroundBitmap(FOOTER_ITEM_STATUS_DISABLED));
1213 _FooterImpl::OnChangeLayout(_ControlOrientation orientation)
1215 GetCore().OnChangeLayout(orientation);
1221 _FooterImpl::ConvertButtonItemStatus(_ButtonStatus status) const
1225 case _BUTTON_STATUS_NORMAL:
1226 return BUTTON_ITEM_STATUS_NORMAL;
1229 case _BUTTON_STATUS_DISABLED:
1230 return BUTTON_ITEM_STATUS_DISABLED;
1233 case _BUTTON_STATUS_PRESSED:
1234 return BUTTON_ITEM_STATUS_PRESSED;
1237 case _BUTTON_STATUS_HIGHLIGHTED:
1238 return BUTTON_ITEM_STATUS_HIGHLIGHTED;
1242 return BUTTON_ITEM_STATUS_DISABLED;
1248 _FooterImpl::ConvertFooterItemStatus(_ButtonStatus status) const
1252 case _BUTTON_STATUS_NORMAL:
1253 return FOOTER_ITEM_STATUS_NORMAL;
1256 case _BUTTON_STATUS_DISABLED:
1257 return FOOTER_ITEM_STATUS_DISABLED;
1260 case _BUTTON_STATUS_PRESSED:
1261 return FOOTER_ITEM_STATUS_PRESSED;
1264 case _BUTTON_STATUS_HIGHLIGHTED:
1265 return FOOTER_ITEM_STATUS_HIGHLIGHTED;
1268 case _BUTTON_STATUS_SELECTED:
1269 return FOOTER_ITEM_STATUS_SELECTED;
1273 return FOOTER_ITEM_STATUS_DISABLED;
1279 _FooterImpl::ConvertButtonStatus(ButtonItemStatus status) const
1283 case BUTTON_ITEM_STATUS_NORMAL:
1284 return _BUTTON_STATUS_NORMAL;
1287 case BUTTON_ITEM_STATUS_DISABLED:
1288 return _BUTTON_STATUS_DISABLED;
1291 case BUTTON_ITEM_STATUS_PRESSED:
1292 return _BUTTON_STATUS_PRESSED;
1295 case BUTTON_ITEM_STATUS_HIGHLIGHTED:
1296 return _BUTTON_STATUS_HIGHLIGHTED;
1300 return _BUTTON_STATUS_DISABLED;
1306 _FooterImpl::ConvertButtonStatus(FooterItemStatus status) const
1310 case FOOTER_ITEM_STATUS_NORMAL:
1311 return _BUTTON_STATUS_NORMAL;
1314 case FOOTER_ITEM_STATUS_DISABLED:
1315 return _BUTTON_STATUS_DISABLED;
1318 case FOOTER_ITEM_STATUS_PRESSED:
1319 return _BUTTON_STATUS_PRESSED;
1322 case FOOTER_ITEM_STATUS_HIGHLIGHTED:
1323 return _BUTTON_STATUS_HIGHLIGHTED;
1326 case FOOTER_ITEM_STATUS_SELECTED:
1327 return _BUTTON_STATUS_SELECTED;
1331 return _BUTTON_STATUS_DISABLED;
1337 _FooterImpl::ConvertFooterStyle(FooterStyle style)
1339 ToolbarStyle viewStyle = TOOLBAR_TEXT;
1343 case FOOTER_STYLE_TAB:
1344 viewStyle = TOOLBAR_TAB;
1347 case FOOTER_STYLE_SEGMENTED_TEXT:
1350 case FOOTER_STYLE_SEGMENTED_ICON_TEXT:
1353 case FOOTER_STYLE_SEGMENTED_ICON:
1354 viewStyle = TOOLBAR_SEGMENTED;
1357 case FOOTER_STYLE_BUTTON_TEXT:
1358 viewStyle = TOOLBAR_TEXT;
1361 case FOOTER_STYLE_BUTTON_ICON:
1362 viewStyle = TOOLBAR_ICON;
1365 case FOOTER_STYLE_BUTTON_ICON_TEXT:
1366 viewStyle = TOOLBAR_ICON_TEXT;
1376 : public _UiBuilderControlMaker
1379 _FooterMaker(_UiBuilder* uibuilder)
1380 : _UiBuilderControlMaker(uibuilder){};
1381 virtual ~_FooterMaker(){};
1382 static _UiBuilderControlMaker* GetInstance(_UiBuilder* uibuilder)
1384 _FooterMaker* pFooterMaker = new (std::nothrow) _FooterMaker(uibuilder);
1385 return pFooterMaker;
1388 virtual Control* Make(_UiBuilderControl* pControl)
1390 Footer* pFooter = null;
1393 String elementString;
1398 FooterStyle fstyle = FOOTER_STYLE_BUTTON_TEXT;
1399 Form* pForm = static_cast<Form*>(GetContainer());
1400 pFooter = pForm->GetFooter();
1402 if (null == pFooter)
1407 if (pControl->GetElement(L"footerStyle", elementString))
1409 if (elementString.Equals(L"FOOTER_STYLE_BUTTON_TEXT", false))
1411 fstyle = FOOTER_STYLE_BUTTON_TEXT;
1413 else if (elementString.Equals(L"FOOTER_STYLE_BUTTON_ICON", false))
1415 fstyle = FOOTER_STYLE_BUTTON_ICON;
1417 else if (elementString.Equals(L"FOOTER_STYLE_BUTTON_ICON_TEXT", false))
1419 fstyle = FOOTER_STYLE_BUTTON_ICON_TEXT;
1421 else if (elementString.Equals(L"FOOTER_STYLE_SEGMENTED_TEXT", false))
1423 fstyle = FOOTER_STYLE_SEGMENTED_TEXT;
1425 else if (elementString.Equals(L"FOOTER_STYLE_SEGMENTED_ICON", false))
1427 fstyle = FOOTER_STYLE_SEGMENTED_ICON;
1429 else if (elementString.Equals(L"FOOTER_STYLE_SEGMENTED_ICON_TEXT", false))
1431 fstyle = FOOTER_STYLE_SEGMENTED_ICON_TEXT;
1433 else if (elementString.Equals(L"FOOTER_STYLE_TAB", false))
1435 fstyle = FOOTER_STYLE_TAB;
1438 pFooter->SetStyle(fstyle);
1441 if (pControl->GetElement(L"backgroundBitmapPath", elementString) || pControl->GetElement(L"BGBitmapPath", elementString))
1443 Bitmap* pBitmap = null;
1444 pBitmap = LoadBitmapN(elementString);
1445 pFooter->SetBackgroundBitmap(pBitmap);
1449 if (pControl->GetElement(L"colorOpacity", elementString))
1451 Base::Integer::Parse(elementString, opacity);
1454 if (pControl->GetElement(L"color", elementString))
1456 ConvertStringToColor32(elementString, opacity, color);
1457 pFooter->SetColor(color);
1461 if (pControl->GetElement(L"normalButtonColorOpacity", elementString))
1463 Base::Integer::Parse(elementString, opacity);
1466 if (pControl->GetElement(L"normalButtonColor", elementString))
1468 ConvertStringToColor32(elementString, opacity, color);
1469 pFooter->SetButtonColor(BUTTON_ITEM_STATUS_NORMAL, color);
1472 if (pControl->GetElement(L"normalButtonTextColor", elementString))
1474 ConvertStringToColor(elementString, color);
1475 pFooter->SetButtonTextColor(BUTTON_ITEM_STATUS_NORMAL, color);
1479 if (pControl->GetElement(L"pressedButtonColorOpacity", elementString))
1481 Base::Integer::Parse(elementString, opacity);
1484 if (pControl->GetElement(L"pressedButtonColor", elementString))
1486 ConvertStringToColor32(elementString, opacity, color);
1487 pFooter->SetButtonColor(BUTTON_ITEM_STATUS_PRESSED, color);
1490 if (pControl->GetElement(L"pressedButtonTextColor", elementString))
1492 ConvertStringToColor(elementString, color);
1493 pFooter->SetButtonTextColor(BUTTON_ITEM_STATUS_PRESSED, color);
1496 // highlighted button
1497 if (pControl->GetElement(L"highlightedButtonColorOpacity", elementString))
1499 Base::Integer::Parse(elementString, opacity);
1502 if (pControl->GetElement(L"highlightedButtonColor", elementString))
1504 ConvertStringToColor32(elementString, opacity, color);
1505 pFooter->SetButtonColor(BUTTON_ITEM_STATUS_HIGHLIGHTED, color);
1508 if (pControl->GetElement(L"highlightedButtonTextColor", elementString))
1510 ConvertStringToColor(elementString, color);
1511 pFooter->SetButtonTextColor(BUTTON_ITEM_STATUS_HIGHLIGHTED, color);
1515 if (pControl->GetElement(L"disabledButtonColorOpacity", elementString))
1517 Base::Integer::Parse(elementString, opacity);
1520 if (pControl->GetElement(L"disabledButtonColor", elementString))
1522 ConvertStringToColor32(elementString, opacity, color);
1523 pFooter->SetButtonColor(BUTTON_ITEM_STATUS_DISABLED, color);
1526 if (pControl->GetElement(L"disabledButtonTextColor", elementString))
1528 ConvertStringToColor(elementString, color);
1529 pFooter->SetButtonTextColor(BUTTON_ITEM_STATUS_DISABLED, color);
1532 if (pControl->GetElement(L"normalItemColorOpacity", elementString))
1534 Base::Integer::Parse(elementString, opacity);
1537 if (pControl->GetElement(L"normalItemColor", elementString))
1539 ConvertStringToColor32(elementString, opacity, color);
1540 pFooter->SetItemColor(FOOTER_ITEM_STATUS_NORMAL, color);
1543 if (pControl->GetElement(L"normalItemTextColor", elementString))
1545 ConvertStringToColor(elementString, color);
1546 pFooter->SetItemTextColor(FOOTER_ITEM_STATUS_NORMAL, color);
1550 if (pControl->GetElement(L"pressedItemColorOpacity", elementString))
1552 Base::Integer::Parse(elementString, opacity);
1555 if (pControl->GetElement(L"pressedItemColor", elementString))
1557 ConvertStringToColor32(elementString, opacity, color);
1558 pFooter->SetItemColor(FOOTER_ITEM_STATUS_PRESSED, color);
1561 if (pControl->GetElement(L"pressedItemTextColor", elementString))
1563 ConvertStringToColor(elementString, color);
1564 pFooter->SetItemTextColor(FOOTER_ITEM_STATUS_PRESSED, color);
1568 if (pControl->GetElement(L"selectedItemColorOpacity", elementString))
1570 Base::Integer::Parse(elementString, opacity);
1573 if (pControl->GetElement(L"selectedItemColor", elementString))
1575 ConvertStringToColor32(elementString, opacity, color);
1576 pFooter->SetItemColor(FOOTER_ITEM_STATUS_SELECTED, color);
1579 if (pControl->GetElement(L"selectedItemTextColor", elementString))
1581 ConvertStringToColor(elementString, color);
1582 pFooter->SetItemTextColor(FOOTER_ITEM_STATUS_SELECTED, color);
1586 if (pControl->GetElement(L"highlightedItemColorOpacity", elementString))
1588 Base::Integer::Parse(elementString, opacity);
1591 if (pControl->GetElement(L"highlightedItemColor", elementString))
1593 ConvertStringToColor32(elementString, opacity, color);
1594 pFooter->SetItemColor(FOOTER_ITEM_STATUS_HIGHLIGHTED, color);
1597 if (pControl->GetElement(L"highlightedItemTextColor", elementString))
1599 ConvertStringToColor(elementString, color);
1600 pFooter->SetItemTextColor(FOOTER_ITEM_STATUS_HIGHLIGHTED, color);
1603 if (pControl->GetElement(L"disabledItemColorOpacity", elementString))
1605 Base::Integer::Parse(elementString, opacity);
1608 if (pControl->GetElement(L"disabledItemColor", elementString))
1610 ConvertStringToColor32(elementString, opacity, color);
1611 pFooter->SetItemColor(FOOTER_ITEM_STATUS_DISABLED, color);
1614 if (pControl->GetElement(L"disabledItemTextColor", elementString))
1616 ConvertStringToColor(elementString, color);
1617 pFooter->SetItemTextColor(FOOTER_ITEM_STATUS_DISABLED, color);
1620 if ((FOOTER_STYLE_TAB != fstyle) && (pControl->GetElement(L"showBackButton", elementString)))
1622 if (elementString.Equals(L"true", false))
1624 pFooter->SetBackButton();
1628 int itemCnt = pControl->GetItemCount();
1629 ButtonItemStyle buttonItemStyle = BUTTON_ITEM_STYLE_TEXT;
1630 ButtonPosition buttonPosition = BUTTON_POSITION_LEFT;
1631 String footerItemString;
1633 for (int i = 0; i < itemCnt; i++)
1635 footerItemString = pControl->GetItemName(i);
1637 if (footerItemString.Equals(L"footerItem", false))
1639 FooterItem footerItem;
1641 if (pControl->GetItemElement(i, "actionId", elementString))
1644 Base::Integer::Parse(elementString, actionId);
1645 footerItem.Construct(actionId);
1648 if (pControl->GetItemElement(i, "text", elementString))
1650 footerItem.SetText(elementString);
1653 // footeritem background bitmap path setting
1655 if (pControl->GetItemElement(i, "normalBGBitmapPath", elementString))
1657 Bitmap* pBitmap = null;
1658 pBitmap = LoadBitmapN(elementString);
1659 footerItem.SetBackgroundBitmap(FOOTER_ITEM_STATUS_NORMAL, pBitmap);
1662 // pressed bg bitmap
1663 if (pControl->GetItemElement(i, "pressedBGBitmapPath", elementString))
1665 Bitmap* pBitmap = null;
1666 pBitmap = LoadBitmapN(elementString);
1667 footerItem.SetBackgroundBitmap(FOOTER_ITEM_STATUS_PRESSED, pBitmap);
1670 // selected bg bitmap
1671 if (pControl->GetItemElement(i, "selectedBGBitmapPath", elementString))
1673 Bitmap* pBitmap = null;
1674 pBitmap = LoadBitmapN(elementString);
1675 footerItem.SetBackgroundBitmap(FOOTER_ITEM_STATUS_SELECTED, pBitmap);
1678 // highlighted bg bitmap
1679 if (pControl->GetItemElement(i, "highlightedBGBitmapPath", elementString))
1681 Bitmap* pBitmap = null;
1682 pBitmap = LoadBitmapN(elementString);
1683 footerItem.SetBackgroundBitmap(FOOTER_ITEM_STATUS_HIGHLIGHTED, pBitmap);
1686 // disabled bg bitmap
1687 if (pControl->GetItemElement(i, "disabledBGBitmapPath", elementString))
1689 Bitmap* pBitmap = null;
1690 pBitmap = LoadBitmapN(elementString);
1691 footerItem.SetBackgroundBitmap(FOOTER_ITEM_STATUS_DISABLED, pBitmap);
1694 // footeritem icon bitmap setting
1696 if (pControl->GetItemElement(i, "normalIconPath", elementString))
1698 Bitmap* pBitmap = null;
1699 pBitmap = LoadBitmapN(elementString);
1700 footerItem.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pBitmap);
1704 if (pControl->GetItemElement(i, "pressedIconPath", elementString))
1706 Bitmap* pBitmap = null;
1707 pBitmap = LoadBitmapN(elementString);
1708 footerItem.SetIcon(FOOTER_ITEM_STATUS_PRESSED, pBitmap);
1712 if (pControl->GetItemElement(i, "selectedIconPath", elementString))
1714 Bitmap* pBitmap = null;
1715 pBitmap = LoadBitmapN(elementString);
1716 footerItem.SetIcon(FOOTER_ITEM_STATUS_SELECTED, pBitmap);
1720 if (pControl->GetItemElement(i, "highlightedIconPath", elementString))
1722 Bitmap* pBitmap = null;
1723 pBitmap = LoadBitmapN(elementString);
1724 footerItem.SetIcon(FOOTER_ITEM_STATUS_HIGHLIGHTED, pBitmap);
1728 if (pControl->GetItemElement(i, "disabledIconPath", elementString))
1730 Bitmap* pBitmap = null;
1731 pBitmap = LoadBitmapN(elementString);
1732 footerItem.SetIcon(FOOTER_ITEM_STATUS_DISABLED, pBitmap);
1735 pFooter->AddItem(footerItem);
1737 else if (footerItemString.Equals(L"buttonItem", false))
1739 ButtonItem buttonItem;
1742 if (pControl->GetItemElement(i, "style", elementString))
1744 if (elementString.Equals(L"BUTTON_ITEM_STYLE_TEXT", false))
1746 buttonItemStyle = BUTTON_ITEM_STYLE_TEXT;
1748 else if (elementString.Equals(L"BUTTON_ITEM_STYLE_ICON", false))
1750 buttonItemStyle = BUTTON_ITEM_STYLE_ICON;
1754 // set button position
1755 if (pControl->GetItemElement(i, "position", elementString))
1757 if (elementString.Equals(L"BUTTON_POSITION_LEFT", false))
1759 buttonPosition = BUTTON_POSITION_LEFT;
1761 else if (elementString.Equals(L"BUTTON_POSITION_RIGHT", false))
1763 buttonPosition = BUTTON_POSITION_RIGHT;
1768 if (pControl->GetItemElement(i, "actionId", elementString))
1771 Base::Integer::Parse(elementString, actionId);
1772 buttonItem.Construct(buttonItemStyle, actionId);
1776 if (pControl->GetItemElement(i, "text", elementString))
1778 buttonItem.SetText(elementString);
1781 // buttonitem background bitmap path setting
1783 if (pControl->GetItemElement(i, "normalBGBitmapPath", elementString))
1785 Bitmap* pBitmap = null;
1786 pBitmap = LoadBitmapN(elementString);
1787 buttonItem.SetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL, pBitmap);
1790 // pressed bg bitmap
1791 if (pControl->GetItemElement(i, "pressedBGBitmapPath", elementString))
1793 Bitmap* pBitmap = null;
1794 pBitmap = LoadBitmapN(elementString);
1795 buttonItem.SetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED, pBitmap);
1798 // highlighted bg bitmap
1799 if (pControl->GetItemElement(i, "highlightedBGBitmapPath", elementString))
1801 Bitmap* pBitmap = null;
1802 pBitmap = LoadBitmapN(elementString);
1803 buttonItem.SetBackgroundBitmap(BUTTON_ITEM_STATUS_HIGHLIGHTED, pBitmap);
1806 // disabled bg bitmap
1807 if (pControl->GetItemElement(i, "disabledBGBitmapPath", elementString))
1809 Bitmap* pBitmap = null;
1810 pBitmap = LoadBitmapN(elementString);
1811 buttonItem.SetBackgroundBitmap(BUTTON_ITEM_STATUS_DISABLED, pBitmap);
1814 // buttonitem icon bitmap setting
1815 if (pControl->GetItemElement(i, "normalIconPath", elementString))
1817 Bitmap* pBitmap = null;
1818 pBitmap = LoadBitmapN(elementString);
1819 buttonItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitmap);
1822 if (pControl->GetItemElement(i, "pressedIconPath", elementString))
1824 Bitmap* pBitmap = null;
1825 pBitmap = LoadBitmapN(elementString);
1826 buttonItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitmap);
1829 if (pControl->GetItemElement(i, "highlightedIconPath", elementString))
1831 Bitmap* pBitmap = null;
1832 pBitmap = LoadBitmapN(elementString);
1833 buttonItem.SetIcon(BUTTON_ITEM_STATUS_HIGHLIGHTED, pBitmap);
1836 if (pControl->GetItemElement(i, "disabledIconPath", elementString))
1838 Bitmap* pBitmap = null;
1839 pBitmap = LoadBitmapN(elementString);
1840 buttonItem.SetIcon(BUTTON_ITEM_STATUS_DISABLED, pBitmap);
1843 pFooter->SetButton(buttonPosition, buttonItem);
1854 _FooterRegister::_FooterRegister()
1856 _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
1857 pUiBuilderControlTableManager->RegisterControl(L"Footer", _FooterMaker::GetInstance);
1860 _FooterRegister::~_FooterRegister()
1862 _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
1863 pUiBuilderControlTableManager->UnregisterControl(L"Footer");
1866 static _FooterRegister FooterRegisterToUiBuilder;
1868 }}} // Tizen::Ui::Controls