2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
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
9 // http://www.apache.org/licenses/LICENSE-2.0/
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_HeaderImpl.cpp
19 * @brief This is the implementation file for the _HeaderImpl class.
23 #include <FGrp_BitmapImpl.h>
24 #include <FUiAccessibilityContainer.h>
25 #include <FUiAccessibilityElement.h>
26 #include "FUi_AccessibilityContainer.h"
27 #include "FUi_AccessibilityElement.h"
28 #include "FUi_Control.h"
29 #include "FUi_EcoreEvasMgr.h"
30 #include "FUi_EcoreEvas.h"
31 #include "FUi_ResourceManager.h"
32 #include "FUi_UiBuilder.h"
33 #include "FUiCtrl_ButtonItemImpl.h"
34 #include "FUiCtrl_HeaderImpl.h"
35 #include "FUiCtrl_HeaderItemImpl.h"
36 #include "FUiCtrl_IActionEventListener.h"
37 #include "FUiCtrl_PanelImpl.h"
38 #include "FUiCtrl_PublicActionEvent.h"
40 using namespace Tizen::Base;
41 using namespace Tizen::Graphics;
43 namespace Tizen { namespace Ui { namespace Controls
47 _HeaderImpl::CreateHeaderImplN(Header* pControl)
52 _Toolbar* pCore = null;
54 pCore = _Toolbar::CreateToolbarN(true);
56 SysTryReturn(NID_UI_CTRL, pCore, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(r));
58 r = pCore->InitializeLongPressGesture();
59 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
61 r = pCore->InitializeFlickGesture();
62 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
64 _HeaderImpl* pHeaderImpl = new (std::nothrow) _HeaderImpl(pControl, pCore);
66 r = CheckConstruction(pCore, pHeaderImpl);
67 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
72 _HeaderImpl::_HeaderImpl(Header* pPublic, _Toolbar* pCore)
73 : _ControlImpl(pPublic, pCore)
74 , __style(HEADER_STYLE_TITLE)
75 , __pPublicActionEvent(null)
76 //, __calledBySetItemSelected(false)
78 result r = GetLastResult(); // Check if _ControlImpl succeeded.
79 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
81 pCore->SetStyle(TOOLBAR_TITLE);
83 Color tempColor = Color(0);
85 GET_COLOR_CONFIG(HEADER::BG_NORMAL, tempColor);
86 pCore->SetColor(tempColor);
89 _HeaderImpl::~_HeaderImpl(void)
91 if (__pPublicActionEvent)
93 delete __pPublicActionEvent;
94 __pPublicActionEvent = null;
99 _HeaderImpl::GetHeader(void) const
101 return &const_cast <Header&>(GetPublic());
105 _HeaderImpl::GetPublicClassName(void) const
107 return "Tizen::Ui::Controls::Header";
111 _HeaderImpl::GetPublic(void) const
113 return static_cast<const Header&>(_ControlImpl::GetPublic());
117 _HeaderImpl::GetPublic(void)
119 return static_cast<Header&>(_ControlImpl::GetPublic());
123 _HeaderImpl::GetCore(void) const
125 return static_cast<const _Toolbar&>(_ControlImpl::GetCore());
129 _HeaderImpl::GetCore(void)
131 return static_cast<_Toolbar&>(_ControlImpl::GetCore());
135 _HeaderImpl::GetInstance(const Header& header)
137 return static_cast<const _HeaderImpl*> (header._pControlImpl);
141 _HeaderImpl::GetInstance(Header& header)
143 return static_cast<_HeaderImpl*> (header._pControlImpl);
147 _HeaderImpl::AddItem(const HeaderItem& item)
149 SysTryReturnResult(NID_UI_CTRL, (__style != HEADER_STYLE_TITLE), E_SYSTEM, "[E_SYSTEM] Unable to add the item because the current style does not support it.");
151 result r = CheckItemValidate(item);
158 if (__style == HEADER_STYLE_TITLE_BUTTON && GetItemCount() >= 1)
160 SysLogException(NID_UI_CTRL, E_MAX_EXCEEDED, "[E_MAX_EXCEEDED] Only 1 HeaderItem can be added to HEADER_STYLE_TITLE_BUTTON ");
161 return E_MAX_EXCEEDED;
164 _Button* pButton = ConvertHeaderItem(item);
166 if (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
167 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE)
169 pButton->SetButtonStyle(_BUTTON_STYLE_SEGMENT);
172 return GetCore().AddItem(pButton);
176 _HeaderImpl::GetButtonStatus(ButtonPosition position) const
178 bool isButtonSet = IsButtonSet(position);
180 SysTryReturn(NID_UI_CTRL, isButtonSet == true, BUTTON_ITEM_STATUS_NORMAL, E_INVALID_OPERATION,
181 "[E_INVALID_OPERATION] No button item is set at the specified position.");
183 _ButtonStatus buttonStatus = _BUTTON_STATUS_NORMAL;
185 if (position == BUTTON_POSITION_LEFT)
187 buttonStatus = GetCore().GetButtonStatus(LEFT_BUTTON);
189 else if (position == BUTTON_POSITION_RIGHT)
191 buttonStatus = GetCore().GetButtonStatus(RIGHT_BUTTON);
194 return ConvertButtonItemStatus(buttonStatus);
198 _HeaderImpl::GetButtonColor(ButtonItemStatus status) const
200 _ButtonStatus tempStatus = ConvertButtonStatus(status);
202 return GetCore().GetButtonColor(tempStatus);
206 _HeaderImpl::GetButtonTextColor(ButtonItemStatus status) const
208 _ButtonStatus tempStatus = ConvertButtonStatus(status);
210 return GetCore().GetButtonTextColor(tempStatus);
214 _HeaderImpl::GetDescriptionText(void) const
216 return GetCore().GetDescriptionText();
220 _HeaderImpl::GetDescriptionTextColor(void) const
222 return GetCore().GetDescriptionTextColor();
226 _HeaderImpl::GetItemColor(HeaderItemStatus status) const
228 _ButtonStatus tempStatus = ConvertButtonStatus(status);
230 return GetCore().GetItemColor(tempStatus);
234 _HeaderImpl::GetItemCount(void) const
236 return GetCore().GetItemCount();
240 _HeaderImpl::GetItemStatus(int itemIndex, HeaderItemStatus& status) const
242 int count = GetItemCount();
244 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex <= count), E_OUT_OF_RANGE,
245 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
247 _Button* pButton = GetCore().GetItem(itemIndex);
249 SysTryReturnResult(NID_UI_CTRL, pButton, E_SYSTEM, "[E_SYSTEM] Unable to get the item status.");
251 status = ConvertHeaderItemStatus(pButton->GetButtonStatus());
257 _HeaderImpl::GetItemTextColor(HeaderItemStatus status) const
259 _ButtonStatus tempStatus = ConvertButtonStatus(status);
261 return GetCore().GetItemTextColor(tempStatus);
265 _HeaderImpl::GetStyle(void) const
271 _HeaderImpl::GetSelectedItemIndex(void) const
273 SysTryReturn(NID_UI_CTRL, (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
274 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE), -1,
275 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to get the selected item index because the current style does not support it.")
277 return GetCore().GetSelectedItemIndex();
281 _HeaderImpl::GetTitleText(void) const
283 return GetCore().GetTitleText();
287 _HeaderImpl::GetTitleTextColor(void) const
289 return GetCore().GetTitleTextColor();
293 _HeaderImpl::GetColor(void) const
295 return GetCore().GetColor();
299 _HeaderImpl::InsertItemAt(int itemIndex, const HeaderItem& item)
301 result r = CheckItemValidate(item);
308 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
309 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE || __style == HEADER_STYLE_BUTTON), E_SYSTEM,
310 "[E_SYSTEM] Unable to add the item because the current style does not support it.");
312 int count = GetItemCount();
314 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex <= count), E_OUT_OF_RANGE,
315 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
317 _Button* pButton = ConvertHeaderItem(item);
319 pButton->SetButtonStyle(_BUTTON_STYLE_SEGMENT);
321 return GetCore().InsertItemAt(itemIndex, pButton);
325 _HeaderImpl::IsButtonSet(ButtonPosition position) const
327 if (position == BUTTON_POSITION_LEFT)
329 return GetCore().IsButtonSet(LEFT_BUTTON);
331 else if (position == BUTTON_POSITION_RIGHT)
333 return GetCore().IsButtonSet(RIGHT_BUTTON);
340 _HeaderImpl::PlayWaitingAnimation(HeaderAnimationPosition animationPos)
342 if ((__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_TITLE_BUTTON || __style == HEADER_STYLE_BUTTON || __style == HEADER_STYLE_TAB)
343 && animationPos == HEADER_ANIMATION_POSITION_TITLE)
345 SysLogException(NID_UI_CTRL, E_INVALID_OPERATION, "[E_INVALID_OPERATION] Unable to pause the waiting animation because the current style does not support it.");
346 return E_INVALID_OPERATION;
349 if ((IsButtonSet(BUTTON_POSITION_LEFT) == false && animationPos == HEADER_ANIMATION_POSITION_BUTTON_LEFT)
350 || (IsButtonSet(BUTTON_POSITION_RIGHT) == false && animationPos == HEADER_ANIMATION_POSITION_BUTTON_RIGHT))
352 SysLogException(NID_UI_CTRL, E_INVALID_OPERATION,
353 "[E_INVALID_OPERATION] Unable to play the waiting animation because no button is set at the specified position.");
354 return E_INVALID_OPERATION;
357 ToolbarAnimationPosition toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
359 if (animationPos == HEADER_ANIMATION_POSITION_TITLE)
361 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
363 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_LEFT)
365 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_LEFT;
367 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_RIGHT)
369 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_RIGHT;
372 return GetCore().PlayWaitingAnimation(toolbarAnimPos);
376 _HeaderImpl::StopWaitingAnimation(HeaderAnimationPosition animationPos)
378 if ((__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_TITLE_BUTTON || __style == HEADER_STYLE_BUTTON || __style == HEADER_STYLE_TAB)
379 && animationPos == HEADER_ANIMATION_POSITION_TITLE)
381 SysLogException(NID_UI_CTRL, E_INVALID_OPERATION, "[E_INVALID_OPERATION] A Header in this style doesn't support title animation.");
382 return E_INVALID_OPERATION;
385 SysTryReturnResult(NID_UI_CTRL, (GetWaitingAnimationStatus(animationPos) != ANIMATION_STOPPED), E_INVALID_OPERATION,
386 "[E_INVALID_OPERATION] The animation is not playing currently.");
388 ToolbarAnimationPosition toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
390 if (animationPos == HEADER_ANIMATION_POSITION_TITLE)
392 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
394 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_LEFT)
396 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_LEFT;
398 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_RIGHT)
400 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_RIGHT;
403 return GetCore().StopWaitingAnimation(toolbarAnimPos);
407 _HeaderImpl::PauseWaitingAnimation(HeaderAnimationPosition animationPos)
409 if ((__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_TITLE_BUTTON || __style == HEADER_STYLE_BUTTON || __style == HEADER_STYLE_TAB)
410 && animationPos == HEADER_ANIMATION_POSITION_TITLE)
412 SysLogException(NID_UI_CTRL, E_INVALID_OPERATION, "[E_INVALID_OPERATION] Unable to pause the waiting animation because the current style does not support it.");
413 return E_INVALID_OPERATION;
416 SysTryReturnResult(NID_UI_CTRL, (GetWaitingAnimationStatus(animationPos) != ANIMATION_STOPPED), E_INVALID_OPERATION,
417 "[E_INVALID_OPERATION] No waiting animation is in progress at the specified position.");
419 SysTryReturnResult(NID_UI_CTRL,
420 (animationPos >= HEADER_ANIMATION_POSITION_TITLE && animationPos <= HEADER_ANIMATION_POSITION_BUTTON_RIGHT),
421 E_INVALID_ARG, "[E_INVALID_ARG] The animationPos is invalid");
423 ToolbarAnimationPosition toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
425 if (animationPos == HEADER_ANIMATION_POSITION_TITLE)
427 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
429 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_LEFT)
431 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_LEFT;
433 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_RIGHT)
435 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_RIGHT;
438 return GetCore().PauseWaitingAnimation(toolbarAnimPos);
442 _HeaderImpl::GetWaitingAnimationStatus(HeaderAnimationPosition animationPos) const
444 ToolbarAnimationPosition toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
446 if (HEADER_ANIMATION_POSITION_TITLE == animationPos)
448 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
450 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_LEFT)
452 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_LEFT;
454 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_RIGHT)
456 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_RIGHT;
459 return GetCore().GetWaitingAnimationStatus(toolbarAnimPos);
463 _HeaderImpl::RemoveAllButtons(void)
465 return GetCore().RemoveAllButtons();
469 _HeaderImpl::RemoveAllItems(void)
471 return GetCore().RemoveAllItems();
475 _HeaderImpl::RemoveItemAt(int itemIndex)
477 int count = GetItemCount();
479 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex <= count), E_OUT_OF_RANGE,
480 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
483 return GetCore().RemoveItemAt(itemIndex);
487 _HeaderImpl::RemoveButtonAt(ButtonPosition position)
489 if (BUTTON_POSITION_LEFT == position)
491 return GetCore().RemoveButtonAt(LEFT_BUTTON);
493 else if (BUTTON_POSITION_RIGHT == position)
495 return GetCore().RemoveButtonAt(RIGHT_BUTTON);
502 _HeaderImpl::SetBackgroundBitmap(const Bitmap* pBitmap)
504 return GetCore().SetBackgroundBitmap(*pBitmap);
508 _HeaderImpl::SetButton(ButtonPosition position, const ButtonItem& button)
510 SysTryReturnResult(NID_UI_CTRL, (!(__style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE)), E_INVALID_OPERATION,
511 "[E_INVALID_OPERATION] This operation is not supported.");
513 SysTryReturnResult(NID_UI_CTRL, (button.GetActionId() >= HEADER_ACTION_ID_MIN && button.GetActionId() <= HEADER_ACTION_ID_MAX),
514 E_INVALID_ARG, "[E_INVALID_ARG] The actionId is invalid.");
516 int count = GetItemCount();
518 SysTryReturnResult(NID_UI_CTRL, (count <= HEADER_MAX_ITEM_COUNT_WITH_BUTTON), E_SYSTEM,
519 "[E_SYSTEM] If the item count is larger then 4, no button can be set.");
521 SysTryReturnResult(NID_UI_CTRL, (position == BUTTON_POSITION_LEFT || position == BUTTON_POSITION_RIGHT), E_INVALID_ARG,
522 "[E_INVALID_ARG] The position is invalid.");
524 _Button* pButton = ConvertButtonItem(button);
526 if (position == BUTTON_POSITION_LEFT)
528 return GetCore().SetButton(LEFT_BUTTON, pButton);
530 else if (position == BUTTON_POSITION_RIGHT)
532 return GetCore().SetButton(RIGHT_BUTTON, pButton);
539 _HeaderImpl::SetButtonColor(ButtonItemStatus status, const Color& color)
541 _ButtonStatus tempStatus = ConvertButtonStatus(status);
543 return GetCore().SetButtonColor(tempStatus, color);
547 _HeaderImpl::SetButtonEnabled(ButtonPosition position, bool enable)
549 bool isButtonSet = IsButtonSet(position);
551 SysTryReturnResult(NID_UI_CTRL, isButtonSet, E_INVALID_OPERATION,
552 "[E_INVALID_OPERATION] No button item is set at the specified position.");
554 if (position == BUTTON_POSITION_LEFT)
556 GetCore().SetButtonEnabled(LEFT_BUTTON, enable);
558 else if (position == BUTTON_POSITION_RIGHT)
560 GetCore().SetButtonEnabled(RIGHT_BUTTON, enable);
567 _HeaderImpl::SetButtonTextColor(ButtonItemStatus status, const Color& color)
569 _ButtonStatus tempStatus = ConvertButtonStatus(status);
571 return GetCore().SetButtonTextColor(tempStatus, color);
575 _HeaderImpl::SetButtonBadgeIcon(ButtonPosition position, const Bitmap* pBadgeIcon)
577 SysTryReturnResult(NID_UI_CTRL, (position == BUTTON_POSITION_LEFT || position == BUTTON_POSITION_RIGHT), E_SYSTEM,
578 "[E_SYSTEM] The position is invalid.");
580 bool isButtonSet = IsButtonSet(position);
582 SysTryReturnResult(NID_UI_CTRL, isButtonSet, E_INVALID_STATE,
583 "[E_INVALID_STATE] No button item is set at the specified position.");
585 if (position == BUTTON_POSITION_LEFT)
587 return GetCore().SetButtonBadgeIcon(LEFT_BUTTON, pBadgeIcon);
591 return GetCore().SetButtonBadgeIcon(RIGHT_BUTTON, pBadgeIcon);
596 _HeaderImpl::SetButtonNumberedBadgeIcon(ButtonPosition position, int number)
598 SysTryReturnResult(NID_UI_CTRL, (position == BUTTON_POSITION_LEFT || position == BUTTON_POSITION_RIGHT), E_SYSTEM,
599 "[E_SYSTEM] The position is invalid.");
601 bool isButtonSet = IsButtonSet(position);
603 SysTryReturnResult(NID_UI_CTRL, isButtonSet, E_INVALID_STATE,
604 "[E_INVALID_STATE] No button item is set at the specified position.");
606 SysTryReturnResult(NID_UI_CTRL, (0 <= number && number <= HEADER_NUMBERD_BADGE_ICON_NUMBER_MAX), E_INVALID_ARG,
607 "[E_INVALID_ARG] The number is invalid.");
609 if (position == BUTTON_POSITION_LEFT)
611 return GetCore().SetButtonNumberedBadgeIcon(LEFT_BUTTON, number);
615 return GetCore().SetButtonNumberedBadgeIcon(RIGHT_BUTTON, number);
620 _HeaderImpl::SetItemAt(int itemIndex, const HeaderItem& item)
622 SysTryReturnResult(NID_UI_CTRL, (item.GetActionId() != -1), E_INVALID_ARG, "[E_INVALID_ARG] The HeaderItem isn't constructed.");
624 if (item.GetActionId() < HEADER_ACTION_ID_MIN || item.GetActionId() > HEADER_ACTION_ID_MAX)
626 SysLogException(NID_UI_CTRL, E_INVALID_ARG, "[E_INVALID_ARG] The actionId is invalid.");
627 return E_INVALID_ARG;
630 int count = GetItemCount();
632 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex <= count && __style != HEADER_STYLE_TITLE), E_OUT_OF_RANGE,
633 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
635 _Button* pButton = ConvertHeaderItem(item);
637 if (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
638 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE)
640 pButton->SetButtonStyle(_BUTTON_STYLE_SEGMENT);
643 return GetCore().SetItemAt(itemIndex, pButton);
647 _HeaderImpl::SetItemBadgeIcon(int itemIndex, const Bitmap* pBadgeIcon)
649 SysTryReturnResult(NID_UI_CTRL, __style != HEADER_STYLE_TITLE,
650 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to set the badge icon because the current style does not support it.");
652 int count = GetItemCount();
654 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
655 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
657 return GetCore().SetItemBadgeIcon(itemIndex, pBadgeIcon);
661 _HeaderImpl::SetItemNumberedBadgeIcon(int itemIndex, int number)
663 SysTryReturnResult(NID_UI_CTRL, __style != HEADER_STYLE_TITLE,
664 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to set the badge icon because the current style does not support it.");
666 SysTryReturnResult(NID_UI_CTRL, (0 <= number && number <= HEADER_NUMBERD_BADGE_ICON_NUMBER_MAX), E_INVALID_ARG,
667 "[E_INVALID_ARG] The number is invalid.");
669 int count = GetItemCount();
671 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
672 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
674 return GetCore().SetItemNumberedBadgeIcon(itemIndex, number);
678 _HeaderImpl::SetItemColor(HeaderItemStatus status, const Color& color)
680 _ButtonStatus tempStatus = ConvertButtonStatus(status);
682 return GetCore().SetItemColor(tempStatus, color);
686 _HeaderImpl::SetItemEnabled(int itemIndex, bool enable)
688 int count = GetItemCount();
690 SysTryReturnResult(NID_UI_CTRL, (count != 0), E_SYSTEM, "[E_SYSTEM] No item to be enabled exists.")
692 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
693 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
695 // Selected item cannot be disabled.
696 int selectedItemIndex = GetSelectedItemIndex();
698 if (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE)
700 if ((selectedItemIndex == itemIndex && enable == false) || (selectedItemIndex == -1 && itemIndex == 0 && enable == false))
702 SysLogException(NID_UI_CTRL, E_INVALID_OPERATION, "[E_INVALID_OPERATION] The Selected item cannot be disabled.");
703 return E_INVALID_OPERATION;
707 return GetCore().SetItemEnabled(itemIndex, enable);
711 _HeaderImpl::SetItemTextColor(HeaderItemStatus status, const Color& color)
713 _ButtonStatus tempStatus = ConvertButtonStatus(status);
715 return GetCore().SetItemTextColor(tempStatus, color);
719 _HeaderImpl::SetItemSelected(int itemIndex)
721 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
722 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE),
723 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to select the item because the current style does not support it.");
725 int count = GetItemCount();
727 SysTryReturnResult(NID_UI_CTRL, (count != 0 && itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
728 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
730 // Disabled items can not be selected.
731 HeaderItemStatus status;
733 result r = GetItemStatus(itemIndex, status);
735 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[E_INVALID_STATE] Failed to get item status.");
737 SysTryReturnResult(NID_UI_CTRL, (status != HEADER_ITEM_STATUS_DISABLED), E_INVALID_OPERATION,
738 "[E_INVALID_OPERATION] The disabled item can not be selected.");
740 //__calledBySetItemSelected = true;
742 return GetCore().SetItemSelected(itemIndex);
746 _HeaderImpl::SetColor(const Color& color)
748 return GetCore().SetColor(color);
752 _HeaderImpl::SetStyle(HeaderStyle style)
759 return GetCore().SetStyle(ConvertHeaderStyle(__style));
763 _HeaderImpl::SetTitleIcon(const Bitmap* pIcon)
765 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
766 || __style == HEADER_STYLE_TAB_WITH_TITLE),
767 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to set the title icon because the current style does not support it.");
769 return GetCore().SetTitleIcon(*pIcon);
773 _HeaderImpl::SetTitleText(const String& text)
775 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
776 || __style == HEADER_STYLE_TAB_WITH_TITLE),
777 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to set the title icon because the current style does not support it.");
779 return GetCore().SetTitleText(text);
783 _HeaderImpl::SetTitleTextColor(const Color& color)
785 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
786 || __style == HEADER_STYLE_TAB_WITH_TITLE),
787 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to set the title icon because the current style does not support it.");
789 return GetCore().SetTitleTextColor(color);
793 _HeaderImpl::SetTransparent(bool transparent)
795 return GetCore().SetTransparent(transparent);
799 _HeaderImpl::SetDescriptionText(const String& text)
801 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE), E_UNSUPPORTED_OPERATION,
802 "[E_UNSUPPORTED_OPERATION] Unable to set the description text icon because the current style does not support it.");
804 return GetCore().SetDescriptionText(text);
808 _HeaderImpl::SetDescriptionTextColor(const Color& color)
810 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE), E_UNSUPPORTED_OPERATION,
811 "[E_UNSUPPORTED_OPERATION] Unable to set the description text icon because the current style does not support it.");
813 return GetCore().SetDescriptionTextColor(color);
817 _HeaderImpl::IsTabEditModeEnabled(void) const
819 return GetCore().IsTabEditModeEnabled();
823 _HeaderImpl::SetTabEditModeEnabled(bool enable)
825 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE), E_UNSUPPORTED_OPERATION,
826 "[E_UNSUPPORTED_OPERATION] This operation is only for HEADER_STYLE_TAB or HEADER_STYLE_TAB_WITH_TITLE");
828 return GetCore().SetTabEditModeEnabled(enable);
832 _HeaderImpl::SetBackButton(void)
834 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_BUTTON), E_UNSUPPORTED_OPERATION,
835 "[E_UNSUPPORTED_OPERATION] The current Header style does not support the operation.");
837 _Button* pButton = _Button::CreateButtonN();
839 float buttonHeight = 0.0f;
840 float buttonWidth = 0.0f;
841 float iconSize = 0.0f;
843 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_HEIGHT, GetCore().GetOrientation(), buttonHeight);
844 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_WIDTH, GetCore().GetOrientation(), buttonWidth);
845 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize);
847 pButton->SetBounds(FloatRectangle(0.0f, 0.0f, buttonWidth, buttonHeight));
849 Bitmap* pBackgroundNormalBitmap = null;
850 Bitmap* pBackgroundDisabledBitmap = null;
851 Bitmap* pBackgroundPressedBitmap = null;
852 Bitmap* pBackgroundHighlightedBitmap = null;
854 Bitmap* pColorReplacedBitmap = null;
856 Bitmap* pBackIconNormalBitmap = null;
857 Bitmap* pBackIconDisabledBitmap = null;
858 Bitmap* pBackIconPressedBitmap = null;
859 Bitmap* pBackIconHighlightedBitmap = null;
861 Bitmap* pBackIconNormalEffectBitmap = null;
862 Bitmap* pBackIconDisabledEffectBitmap = null;
863 Bitmap* pBackIconPressedEffectBitmap = null;
864 Bitmap* pBackIconHighlightedEffectBitmap = null;
866 GET_BITMAP_CONFIG_N(FOOTER::BUTTON_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pBackgroundNormalBitmap);
867 GET_BITMAP_CONFIG_N(FOOTER::BUTTON_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pBackgroundDisabledBitmap);
868 GET_BITMAP_CONFIG_N(FOOTER::BUTTON_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pBackgroundPressedBitmap);
869 GET_BITMAP_CONFIG_N(FOOTER::BUTTON_BG_HIGHLIGHTED, BITMAP_PIXEL_FORMAT_ARGB8888, pBackgroundHighlightedBitmap);
871 GET_BITMAP_CONFIG_N(FOOTER::BACK_ICON_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pBackIconNormalBitmap);
872 GET_BITMAP_CONFIG_N(FOOTER::BACK_ICON_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pBackIconDisabledBitmap);
873 GET_BITMAP_CONFIG_N(FOOTER::BACK_ICON_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pBackIconPressedBitmap);
874 GET_BITMAP_CONFIG_N(FOOTER::BACK_ICON_HIGHLIGHTED, BITMAP_PIXEL_FORMAT_ARGB8888, pBackIconHighlightedBitmap);
876 bool customTheme = false;
878 customTheme = IS_CUSTOM_BITMAP(FOOTER::BACK_ICON_NORMAL);
879 if (customTheme == false)
881 GET_BITMAP_CONFIG_N(FOOTER::BACK_ICON_EFFECT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pBackIconNormalEffectBitmap);
884 customTheme = IS_CUSTOM_BITMAP(FOOTER::BACK_ICON_DISABLED);
885 if (customTheme == false)
887 GET_BITMAP_CONFIG_N(FOOTER::BACK_ICON_EFFECT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pBackIconDisabledEffectBitmap);
890 customTheme = IS_CUSTOM_BITMAP(FOOTER::BACK_ICON_PRESSED);
891 if (customTheme == false)
893 GET_BITMAP_CONFIG_N(FOOTER::BACK_ICON_EFFECT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pBackIconPressedEffectBitmap);
896 customTheme = IS_CUSTOM_BITMAP(FOOTER::BACK_ICON_HIGHLIGHTED);
897 if (customTheme == false)
899 GET_BITMAP_CONFIG_N(FOOTER::BACK_ICON_EFFECT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pBackIconHighlightedEffectBitmap);
902 if (pBackgroundNormalBitmap)
904 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA),
905 GetCore().GetButtonColor(_BUTTON_STATUS_NORMAL));
906 pButton->SetBackgroundBitmap(_BUTTON_STATUS_NORMAL, *pColorReplacedBitmap);
908 delete pColorReplacedBitmap;
909 delete pBackgroundNormalBitmap;
912 if (pBackgroundDisabledBitmap)
914 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA),
915 GetCore().GetButtonColor(_BUTTON_STATUS_DISABLED));
916 pButton->SetBackgroundBitmap(_BUTTON_STATUS_DISABLED, *pColorReplacedBitmap);
918 delete pColorReplacedBitmap;
919 delete pBackgroundDisabledBitmap;
922 if (pBackgroundPressedBitmap)
924 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA),
925 GetCore().GetButtonColor(_BUTTON_STATUS_PRESSED));
926 pButton->SetBackgroundBitmap(_BUTTON_STATUS_PRESSED, *pColorReplacedBitmap);
928 delete pColorReplacedBitmap;
929 delete pBackgroundPressedBitmap;
932 if (pBackgroundHighlightedBitmap)
934 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA),
935 GetCore().GetButtonColor(_BUTTON_STATUS_HIGHLIGHTED));
936 pButton->SetBackgroundBitmap(_BUTTON_STATUS_HIGHLIGHTED, *pColorReplacedBitmap);
938 delete pColorReplacedBitmap;
939 delete pBackgroundHighlightedBitmap;
945 Color highlightedColor;
947 GET_COLOR_CONFIG(FOOTER::BACK_ICON_NORMAL, normalColor);
948 GET_COLOR_CONFIG(FOOTER::BACK_ICON_DISABLED, disabledColor);
949 GET_COLOR_CONFIG(FOOTER::BACK_ICON_PRESSED, pressedColor);
950 GET_COLOR_CONFIG(FOOTER::BACK_ICON_HIGHLIGHTED, highlightedColor);
952 if (pBackIconNormalBitmap)
954 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackIconNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), normalColor);
956 if (pColorReplacedBitmap)
958 pColorReplacedBitmap->Scale(FloatDimension(iconSize, iconSize));
959 pButton->SetBitmap(_BUTTON_STATUS_NORMAL, FloatPoint(0.0f, 0.0f), *pColorReplacedBitmap);
961 delete pColorReplacedBitmap;
964 delete pBackIconNormalBitmap;
967 if (pBackIconDisabledBitmap)
969 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackIconDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), disabledColor);
971 if (pColorReplacedBitmap)
973 pColorReplacedBitmap->Scale(FloatDimension(iconSize, iconSize));
974 pButton->SetBitmap(_BUTTON_STATUS_DISABLED, FloatPoint(0.0f, 0.0f), *pColorReplacedBitmap);
976 delete pColorReplacedBitmap;
979 delete pBackIconDisabledBitmap;
982 if (pBackIconPressedBitmap)
984 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackIconPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), pressedColor);
986 if (pColorReplacedBitmap)
988 pColorReplacedBitmap->Scale(FloatDimension(iconSize, iconSize));
989 pButton->SetBitmap(_BUTTON_STATUS_PRESSED, FloatPoint(0.0f, 0.0f), *pColorReplacedBitmap);
991 delete pColorReplacedBitmap;
994 delete pBackIconPressedBitmap;
997 if (pBackIconHighlightedBitmap)
999 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackIconHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), highlightedColor);
1001 if (pColorReplacedBitmap)
1003 pColorReplacedBitmap->Scale(FloatDimension(iconSize, iconSize));
1004 pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED, FloatPoint(0.0f, 0.0f), *pColorReplacedBitmap);
1006 delete pColorReplacedBitmap;
1009 delete pBackIconHighlightedBitmap;
1012 if (pBackIconNormalEffectBitmap)
1014 pButton->SetEffectBitmap(_BUTTON_STATUS_NORMAL, FloatPoint(0.0f, 0.0f), *pBackIconNormalEffectBitmap);
1015 delete pBackIconNormalEffectBitmap;
1017 if (pBackIconDisabledEffectBitmap)
1019 pButton->SetEffectBitmap(_BUTTON_STATUS_DISABLED, FloatPoint(0.0f, 0.0f), *pBackIconDisabledEffectBitmap);
1020 delete pBackIconDisabledEffectBitmap;
1022 if (pBackIconPressedEffectBitmap)
1024 pButton->SetEffectBitmap(_BUTTON_STATUS_PRESSED, FloatPoint(0.0f, 0.0f), *pBackIconPressedEffectBitmap);
1025 delete pBackIconPressedEffectBitmap;
1027 if (pBackIconHighlightedEffectBitmap)
1029 pButton->SetEffectBitmap(_BUTTON_STATUS_HIGHLIGHTED, FloatPoint(0.0f, 0.0f), *pBackIconHighlightedEffectBitmap);
1030 delete pBackIconHighlightedEffectBitmap;
1033 return GetCore().SetButton(BACK_BUTTON, pButton);
1037 _HeaderImpl::IsBackButtonSet(void) const
1039 return GetCore().IsButtonSet(BACK_BUTTON);
1043 _HeaderImpl::RemoveBackButton(void)
1045 GetCore().RemoveButtonAt(BACK_BUTTON);
1051 _HeaderImpl::SetBackButtonEnabled(bool enable)
1053 return GetCore().SetButtonEnabled(BACK_BUTTON, enable);
1057 _HeaderImpl::GetBackButtonStatus(void) const
1059 SysTryReturn(NID_UI_CTRL, (IsBackButtonSet() == true), BUTTON_ITEM_STATUS_NORMAL, E_INVALID_OPERATION,
1060 "[E_INVALID_OPERATION] A Back button doesn't exist");
1062 _ButtonStatus buttonStatus;
1064 buttonStatus = GetCore().GetButtonStatus(BACK_BUTTON);
1066 return ConvertButtonItemStatus(buttonStatus);
1070 _HeaderImpl::GetButtonBounds(ButtonPosition position) const
1072 bool isButtonSet = IsButtonSet(position);
1074 SysTryReturn(NID_UI_CTRL, isButtonSet, Rectangle(-1, -1, -1, -1), E_INVALID_OPERATION, "[E_INVALID_OPERATION] No button item is set at the specified position.");
1078 if (position == BUTTON_POSITION_LEFT)
1080 rect = GetCore().GetButtonBounds(LEFT_BUTTON);
1082 else if (position == BUTTON_POSITION_RIGHT)
1084 rect = GetCore().GetButtonBounds(RIGHT_BUTTON);
1091 _HeaderImpl::GetButtonBoundsF(ButtonPosition position) const
1093 bool isButtonSet = IsButtonSet(position);
1095 SysTryReturn(NID_UI_CTRL, isButtonSet, FloatRectangle(-1.0f, -1.0f, -1.0f, -1.0f),
1096 E_INVALID_OPERATION, "[E_INVALID_OPERATION] No button item is set at the specified position.");
1098 FloatRectangle rect;
1100 if (position == BUTTON_POSITION_LEFT)
1102 rect = GetCore().GetButtonBoundsF(LEFT_BUTTON);
1104 else if (position == BUTTON_POSITION_RIGHT)
1106 rect = GetCore().GetButtonBoundsF(RIGHT_BUTTON);
1113 _HeaderImpl::SetTitleBadgeIcon(const Bitmap* pBadgeIcon)
1115 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
1116 || __style == HEADER_STYLE_TAB_WITH_TITLE),
1117 E_INVALID_OPERATION, "[E_INVALID_OPERATION] Unable to set the title badge icon because the current style does not support it.");
1119 return GetCore().SetTitleBadgeIcon(pBadgeIcon);
1123 _HeaderImpl::SetTitleNumberedBadgeIcon(int number)
1125 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
1126 || __style == HEADER_STYLE_TAB_WITH_TITLE),
1127 E_INVALID_OPERATION, "[E_INVALID_OPERATION] Unable to set the title badge icon because the current style does not support it.");
1129 SysTryReturnResult(NID_UI_CTRL, (0 <= number && number <= HEADER_NUMBERD_BADGE_ICON_NUMBER_MAX), E_INVALID_ARG,
1130 "[E_INVALID_ARG] The number is invalid.");
1132 return GetCore().SetTitleNumberedBadgeIcon(number);
1136 _HeaderImpl::AddActionEventListener(IActionEventListener& listener)
1138 if (__pPublicActionEvent == null)
1140 __pPublicActionEvent = _PublicActionEvent::CreateInstanceN(GetPublic());
1142 if (IsFailed(GetLastResult()))
1144 SysLogException(NID_UI_CTRL, E_SYSTEM, "[E_SYSTEM] System error occurred.");
1145 delete __pPublicActionEvent;
1151 __pPublicActionEvent->AddListener(listener);
1153 GetCore().AddActionEventListener(*this);
1159 _HeaderImpl::RemoveActionEventListener(IActionEventListener& listener)
1161 SysTryReturnVoidResult(NID_UI_CTRL, __pPublicActionEvent, E_INVALID_STATE, "[E_INVALID_STATE] This instance isn't constructed.");
1163 // Todo : check fail case of RemoveListener
1164 __pPublicActionEvent->RemoveListener(listener);
1166 GetCore().RemoveActionEventListener(*this);
1172 _HeaderImpl::OnActionPerformed(const _Control& source, int actionId)
1174 _Button* pButton = dynamic_cast<_Button*>(const_cast<_Control*>(&source));
1176 if (pButton == GetCore().GetButton(BACK_BUTTON))
1181 if (GetCore().IsInitialDraw() == true && GetCore().GetSelectedItemIndex() == 0)
1186 if (__pPublicActionEvent != null)
1188 __pPublicActionEvent->Fire(*_PublicActionEvent::CreateActionEventArgN(actionId));
1195 _HeaderImpl::CheckItemValidate(const HeaderItem& item)
1197 result r = E_SUCCESS;
1199 SysTryReturnResult(NID_UI_CTRL, (item.GetActionId() != -1), E_INVALID_ARG, "[E_INVALID_ARG] The HeaderItem isn't constructed.");
1201 int count = GetItemCount();
1203 if (__style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE)
1205 SysTryReturnResult(NID_UI_CTRL, (count < HEADER_TAB_STYLE_MAX_ITEM_COUNT), E_MAX_EXCEEDED,
1206 "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit.");
1210 SysTryReturnResult(NID_UI_CTRL, (count < HEADER_ITEM_MAX_COUNT), E_MAX_EXCEEDED,
1211 "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit.");
1214 if ((HEADER_STYLE_TITLE_BUTTON == __style) && (HEADER_TITLE_BUTTON_STYLE_MAX_ITEM_COUNT <= count))
1216 SysLogException(NID_UI_CTRL, E_MAX_EXCEEDED, "[E_MAX_EXCEEDED] The number of items exceeded the maximum limit.");
1221 if ((count >= HEADER_MAX_ITEM_COUNT_WITH_BUTTON) &&
1222 (true == IsButtonSet(BUTTON_POSITION_LEFT) || true == IsButtonSet(BUTTON_POSITION_RIGHT)))
1224 SysLogException(NID_UI_CTRL, E_MAX_EXCEEDED, "[E_MAX_EXCEEDED] The number of items with button have exceeded the maximum limit.");
1229 if (item.GetActionId() < HEADER_ACTION_ID_MIN || item.GetActionId() > HEADER_ACTION_ID_MAX)
1231 SysLogException(NID_UI_CTRL, E_INVALID_ARG, "[E_INVALID_ARG] The actionId is invalid.");
1243 _HeaderImpl::ConvertHeaderStyle(HeaderStyle style)
1245 ToolbarStyle viewStyle = TOOLBAR_TITLE;
1247 if (style == HEADER_STYLE_TITLE || style == HEADER_STYLE_TITLE_BUTTON)
1249 viewStyle = TOOLBAR_TITLE;
1251 else if (style == HEADER_STYLE_SEGMENTED)
1253 viewStyle = TOOLBAR_HEADER_SEGMENTED;
1255 else if (style == HEADER_STYLE_SEGMENTED_WITH_TITLE)
1257 viewStyle = TOOLBAR_HEADER_SEGMENTED_WITH_TITLE;
1259 else if (style == HEADER_STYLE_TAB)
1261 viewStyle = TOOLBAR_TAB;
1263 else if (style == HEADER_STYLE_TAB_WITH_TITLE)
1265 viewStyle = TOOLBAR_TAB_WITH_TITLE;
1267 else if (style == HEADER_STYLE_BUTTON)
1269 viewStyle = TOOLBAR_TEXT;
1276 _HeaderImpl::ConvertButtonItem(const ButtonItem& buttonItem)
1278 _Button* pButton = _Button::CreateButtonN();
1280 float buttonItemWidth = 0.0f;
1281 float buttonItemHeight = 0.0f;
1283 if (__style == HEADER_STYLE_BUTTON)
1285 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_WIDTH, GetCore().GetOrientation(), buttonItemWidth);
1286 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_HEIGHT, GetCore().GetOrientation(), buttonItemHeight);
1290 if (buttonItem.GetText() != L"")
1292 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_WIDTH_WITH_TEXT, GetCore().GetOrientation(), buttonItemWidth);
1296 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_WIDTH, GetCore().GetOrientation(), buttonItemWidth);
1299 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_HEIGHT, GetCore().GetOrientation(), buttonItemHeight);
1302 pButton->SetMargin(0.0f, 0.0f, 0.0f, 0.0f);
1303 pButton->SetBounds(FloatRectangle(0.0f, 0.0f, buttonItemWidth, buttonItemHeight));
1305 pButton->SetActionId(buttonItem.GetActionId());
1307 pButton->SetText(buttonItem.GetText());
1309 pButton->SetTextMaxLine(2);
1311 result r = E_SUCCESS;
1313 float fontSize = 0.0f;
1314 float multilineFontSize = 0.0f;
1316 if (__style == HEADER_STYLE_BUTTON)
1318 r = GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
1321 pButton->SetTextSize(fontSize, FONT_STYLE_BOLD);
1324 r = GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_MULTILINE_FONT_SIZE, GetCore().GetOrientation(), multilineFontSize);
1327 pButton->SetMultilineTextSize(multilineFontSize);
1332 r = GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
1335 pButton->SetTextSize(fontSize, FONT_STYLE_BOLD);
1338 r = GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_MULTILINE_FONT_SIZE, GetCore().GetOrientation(), multilineFontSize);
1341 pButton->SetMultilineTextSize(multilineFontSize);
1345 float iconSize = 0.0f;
1347 if (__style == HEADER_STYLE_BUTTON)
1349 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize);
1353 if (__style == HEADER_STYLE_SEGMENTED_WITH_TITLE)
1355 GET_SHAPE_CONFIG(HEADER::TAB_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize);
1359 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize);
1363 Bitmap* pIconBitmap = null;
1364 pIconBitmap = const_cast<Bitmap*>(buttonItem.__pImpl->GetIcon(BUTTON_ITEM_STATUS_NORMAL));
1368 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1370 pButton->SetBitmap(_BUTTON_STATUS_NORMAL, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1371 pButton->SetBitmap(_BUTTON_STATUS_PRESSED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1372 pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1373 pButton->SetBitmap(_BUTTON_STATUS_DISABLED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1376 pIconBitmap = const_cast<Bitmap*>(buttonItem.__pImpl->GetIcon(BUTTON_ITEM_STATUS_PRESSED));
1380 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1382 pButton->SetBitmap(_BUTTON_STATUS_PRESSED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1385 pIconBitmap = const_cast<Bitmap*>(buttonItem.__pImpl->GetIcon(BUTTON_ITEM_STATUS_HIGHLIGHTED));
1389 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1391 pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1394 pIconBitmap = const_cast<Bitmap*>(buttonItem.__pImpl->GetIcon(BUTTON_ITEM_STATUS_DISABLED));
1398 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1400 pButton->SetBitmap(_BUTTON_STATUS_DISABLED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1403 Bitmap* pNormalBackgroundBitmap = null;
1404 Bitmap* pDisabledBackgroundBitmap = null;
1405 Bitmap* pPressedBackgroundBitmap = null;
1406 Bitmap* pHighlightedBackgroundBitmap = null;
1408 Bitmap* pColorReplacedBitmap = null;
1410 GET_BITMAP_CONFIG_N(HEADER::BUTTON_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pNormalBackgroundBitmap);
1411 GET_BITMAP_CONFIG_N(HEADER::BUTTON_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pDisabledBackgroundBitmap);
1412 GET_BITMAP_CONFIG_N(HEADER::BUTTON_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pPressedBackgroundBitmap);
1413 GET_BITMAP_CONFIG_N(HEADER::BUTTON_BG_HIGHLIGHTED, BITMAP_PIXEL_FORMAT_ARGB8888, pHighlightedBackgroundBitmap);
1415 if (pNormalBackgroundBitmap)
1417 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pNormalBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1418 GetCore().GetButtonColor(_BUTTON_STATUS_NORMAL));
1420 if (GetCore().GetButtonColor(_BUTTON_STATUS_NORMAL).GetAlpha() != 0xFF)
1422 pColorReplacedBitmap->SetAlphaConstant(GetCore().GetButtonColor(_BUTTON_STATUS_NORMAL).GetAlpha());
1425 pButton->SetBackgroundBitmap(_BUTTON_STATUS_NORMAL, *pColorReplacedBitmap);
1427 delete pColorReplacedBitmap;
1428 delete pNormalBackgroundBitmap;
1431 if (pDisabledBackgroundBitmap)
1433 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDisabledBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1434 GetCore().GetButtonColor(_BUTTON_STATUS_DISABLED));
1436 if (GetCore().GetButtonColor(_BUTTON_STATUS_DISABLED).GetAlpha() != 0xFF)
1438 pColorReplacedBitmap->SetAlphaConstant(GetCore().GetButtonColor(_BUTTON_STATUS_DISABLED).GetAlpha());
1441 pButton->SetBackgroundBitmap(_BUTTON_STATUS_DISABLED, *pColorReplacedBitmap);
1443 delete pColorReplacedBitmap;
1444 delete pDisabledBackgroundBitmap;
1447 if (pPressedBackgroundBitmap)
1449 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pPressedBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1450 GetCore().GetButtonColor(_BUTTON_STATUS_PRESSED));
1452 if (GetCore().GetButtonColor(_BUTTON_STATUS_PRESSED).GetAlpha() != 0xFF)
1454 pColorReplacedBitmap->SetAlphaConstant(GetCore().GetButtonColor(_BUTTON_STATUS_PRESSED).GetAlpha());
1457 pButton->SetBackgroundBitmap(_BUTTON_STATUS_PRESSED, *pColorReplacedBitmap);
1459 delete pColorReplacedBitmap;
1460 delete pPressedBackgroundBitmap;
1463 if (pHighlightedBackgroundBitmap)
1465 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pHighlightedBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1466 GetCore().GetButtonColor(_BUTTON_STATUS_HIGHLIGHTED));
1468 if (GetCore().GetButtonColor(_BUTTON_STATUS_HIGHLIGHTED).GetAlpha() != 0xFF)
1470 pColorReplacedBitmap->SetAlphaConstant(GetCore().GetButtonColor(_BUTTON_STATUS_HIGHLIGHTED).GetAlpha());
1473 pButton->SetBackgroundBitmap(_BUTTON_STATUS_HIGHLIGHTED, *pColorReplacedBitmap);
1475 delete pColorReplacedBitmap;
1476 delete pHighlightedBackgroundBitmap;
1479 if (buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL) != null)
1481 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_NORMAL,
1482 *buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL));
1484 if (buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED) != null)
1486 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_PRESSED,
1487 *buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED));
1489 if (buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_HIGHLIGHTED) != null)
1491 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_HIGHLIGHTED,
1492 *buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_HIGHLIGHTED));
1494 if (buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_DISABLED) != null)
1496 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_DISABLED,
1497 *buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_DISABLED));
1500 if (buttonItem.__pImpl->__accessibilityHint.GetLength() > 0)
1502 _AccessibilityContainer* pContainer = pButton->GetAccessibilityContainer();
1505 _AccessibilityElement* pElement = pContainer->GetChildElement(L"ButtonText");
1508 pElement->SetHint(buttonItem.__pImpl->__accessibilityHint);
1517 _HeaderImpl::ConvertHeaderItem(const HeaderItem& headerItem)
1519 _Button* pButton = _Button::CreateButtonN();
1521 float minItemLength = 0.0f;
1523 GET_SHAPE_CONFIG(HEADER::ITEM_MINIMUM_WIDTH, GetCore().GetOrientation(), minItemLength);
1525 pButton->SetBounds(FloatRectangle(0.0f, 0.0f, minItemLength, minItemLength));
1527 pButton->SetActionId(headerItem.GetActionId());
1529 pButton->SetText(headerItem.GetText());
1531 pButton->SetTextMaxLine(2);
1533 float fontSize = 0.0f;
1534 result r = E_SUCCESS;
1536 bool customTheme = false;
1538 if (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE || __style == HEADER_STYLE_TITLE_BUTTON)
1540 r = GET_SHAPE_CONFIG(HEADER::SEGMENTED_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
1542 else if (__style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE)
1544 r = GET_SHAPE_CONFIG(HEADER::TAB_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
1546 else // __style == HEADER_STYLE_BUTTON
1548 r = GET_SHAPE_CONFIG(FOOTER::FOOTER_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
1553 pButton->SetTextSize(fontSize, FONT_STYLE_BOLD);
1556 float iconSize = 0.0f;
1558 if (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
1559 || __style == HEADER_STYLE_TAB_WITH_TITLE || __style == HEADER_STYLE_TAB)
1561 if (headerItem.GetText() != L"")
1563 GET_SHAPE_CONFIG(HEADER::TAB_ITEM_ICON_SIZE_WITH_TEXT, GetCore().GetOrientation(), iconSize);
1567 GET_SHAPE_CONFIG(HEADER::TAB_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize);
1570 Bitmap* pSelectedBitmap = null;
1571 Bitmap* pColorReplacedBitmap = null;
1572 Color selectedBitmapColor;
1574 GET_BITMAP_CONFIG_N(HEADER::TAB_ITEM_SELECTED, BITMAP_PIXEL_FORMAT_ARGB8888, pSelectedBitmap);
1575 GET_COLOR_CONFIG(HEADER::SEGMENTED_ITEM_TEXT_SELECTED, selectedBitmapColor);
1577 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), selectedBitmapColor);
1579 if (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE)
1581 if (GetCore().IsTransparent() == true)
1583 customTheme = IS_CUSTOM_BITMAP(HEADER::SEGMENTED_ITEM_TRANSLUCENT_BG_SELECTED);
1587 customTheme = IS_CUSTOM_BITMAP(HEADER::SEGMENTED_ITEM_BG_SELECTED);
1590 else if (__style == HEADER_STYLE_TAB_WITH_TITLE || __style == HEADER_STYLE_TAB)
1592 if (GetCore().IsTransparent() == true)
1594 customTheme = IS_CUSTOM_BITMAP(HEADER::TAB_ITEM_TRANSLUCENT_BG_SELECTED);
1598 customTheme = IS_CUSTOM_BITMAP(HEADER::TAB_ITEM_BG_SELECTED);
1602 if (pColorReplacedBitmap && customTheme == false)
1604 if (__style == HEADER_STYLE_SEGMENTED_WITH_TITLE || __style == HEADER_STYLE_TAB_WITH_TITLE)
1606 pButton->SetToolbarSelectedBitmap(*pColorReplacedBitmap, true);
1610 pButton->SetToolbarSelectedBitmap(*pColorReplacedBitmap, false);
1614 delete pColorReplacedBitmap;
1615 delete pSelectedBitmap;
1617 else // __style == HEADER_STYLE_BUTTON
1619 if (headerItem.GetText() != L"")
1621 GET_SHAPE_CONFIG(FOOTER::FOOTER_ITEM_BUTTON_STYLE_ICON_SIZE_WITH_TEXT, GetCore().GetOrientation(), iconSize);
1625 GET_SHAPE_CONFIG(FOOTER::FOOTER_ITEM_BUTTON_STYLE_ICON_SIZE, GetCore().GetOrientation(), iconSize);
1629 Bitmap* pIconBitmap = null;
1631 pIconBitmap = const_cast<Bitmap*>(headerItem.__pImpl->GetIcon(HEADER_ITEM_STATUS_NORMAL));
1634 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1636 pButton->SetBitmap(_BUTTON_STATUS_NORMAL, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1637 pButton->SetBitmap(_BUTTON_STATUS_PRESSED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1638 pButton->SetBitmap(_BUTTON_STATUS_SELECTED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1639 pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1640 pButton->SetBitmap(_BUTTON_STATUS_DISABLED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1643 pIconBitmap = const_cast<Bitmap*>(headerItem.__pImpl->GetIcon(HEADER_ITEM_STATUS_PRESSED));
1647 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1649 pButton->SetBitmap(_BUTTON_STATUS_PRESSED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1652 pIconBitmap = const_cast<Bitmap*>(headerItem.__pImpl->GetIcon(HEADER_ITEM_STATUS_SELECTED));
1656 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1658 pButton->SetBitmap(_BUTTON_STATUS_SELECTED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1661 pIconBitmap = const_cast<Bitmap*>(headerItem.__pImpl->GetIcon(HEADER_ITEM_STATUS_HIGHLIGHTED));
1665 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1667 pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1670 pIconBitmap = const_cast<Bitmap*>(headerItem.__pImpl->GetIcon(HEADER_ITEM_STATUS_DISABLED));
1674 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1676 pButton->SetBitmap(_BUTTON_STATUS_DISABLED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1679 if (headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_NORMAL) != null)
1681 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_NORMAL,
1682 *headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_NORMAL));
1684 if (headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_PRESSED) != null)
1686 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_PRESSED,
1687 *headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_PRESSED));
1689 if (headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_SELECTED) != null)
1691 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_SELECTED,
1692 *headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_SELECTED));
1694 if (headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_HIGHLIGHTED) != null)
1696 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_HIGHLIGHTED,
1697 *headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_HIGHLIGHTED));
1699 if (headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_DISABLED) != null)
1701 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_DISABLED,
1702 *headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_DISABLED));
1705 if (headerItem.__pImpl->__accessibilityHint.GetLength() > 0)
1707 _AccessibilityContainer* pContainer = pButton->GetAccessibilityContainer();
1710 _AccessibilityElement* pElement = pContainer->GetChildElement(L"ButtonText");
1713 pElement->SetHint(headerItem.__pImpl->__accessibilityHint);
1722 _HeaderImpl::ConvertButtonItemStatus(_ButtonStatus status) const
1726 case _BUTTON_STATUS_NORMAL:
1727 return BUTTON_ITEM_STATUS_NORMAL;
1730 case _BUTTON_STATUS_DISABLED:
1731 return BUTTON_ITEM_STATUS_DISABLED;
1734 case _BUTTON_STATUS_PRESSED:
1735 return BUTTON_ITEM_STATUS_PRESSED;
1738 case _BUTTON_STATUS_HIGHLIGHTED:
1739 return BUTTON_ITEM_STATUS_HIGHLIGHTED;
1743 return BUTTON_ITEM_STATUS_DISABLED;
1749 _HeaderImpl::ConvertHeaderItemStatus(_ButtonStatus status) const
1753 case _BUTTON_STATUS_NORMAL:
1754 return HEADER_ITEM_STATUS_NORMAL;
1757 case _BUTTON_STATUS_DISABLED:
1758 return HEADER_ITEM_STATUS_DISABLED;
1761 case _BUTTON_STATUS_PRESSED:
1762 return HEADER_ITEM_STATUS_PRESSED;
1765 case _BUTTON_STATUS_HIGHLIGHTED:
1766 return HEADER_ITEM_STATUS_HIGHLIGHTED;
1769 case _BUTTON_STATUS_SELECTED:
1770 return HEADER_ITEM_STATUS_SELECTED;
1774 return HEADER_ITEM_STATUS_DISABLED;
1780 _HeaderImpl::ConvertButtonStatus(ButtonItemStatus status) const
1784 case BUTTON_ITEM_STATUS_NORMAL:
1785 return _BUTTON_STATUS_NORMAL;
1788 case BUTTON_ITEM_STATUS_DISABLED:
1789 return _BUTTON_STATUS_DISABLED;
1792 case BUTTON_ITEM_STATUS_PRESSED:
1793 return _BUTTON_STATUS_PRESSED;
1796 case BUTTON_ITEM_STATUS_HIGHLIGHTED:
1797 return _BUTTON_STATUS_HIGHLIGHTED;
1801 return _BUTTON_STATUS_DISABLED;
1807 _HeaderImpl::ConvertButtonStatus(HeaderItemStatus status) const
1811 case HEADER_ITEM_STATUS_NORMAL:
1812 return _BUTTON_STATUS_NORMAL;
1815 case HEADER_ITEM_STATUS_DISABLED:
1816 return _BUTTON_STATUS_DISABLED;
1819 case HEADER_ITEM_STATUS_PRESSED:
1820 return _BUTTON_STATUS_PRESSED;
1823 case HEADER_ITEM_STATUS_HIGHLIGHTED:
1824 return _BUTTON_STATUS_HIGHLIGHTED;
1827 case HEADER_ITEM_STATUS_SELECTED:
1828 return _BUTTON_STATUS_SELECTED;
1832 return _BUTTON_STATUS_DISABLED;
1838 : public _UiBuilderControlMaker
1841 _HeaderMaker(_UiBuilder* uibuilder)
1842 : _UiBuilderControlMaker(uibuilder){};
1843 virtual ~_HeaderMaker(){};
1844 static _UiBuilderControlMaker* GetInstance(_UiBuilder* uibuilder)
1846 _HeaderMaker* pHeaderMaker = new (std::nothrow) _HeaderMaker(uibuilder);
1847 return pHeaderMaker;
1850 virtual Control* Make(_UiBuilderControl* pControl)
1852 Header* pHeader = null;
1853 String elementString;
1855 int numberedBadge = 0;
1859 HeaderStyle hstyle = HEADER_STYLE_TITLE;
1860 Form* pForm = static_cast<Form*>(GetContainer());
1861 pHeader = pForm->GetHeader();
1863 if (null == pHeader)
1868 if (pControl->GetElement(L"headerStyle", elementString))
1870 if (elementString.Equals(L"HEADER_STYLE_TITLE", false))
1872 hstyle = HEADER_STYLE_TITLE;
1874 else if (elementString.Equals(L"HEADER_STYLE_SEGMENTED", false))
1876 hstyle = HEADER_STYLE_SEGMENTED;
1878 else if (elementString.Equals(L"HEADER_STYLE_TITLE_BUTTON", false))
1880 hstyle = HEADER_STYLE_TITLE_BUTTON;
1882 else if (elementString.Equals(L"HEADER_STYLE_SEGMENTED_WITH_TITLE", false))
1884 hstyle = HEADER_STYLE_SEGMENTED_WITH_TITLE;
1886 else if (elementString.Equals(L"HEADER_STYLE_TAB", false))
1888 hstyle = HEADER_STYLE_TAB;
1890 else if (elementString.Equals(L"HEADER_STYLE_TAB_WITH_TITLE", false))
1892 hstyle = HEADER_STYLE_TAB_WITH_TITLE;
1894 else if (elementString.Equals(L"HEADER_STYLE_BUTTON", false))
1896 hstyle = HEADER_STYLE_BUTTON;
1899 pHeader->SetStyle(hstyle);
1902 if (pControl->GetElement(L"backgroundBitmapPath", elementString) || pControl->GetElement(L"BGBitmapPath", elementString))
1904 Bitmap* pBitmap = null;
1905 pBitmap = LoadBitmapN(elementString);
1906 pHeader->SetBackgroundBitmap(pBitmap);
1910 if (pControl->GetElement(L"colorOpacity", elementString))
1912 Base::Integer::Parse(elementString, opacity);
1915 if (pControl->GetElement(L"color", elementString))
1917 ConvertStringToColor32(elementString, opacity, color);
1918 pHeader->SetColor(color);
1921 if (HEADER_STYLE_TITLE == hstyle || HEADER_STYLE_SEGMENTED_WITH_TITLE == hstyle || HEADER_STYLE_TAB_WITH_TITLE == hstyle)
1924 if (pControl->GetElement(L"titleText", elementString))
1926 pHeader->SetTitleText(elementString);
1929 if (pControl->GetElement(L"titleTextColor", elementString))
1931 ConvertStringToColor(elementString, color);
1932 result r = pHeader->SetTitleTextColor(color);
1933 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set title text color");
1936 if (pControl->GetElement(L"titleIconPath", elementString))
1938 Bitmap* pBitmap = null;
1939 pBitmap = LoadBitmapN(elementString);
1940 result r = pHeader->SetTitleIcon(pBitmap);
1941 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set an icon");
1944 if (pControl->GetElement(L"titleBadgeIconPath", elementString))
1946 Bitmap* pBitmap = null;
1947 pBitmap = LoadBitmapN(elementString);
1948 result r = pHeader->SetTitleBadgeIcon(pBitmap);
1949 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set an icon");
1952 if (pControl->GetElement(L"titleNumberedBadgeIcon", elementString))
1954 Base::Integer::Parse(elementString, numberedBadge);
1955 result r = pHeader->SetTitleNumberedBadgeIcon(numberedBadge);
1956 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set a numbered icon");
1960 if (pControl->GetElement(L"descriptionText", elementString))
1962 result r = pHeader->SetDescriptionText(elementString);
1963 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set description text");
1966 if (pControl->GetElement(L"descriptionTextColor", elementString))
1968 ConvertStringToColor(elementString, color);
1969 result r = pHeader->SetDescriptionTextColor(color);
1970 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set description text color");
1974 if (pControl->GetElement(L"accessibilityHint", elementString))
1976 AccessibilityContainer* pContainer = pHeader->GetAccessibilityContainer();
1979 AccessibilityElement* pElement = pContainer->GetElement(L"HeaderTitleText");
1982 pElement->SetHint(elementString);
1988 if (pControl->GetElement(L"normalButtonColorOpacity", elementString))
1990 Base::Integer::Parse(elementString, opacity);
1993 if (pControl->GetElement(L"normalButtonColor", elementString))
1995 ConvertStringToColor32(elementString, opacity, color);
1996 pHeader->SetButtonColor(BUTTON_ITEM_STATUS_NORMAL, color);
1999 if (pControl->GetElement(L"normalButtonTextColor", elementString))
2001 ConvertStringToColor(elementString, color);
2002 pHeader->SetButtonTextColor(BUTTON_ITEM_STATUS_NORMAL, color);
2006 if (pControl->GetElement(L"pressedButtonColorOpacity", elementString))
2008 Base::Integer::Parse(elementString, opacity);
2011 if (pControl->GetElement(L"pressedButtonColor", elementString))
2013 ConvertStringToColor32(elementString, opacity, color);
2014 pHeader->SetButtonColor(BUTTON_ITEM_STATUS_PRESSED, color);
2017 if (pControl->GetElement(L"pressedButtonTextColor", elementString))
2019 ConvertStringToColor(elementString, color);
2020 pHeader->SetButtonTextColor(BUTTON_ITEM_STATUS_PRESSED, color);
2023 // highlighted button
2024 if (pControl->GetElement(L"highlightedButtonColorOpacity", elementString))
2026 Base::Integer::Parse(elementString, opacity);
2029 if (pControl->GetElement(L"highlightedButtonColor", elementString))
2031 ConvertStringToColor32(elementString, opacity, color);
2032 pHeader->SetButtonColor(BUTTON_ITEM_STATUS_HIGHLIGHTED, color);
2035 if (pControl->GetElement(L"highlightedButtonTextColor", elementString))
2037 ConvertStringToColor(elementString, color);
2038 pHeader->SetButtonTextColor(BUTTON_ITEM_STATUS_HIGHLIGHTED, color);
2042 if (pControl->GetElement(L"disabledButtonColorOpacity", elementString))
2044 Base::Integer::Parse(elementString, opacity);
2047 if (pControl->GetElement(L"disabledButtonColor", elementString))
2049 ConvertStringToColor32(elementString, opacity, color);
2050 pHeader->SetButtonColor(BUTTON_ITEM_STATUS_DISABLED, color);
2053 if (pControl->GetElement(L"disabledButtonTextColor", elementString))
2055 ConvertStringToColor(elementString, color);
2056 pHeader->SetButtonTextColor(BUTTON_ITEM_STATUS_DISABLED, color);
2059 if (HEADER_STYLE_TITLE != hstyle)
2062 if (pControl->GetElement(L"normalItemColorOpacity", elementString))
2064 Base::Integer::Parse(elementString, opacity);
2067 if (pControl->GetElement(L"normalItemColor", elementString))
2069 ConvertStringToColor32(elementString, opacity, color);
2070 pHeader->SetItemColor(HEADER_ITEM_STATUS_NORMAL, color);
2073 if (pControl->GetElement(L"normalItemTextColor", elementString))
2075 ConvertStringToColor(elementString, color);
2076 pHeader->SetItemTextColor(HEADER_ITEM_STATUS_NORMAL, color);
2080 if (pControl->GetElement(L"pressedItemColorOpacity", elementString))
2082 Base::Integer::Parse(elementString, opacity);
2085 if (pControl->GetElement(L"pressedItemColor", elementString))
2087 ConvertStringToColor32(elementString, opacity, color);
2088 pHeader->SetItemColor(HEADER_ITEM_STATUS_PRESSED, color);
2091 if (pControl->GetElement(L"pressedItemTextColor", elementString))
2093 ConvertStringToColor(elementString, color);
2094 pHeader->SetItemTextColor(HEADER_ITEM_STATUS_PRESSED, color);
2097 if (hstyle == HEADER_STYLE_SEGMENTED || hstyle == HEADER_STYLE_SEGMENTED_WITH_TITLE
2098 || hstyle == HEADER_STYLE_TAB || hstyle == HEADER_STYLE_TAB_WITH_TITLE)
2101 if (pControl->GetElement(L"selectedItemColorOpacity", elementString))
2103 Base::Integer::Parse(elementString, opacity);
2106 if (pControl->GetElement(L"selectedItemColor", elementString))
2108 ConvertStringToColor32(elementString, opacity, color);
2109 pHeader->SetItemColor(HEADER_ITEM_STATUS_SELECTED, color);
2112 if (pControl->GetElement(L"selectedItemTextColor", elementString))
2114 ConvertStringToColor(elementString, color);
2115 pHeader->SetItemTextColor(HEADER_ITEM_STATUS_SELECTED, color);
2120 if (pControl->GetElement(L"highlightedItemColorOpacity", elementString))
2122 Base::Integer::Parse(elementString, opacity);
2125 if (pControl->GetElement(L"highlightedItemColor", elementString))
2127 ConvertStringToColor32(elementString, opacity, color);
2128 pHeader->SetItemColor(HEADER_ITEM_STATUS_HIGHLIGHTED, color);
2131 if (pControl->GetElement(L"highlightedItemTextColor", elementString))
2133 ConvertStringToColor(elementString, color);
2134 pHeader->SetItemTextColor(HEADER_ITEM_STATUS_HIGHLIGHTED, color);
2138 if (pControl->GetElement(L"disabledItemColorOpacity", elementString))
2140 Base::Integer::Parse(elementString, opacity);
2143 if (pControl->GetElement(L"disabledItemColor", elementString))
2145 ConvertStringToColor32(elementString, opacity, color);
2146 pHeader->SetItemColor(HEADER_ITEM_STATUS_DISABLED, color);
2149 if (pControl->GetElement(L"disabledItemTextColor", elementString))
2151 ConvertStringToColor(elementString, color);
2152 pHeader->SetItemTextColor(HEADER_ITEM_STATUS_DISABLED, color);
2156 if ((HEADER_STYLE_BUTTON == hstyle) && (pControl->GetElement(L"showBackButton", elementString)))
2158 if (elementString.Equals(L"true", false))
2160 pHeader->SetBackButton();
2164 int itemCnt = pControl->GetItemCount();
2165 ButtonItemStyle buttonItemStyle = BUTTON_ITEM_STYLE_TEXT;
2166 ButtonPosition buttonPosition = BUTTON_POSITION_LEFT;
2167 String headerItemString;
2169 for (int i = 0; i < itemCnt; i++)
2171 headerItemString = pControl->GetItemName(i);
2172 if ((HEADER_STYLE_TITLE != hstyle) && (headerItemString.Equals(L"headerItem", false)))
2174 HeaderItem headerItem;
2177 if (pControl->GetItemElement(i, "actionId", headerItemString))
2180 Base::Integer::Parse(headerItemString, actionId);
2181 headerItem.Construct(actionId);
2185 if (pControl->GetItemElement(i, "text", headerItemString))
2187 headerItem.SetText(headerItemString);
2190 if (HEADER_STYLE_TITLE_BUTTON == hstyle)
2192 // headeritem icon bitmap setting
2194 if (pControl->GetItemElement(i, "normalIconPath", headerItemString))
2196 Bitmap* pBitmap = null;
2197 pBitmap = LoadBitmapN(headerItemString);
2198 headerItem.SetIcon(HEADER_ITEM_STATUS_NORMAL, pBitmap);
2202 if (pControl->GetItemElement(i, "pressedIconPath", headerItemString))
2204 Bitmap* pBitmap = null;
2205 pBitmap = LoadBitmapN(headerItemString);
2206 headerItem.SetIcon(HEADER_ITEM_STATUS_PRESSED, pBitmap);
2210 if (pControl->GetItemElement(i, "selectedIconPath", headerItemString))
2212 Bitmap* pBitmap = null;
2213 pBitmap = LoadBitmapN(headerItemString);
2214 headerItem.SetIcon(HEADER_ITEM_STATUS_SELECTED, pBitmap);
2218 if (pControl->GetItemElement(i, "highlightedIconPath", headerItemString))
2220 Bitmap* pBitmap = null;
2221 pBitmap = LoadBitmapN(headerItemString);
2222 headerItem.SetIcon(HEADER_ITEM_STATUS_HIGHLIGHTED, pBitmap);
2226 if (pControl->GetItemElement(i, "disabledIconPath", headerItemString))
2228 Bitmap* pBitmap = null;
2229 pBitmap = LoadBitmapN(headerItemString);
2230 headerItem.SetIcon(HEADER_ITEM_STATUS_DISABLED, pBitmap);
2234 // headeritem background bitmap path setting
2236 if (pControl->GetItemElement(i, "normalBGBitmapPath", headerItemString))
2238 Bitmap* pBitmap = null;
2239 pBitmap = LoadBitmapN(headerItemString);
2240 headerItem.SetBackgroundBitmap(HEADER_ITEM_STATUS_NORMAL, pBitmap);
2243 // pressed bg bitmap
2244 if (pControl->GetItemElement(i, "pressedBGBitmapPath", headerItemString))
2246 Bitmap* pBitmap = null;
2247 pBitmap = LoadBitmapN(headerItemString);
2248 headerItem.SetBackgroundBitmap(HEADER_ITEM_STATUS_PRESSED, pBitmap);
2251 // selected bg bitmap
2252 if (pControl->GetItemElement(i, "selectedBGBitmapPath", headerItemString))
2254 Bitmap* pBitmap = null;
2255 pBitmap = LoadBitmapN(headerItemString);
2256 headerItem.SetBackgroundBitmap(HEADER_ITEM_STATUS_SELECTED, pBitmap);
2259 // highlighted bg bitmap
2260 if (pControl->GetItemElement(i, "highlightedBGBitmapPath", headerItemString))
2262 Bitmap* pBitmap = null;
2263 pBitmap = LoadBitmapN(headerItemString);
2264 headerItem.SetBackgroundBitmap(HEADER_ITEM_STATUS_HIGHLIGHTED, pBitmap);
2267 // disabled bg bitmap
2268 if (pControl->GetItemElement(i, "disabledBGBitmapPath", headerItemString))
2270 Bitmap* pBitmap = null;
2271 pBitmap = LoadBitmapN(headerItemString);
2272 headerItem.SetBackgroundBitmap(HEADER_ITEM_STATUS_DISABLED, pBitmap);
2275 if (pControl->GetItemElement(i, L"accessibilityHint", elementString))
2277 _HeaderItemImpl::GetInstance(headerItem)->SetAccessibilityHint(elementString);
2280 pHeader->AddItem(headerItem);
2282 if (pControl->GetItemElement(i, "headerItemBadgeIconPath", headerItemString))
2284 Bitmap* pBitmap = null;
2285 pBitmap = LoadBitmapN(headerItemString);
2286 result r = pHeader->SetItemBadgeIcon(i, pBitmap);
2287 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set an icon");
2290 if (pControl->GetItemElement(i, "headerItemNumberedBadgeIcon", headerItemString))
2292 Base::Integer::Parse(headerItemString, numberedBadge);
2293 result r = pHeader->SetItemNumberedBadgeIcon(i, numberedBadge);
2294 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set a numbered icon");
2297 else if (headerItemString.Equals(L"buttonItem", false))
2299 ButtonItem buttonItem;
2302 if (pControl->GetItemElement(i, "style", headerItemString))
2304 if (headerItemString.Equals(L"BUTTON_ITEM_STYLE_TEXT", false))
2306 buttonItemStyle = BUTTON_ITEM_STYLE_TEXT;
2308 else if (headerItemString.Equals(L"BUTTON_ITEM_STYLE_ICON", false))
2310 buttonItemStyle = BUTTON_ITEM_STYLE_ICON;
2314 // set button position
2315 if (pControl->GetItemElement(i, "position", headerItemString))
2317 if (headerItemString.Equals(L"BUTTON_POSITION_LEFT", false))
2319 buttonPosition = BUTTON_POSITION_LEFT;
2321 else if (headerItemString.Equals(L"BUTTON_POSITION_RIGHT", false))
2323 buttonPosition = BUTTON_POSITION_RIGHT;
2327 if (pControl->GetItemElement(i, "actionId", headerItemString))
2330 Base::Integer::Parse(headerItemString, actionId);
2331 buttonItem.Construct(buttonItemStyle, actionId);
2334 if (pControl->GetItemElement(i, "text", headerItemString))
2336 buttonItem.SetText(headerItemString);
2339 // buttonitem background bitmap path setting
2341 if (pControl->GetItemElement(i, "normalBGBitmapPath", headerItemString))
2343 Bitmap* pBitmap = null;
2344 pBitmap = LoadBitmapN(headerItemString);
2345 buttonItem.SetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL, pBitmap);
2348 // pressed bg bitmap
2349 if (pControl->GetItemElement(i, "pressedBGBitmapPath", headerItemString))
2351 Bitmap* pBitmap = null;
2352 pBitmap = LoadBitmapN(headerItemString);
2353 buttonItem.SetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED, pBitmap);
2356 // highlighted bg bitmap
2357 if (pControl->GetItemElement(i, "highlightedBGBitmapPath", headerItemString))
2359 Bitmap* pBitmap = null;
2360 pBitmap = LoadBitmapN(headerItemString);
2361 buttonItem.SetBackgroundBitmap(BUTTON_ITEM_STATUS_HIGHLIGHTED, pBitmap);
2364 // disabled bg bitmap
2365 if (pControl->GetItemElement(i, "disabledBGBitmapPath", headerItemString))
2367 Bitmap* pBitmap = null;
2368 pBitmap = LoadBitmapN(headerItemString);
2369 buttonItem.SetBackgroundBitmap(BUTTON_ITEM_STATUS_DISABLED, pBitmap);
2372 // buttonitem icon bitmap setting
2373 if (pControl->GetItemElement(i, "normalIconPath", headerItemString))
2375 Bitmap* pBitmap = null;
2376 pBitmap = LoadBitmapN(headerItemString);
2377 buttonItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitmap);
2380 if (pControl->GetItemElement(i, "pressedIconPath", headerItemString))
2382 Bitmap* pBitmap = null;
2383 pBitmap = LoadBitmapN(headerItemString);
2384 buttonItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitmap);
2387 if (pControl->GetItemElement(i, "highlightedIconPath", headerItemString))
2389 Bitmap* pBitmap = null;
2390 pBitmap = LoadBitmapN(headerItemString);
2391 buttonItem.SetIcon(BUTTON_ITEM_STATUS_HIGHLIGHTED, pBitmap);
2394 if (pControl->GetItemElement(i, "disabledIconPath", headerItemString))
2396 Bitmap* pBitmap = null;
2397 pBitmap = LoadBitmapN(headerItemString);
2398 buttonItem.SetIcon(BUTTON_ITEM_STATUS_DISABLED, pBitmap);
2401 if (pControl->GetItemElement(i, L"accessibilityHint", elementString))
2403 _ButtonItemImpl::GetInstance(buttonItem)->SetAccessibilityHint(elementString);
2405 pHeader->SetButton(buttonPosition, buttonItem);
2407 if (pControl->GetItemElement(i, "buttonItemBadgeIconPath", headerItemString))
2409 Bitmap* pBitmap = null;
2410 pBitmap = LoadBitmapN(headerItemString);
2411 result r = pHeader->SetButtonBadgeIcon(buttonPosition, pBitmap);
2412 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set an icon");
2415 if (pControl->GetItemElement(i, "buttonItemNumberedBadgeIcon", headerItemString))
2417 Base::Integer::Parse(headerItemString, numberedBadge);
2418 result r = pHeader->SetButtonNumberedBadgeIcon(buttonPosition, numberedBadge);
2419 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set a numbered icon");
2432 _HeaderRegister::_HeaderRegister()
2434 _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
2435 pUiBuilderControlTableManager->RegisterControl(L"Header", _HeaderMaker::GetInstance);
2438 _HeaderRegister::~_HeaderRegister()
2440 _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
2441 pUiBuilderControlTableManager->UnregisterControl(L"Header");
2444 static _HeaderRegister HeaderRegisterToUiBuilder;
2446 }}} // Tizen::Ui::Controls