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 || __style == HEADER_STYLE_TAB_LARGE)
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 || __style == HEADER_STYLE_TAB_LARGE), -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_TAB_LARGE
310 || __style == HEADER_STYLE_BUTTON), E_SYSTEM,
311 "[E_SYSTEM] Unable to add the item because the current style does not support it.");
313 int count = GetItemCount();
315 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex <= count), E_OUT_OF_RANGE,
316 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
318 _Button* pButton = ConvertHeaderItem(item);
320 if (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
321 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE || __style == HEADER_STYLE_TAB_LARGE)
323 pButton->SetButtonStyle(_BUTTON_STYLE_SEGMENT);
326 return GetCore().InsertItemAt(itemIndex, pButton);
330 _HeaderImpl::IsButtonSet(ButtonPosition position) const
332 if (position == BUTTON_POSITION_LEFT)
334 return GetCore().IsButtonSet(LEFT_BUTTON);
336 else if (position == BUTTON_POSITION_RIGHT)
338 return GetCore().IsButtonSet(RIGHT_BUTTON);
345 _HeaderImpl::PlayWaitingAnimation(HeaderAnimationPosition animationPos)
347 if ((__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_TITLE_BUTTON || __style == HEADER_STYLE_BUTTON
348 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_LARGE)
349 && animationPos == HEADER_ANIMATION_POSITION_TITLE)
351 SysLogException(NID_UI_CTRL, E_INVALID_OPERATION, "[E_INVALID_OPERATION] Unable to pause the waiting animation because the current style does not support it.");
352 return E_INVALID_OPERATION;
355 if ((IsButtonSet(BUTTON_POSITION_LEFT) == false && animationPos == HEADER_ANIMATION_POSITION_BUTTON_LEFT)
356 || (IsButtonSet(BUTTON_POSITION_RIGHT) == false && animationPos == HEADER_ANIMATION_POSITION_BUTTON_RIGHT))
358 SysLogException(NID_UI_CTRL, E_INVALID_OPERATION,
359 "[E_INVALID_OPERATION] Unable to play the waiting animation because no button is set at the specified position.");
360 return E_INVALID_OPERATION;
363 ToolbarAnimationPosition toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
365 if (animationPos == HEADER_ANIMATION_POSITION_TITLE)
367 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
369 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_LEFT)
371 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_LEFT;
373 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_RIGHT)
375 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_RIGHT;
378 return GetCore().PlayWaitingAnimation(toolbarAnimPos);
382 _HeaderImpl::StopWaitingAnimation(HeaderAnimationPosition animationPos)
384 if ((__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_TITLE_BUTTON || __style == HEADER_STYLE_BUTTON
385 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_LARGE)
386 && animationPos == HEADER_ANIMATION_POSITION_TITLE)
388 SysLogException(NID_UI_CTRL, E_INVALID_OPERATION, "[E_INVALID_OPERATION] A Header in this style doesn't support title animation.");
389 return E_INVALID_OPERATION;
392 SysTryReturnResult(NID_UI_CTRL, (GetWaitingAnimationStatus(animationPos) != ANIMATION_STOPPED), E_INVALID_OPERATION,
393 "[E_INVALID_OPERATION] The animation is not playing currently.");
395 ToolbarAnimationPosition toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
397 if (animationPos == HEADER_ANIMATION_POSITION_TITLE)
399 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
401 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_LEFT)
403 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_LEFT;
405 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_RIGHT)
407 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_RIGHT;
410 return GetCore().StopWaitingAnimation(toolbarAnimPos);
414 _HeaderImpl::PauseWaitingAnimation(HeaderAnimationPosition animationPos)
416 if ((__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_TITLE_BUTTON || __style == HEADER_STYLE_BUTTON
417 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_LARGE)
418 && animationPos == HEADER_ANIMATION_POSITION_TITLE)
420 SysLogException(NID_UI_CTRL, E_INVALID_OPERATION, "[E_INVALID_OPERATION] Unable to pause the waiting animation because the current style does not support it.");
421 return E_INVALID_OPERATION;
424 SysTryReturnResult(NID_UI_CTRL, (GetWaitingAnimationStatus(animationPos) != ANIMATION_STOPPED), E_INVALID_OPERATION,
425 "[E_INVALID_OPERATION] No waiting animation is in progress at the specified position.");
427 SysTryReturnResult(NID_UI_CTRL,
428 (animationPos >= HEADER_ANIMATION_POSITION_TITLE && animationPos <= HEADER_ANIMATION_POSITION_BUTTON_RIGHT),
429 E_INVALID_ARG, "[E_INVALID_ARG] The animationPos is invalid");
431 ToolbarAnimationPosition toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
433 if (animationPos == HEADER_ANIMATION_POSITION_TITLE)
435 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
437 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_LEFT)
439 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_LEFT;
441 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_RIGHT)
443 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_RIGHT;
446 return GetCore().PauseWaitingAnimation(toolbarAnimPos);
450 _HeaderImpl::GetWaitingAnimationStatus(HeaderAnimationPosition animationPos) const
452 ToolbarAnimationPosition toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
454 if (HEADER_ANIMATION_POSITION_TITLE == animationPos)
456 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
458 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_LEFT)
460 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_LEFT;
462 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_RIGHT)
464 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_RIGHT;
467 return GetCore().GetWaitingAnimationStatus(toolbarAnimPos);
471 _HeaderImpl::RemoveAllButtons(void)
473 return GetCore().RemoveAllButtons();
477 _HeaderImpl::RemoveAllItems(void)
479 return GetCore().RemoveAllItems();
483 _HeaderImpl::RemoveItemAt(int itemIndex)
485 int count = GetItemCount();
487 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex <= count), E_OUT_OF_RANGE,
488 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
491 return GetCore().RemoveItemAt(itemIndex);
495 _HeaderImpl::RemoveButtonAt(ButtonPosition position)
497 if (BUTTON_POSITION_LEFT == position)
499 return GetCore().RemoveButtonAt(LEFT_BUTTON);
501 else if (BUTTON_POSITION_RIGHT == position)
503 return GetCore().RemoveButtonAt(RIGHT_BUTTON);
510 _HeaderImpl::SetBackgroundBitmap(const Bitmap* pBitmap)
512 return GetCore().SetBackgroundBitmap(*pBitmap);
516 _HeaderImpl::SetButton(ButtonPosition position, const ButtonItem& button)
518 SysTryReturnResult(NID_UI_CTRL, (!(__style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE || __style == HEADER_STYLE_TAB_LARGE)), E_INVALID_OPERATION,
519 "[E_INVALID_OPERATION] This operation is not supported.");
521 SysTryReturnResult(NID_UI_CTRL, (button.GetActionId() >= HEADER_ACTION_ID_MIN && button.GetActionId() <= HEADER_ACTION_ID_MAX),
522 E_INVALID_ARG, "[E_INVALID_ARG] The actionId is invalid.");
524 int count = GetItemCount();
526 SysTryReturnResult(NID_UI_CTRL, (count <= HEADER_MAX_ITEM_COUNT_WITH_BUTTON), E_SYSTEM,
527 "[E_SYSTEM] If the item count is larger then 4, no button can be set.");
529 SysTryReturnResult(NID_UI_CTRL, (position == BUTTON_POSITION_LEFT || position == BUTTON_POSITION_RIGHT), E_INVALID_ARG,
530 "[E_INVALID_ARG] The position is invalid.");
532 _Button* pButton = ConvertButtonItem(button);
534 if (position == BUTTON_POSITION_LEFT)
536 return GetCore().SetButton(LEFT_BUTTON, pButton);
538 else if (position == BUTTON_POSITION_RIGHT)
540 return GetCore().SetButton(RIGHT_BUTTON, pButton);
547 _HeaderImpl::SetButtonColor(ButtonItemStatus status, const Color& color)
549 _ButtonStatus tempStatus = ConvertButtonStatus(status);
551 return GetCore().SetButtonColor(tempStatus, color);
555 _HeaderImpl::SetButtonEnabled(ButtonPosition position, bool enable)
557 bool isButtonSet = IsButtonSet(position);
559 SysTryReturnResult(NID_UI_CTRL, isButtonSet, E_INVALID_OPERATION,
560 "[E_INVALID_OPERATION] No button item is set at the specified position.");
562 if (position == BUTTON_POSITION_LEFT)
564 GetCore().SetButtonEnabled(LEFT_BUTTON, enable);
566 else if (position == BUTTON_POSITION_RIGHT)
568 GetCore().SetButtonEnabled(RIGHT_BUTTON, enable);
575 _HeaderImpl::SetButtonTextColor(ButtonItemStatus status, const Color& color)
577 _ButtonStatus tempStatus = ConvertButtonStatus(status);
579 return GetCore().SetButtonTextColor(tempStatus, color);
583 _HeaderImpl::SetButtonBadgeIcon(ButtonPosition position, const Bitmap* pBadgeIcon)
585 SysTryReturnResult(NID_UI_CTRL, (position == BUTTON_POSITION_LEFT || position == BUTTON_POSITION_RIGHT), E_SYSTEM,
586 "[E_SYSTEM] The position is invalid.");
588 bool isButtonSet = IsButtonSet(position);
590 SysTryReturnResult(NID_UI_CTRL, isButtonSet, E_INVALID_STATE,
591 "[E_INVALID_STATE] No button item is set at the specified position.");
593 if (position == BUTTON_POSITION_LEFT)
595 return GetCore().SetButtonBadgeIcon(LEFT_BUTTON, pBadgeIcon);
599 return GetCore().SetButtonBadgeIcon(RIGHT_BUTTON, pBadgeIcon);
604 _HeaderImpl::SetButtonNumberedBadgeIcon(ButtonPosition position, int number)
606 SysTryReturnResult(NID_UI_CTRL, (position == BUTTON_POSITION_LEFT || position == BUTTON_POSITION_RIGHT), E_SYSTEM,
607 "[E_SYSTEM] The position is invalid.");
609 bool isButtonSet = IsButtonSet(position);
611 SysTryReturnResult(NID_UI_CTRL, isButtonSet, E_INVALID_STATE,
612 "[E_INVALID_STATE] No button item is set at the specified position.");
614 SysTryReturnResult(NID_UI_CTRL, (0 <= number && number <= HEADER_NUMBERD_BADGE_ICON_NUMBER_MAX), E_INVALID_ARG,
615 "[E_INVALID_ARG] The number is invalid.");
617 if (position == BUTTON_POSITION_LEFT)
619 return GetCore().SetButtonNumberedBadgeIcon(LEFT_BUTTON, number);
623 return GetCore().SetButtonNumberedBadgeIcon(RIGHT_BUTTON, number);
628 _HeaderImpl::SetItemAt(int itemIndex, const HeaderItem& item)
630 SysTryReturnResult(NID_UI_CTRL, (item.GetActionId() != -1), E_INVALID_ARG, "[E_INVALID_ARG] The HeaderItem isn't constructed.");
632 if (item.GetActionId() < HEADER_ACTION_ID_MIN || item.GetActionId() > HEADER_ACTION_ID_MAX)
634 SysLogException(NID_UI_CTRL, E_INVALID_ARG, "[E_INVALID_ARG] The actionId is invalid.");
635 return E_INVALID_ARG;
638 int count = GetItemCount();
640 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex <= count && __style != HEADER_STYLE_TITLE), E_OUT_OF_RANGE,
641 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
643 _Button* pButton = ConvertHeaderItem(item);
645 if (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
646 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE || __style == HEADER_STYLE_TAB_LARGE)
648 pButton->SetButtonStyle(_BUTTON_STYLE_SEGMENT);
651 return GetCore().SetItemAt(itemIndex, pButton);
655 _HeaderImpl::SetItemBadgeIcon(int itemIndex, const Bitmap* pBadgeIcon)
657 SysTryReturnResult(NID_UI_CTRL, __style != HEADER_STYLE_TITLE,
658 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to set the badge icon because the current style does not support it.");
660 int count = GetItemCount();
662 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
663 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
665 return GetCore().SetItemBadgeIcon(itemIndex, pBadgeIcon);
669 _HeaderImpl::SetItemNumberedBadgeIcon(int itemIndex, int number)
671 SysTryReturnResult(NID_UI_CTRL, __style != HEADER_STYLE_TITLE,
672 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to set the badge icon because the current style does not support it.");
674 SysTryReturnResult(NID_UI_CTRL, (0 <= number && number <= HEADER_NUMBERD_BADGE_ICON_NUMBER_MAX), E_INVALID_ARG,
675 "[E_INVALID_ARG] The number is invalid.");
677 int count = GetItemCount();
679 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
680 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
682 return GetCore().SetItemNumberedBadgeIcon(itemIndex, number);
686 _HeaderImpl::SetItemColor(HeaderItemStatus status, const Color& color)
688 _ButtonStatus tempStatus = ConvertButtonStatus(status);
690 return GetCore().SetItemColor(tempStatus, color);
694 _HeaderImpl::SetItemEnabled(int itemIndex, bool enable)
696 int count = GetItemCount();
698 SysTryReturnResult(NID_UI_CTRL, (count != 0), E_SYSTEM, "[E_SYSTEM] No item to be enabled exists.")
700 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
701 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
703 // Selected item cannot be disabled.
704 int selectedItemIndex = GetSelectedItemIndex();
706 if (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
707 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE || __style == HEADER_STYLE_TAB_LARGE)
709 if ((selectedItemIndex == itemIndex && enable == false) || (selectedItemIndex == -1 && itemIndex == 0 && enable == false))
711 SysLogException(NID_UI_CTRL, E_INVALID_OPERATION, "[E_INVALID_OPERATION] The Selected item cannot be disabled.");
712 return E_INVALID_OPERATION;
716 return GetCore().SetItemEnabled(itemIndex, enable);
720 _HeaderImpl::SetItemTextColor(HeaderItemStatus status, const Color& color)
722 _ButtonStatus tempStatus = ConvertButtonStatus(status);
724 return GetCore().SetItemTextColor(tempStatus, color);
728 _HeaderImpl::SetItemSelected(int itemIndex)
730 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
731 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE || __style == HEADER_STYLE_TAB_LARGE),
732 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to select the item because the current style does not support it.");
734 int count = GetItemCount();
736 SysTryReturnResult(NID_UI_CTRL, (count != 0 && itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
737 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
739 // Disabled items can not be selected.
740 HeaderItemStatus status;
742 result r = GetItemStatus(itemIndex, status);
744 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[E_INVALID_STATE] Failed to get item status.");
746 SysTryReturnResult(NID_UI_CTRL, (status != HEADER_ITEM_STATUS_DISABLED), E_INVALID_OPERATION,
747 "[E_INVALID_OPERATION] The disabled item can not be selected.");
749 //__calledBySetItemSelected = true;
751 return GetCore().SetItemSelected(itemIndex);
755 _HeaderImpl::SetColor(const Color& color)
757 return GetCore().SetColor(color);
761 _HeaderImpl::SetStyle(HeaderStyle style)
768 return GetCore().SetStyle(ConvertHeaderStyle(__style));
772 _HeaderImpl::SetTitleIcon(const Bitmap* pIcon)
774 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
775 || __style == HEADER_STYLE_TAB_WITH_TITLE),
776 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to set the title icon because the current style does not support it.");
778 return GetCore().SetTitleIcon(*pIcon);
782 _HeaderImpl::SetTitleText(const String& text)
784 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
785 || __style == HEADER_STYLE_TAB_WITH_TITLE),
786 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to set the title icon because the current style does not support it.");
788 return GetCore().SetTitleText(text);
792 _HeaderImpl::SetTitleTextColor(const Color& color)
794 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
795 || __style == HEADER_STYLE_TAB_WITH_TITLE),
796 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to set the title icon because the current style does not support it.");
798 return GetCore().SetTitleTextColor(color);
802 _HeaderImpl::SetTransparent(bool transparent)
804 return GetCore().SetTransparent(transparent);
808 _HeaderImpl::SetDescriptionText(const String& text)
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().SetDescriptionText(text);
817 _HeaderImpl::SetDescriptionTextColor(const Color& color)
819 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE), E_UNSUPPORTED_OPERATION,
820 "[E_UNSUPPORTED_OPERATION] Unable to set the description text icon because the current style does not support it.");
822 return GetCore().SetDescriptionTextColor(color);
826 _HeaderImpl::IsTabEditModeEnabled(void) const
828 return GetCore().IsTabEditModeEnabled();
832 _HeaderImpl::SetTabEditModeEnabled(bool enable)
834 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE || __style == HEADER_STYLE_TAB_LARGE), E_UNSUPPORTED_OPERATION,
835 "[E_UNSUPPORTED_OPERATION] This operation is only for HEADER_STYLE_TAB, HEADER_STYLE_TAB_WITH_TITLE or HEADER_STYLE_TAB_LARGE");
837 return GetCore().SetTabEditModeEnabled(enable);
841 _HeaderImpl::SetBackButton(void)
843 return E_UNSUPPORTED_OPERATION;
847 _HeaderImpl::IsBackButtonSet(void) const
853 _HeaderImpl::RemoveBackButton(void)
859 _HeaderImpl::SetBackButtonEnabled(bool enable)
861 return E_INVALID_OPERATION;
865 _HeaderImpl::GetBackButtonStatus(void) const
867 SysTryReturn(NID_UI_CTRL, 0, BUTTON_ITEM_STATUS_NORMAL, E_INVALID_OPERATION,
868 "[E_INVALID_OPERATION] No button item is set at the specified position.");
872 _HeaderImpl::GetButtonBounds(ButtonPosition position) const
874 bool isButtonSet = IsButtonSet(position);
876 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.");
880 if (position == BUTTON_POSITION_LEFT)
882 rect = GetCore().GetButtonBounds(LEFT_BUTTON);
884 else if (position == BUTTON_POSITION_RIGHT)
886 rect = GetCore().GetButtonBounds(RIGHT_BUTTON);
893 _HeaderImpl::GetButtonBoundsF(ButtonPosition position) const
895 bool isButtonSet = IsButtonSet(position);
897 SysTryReturn(NID_UI_CTRL, isButtonSet, FloatRectangle(-1.0f, -1.0f, -1.0f, -1.0f),
898 E_INVALID_OPERATION, "[E_INVALID_OPERATION] No button item is set at the specified position.");
902 if (position == BUTTON_POSITION_LEFT)
904 rect = GetCore().GetButtonBoundsF(LEFT_BUTTON);
906 else if (position == BUTTON_POSITION_RIGHT)
908 rect = GetCore().GetButtonBoundsF(RIGHT_BUTTON);
915 _HeaderImpl::SetTitleBadgeIcon(const Bitmap* pBadgeIcon)
917 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
918 || __style == HEADER_STYLE_TAB_WITH_TITLE),
919 E_INVALID_OPERATION, "[E_INVALID_OPERATION] Unable to set the title badge icon because the current style does not support it.");
921 return GetCore().SetTitleBadgeIcon(pBadgeIcon);
925 _HeaderImpl::SetTitleNumberedBadgeIcon(int number)
927 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
928 || __style == HEADER_STYLE_TAB_WITH_TITLE),
929 E_INVALID_OPERATION, "[E_INVALID_OPERATION] Unable to set the title badge icon because the current style does not support it.");
931 SysTryReturnResult(NID_UI_CTRL, (0 <= number && number <= HEADER_NUMBERD_BADGE_ICON_NUMBER_MAX), E_INVALID_ARG,
932 "[E_INVALID_ARG] The number is invalid.");
934 return GetCore().SetTitleNumberedBadgeIcon(number);
938 _HeaderImpl::AddActionEventListener(IActionEventListener& listener)
940 if (__pPublicActionEvent == null)
942 __pPublicActionEvent = _PublicActionEvent::CreateInstanceN(GetPublic());
944 if (IsFailed(GetLastResult()))
946 SysLogException(NID_UI_CTRL, E_SYSTEM, "[E_SYSTEM] System error occurred.");
947 delete __pPublicActionEvent;
953 __pPublicActionEvent->AddListener(listener);
955 GetCore().AddActionEventListener(*this);
961 _HeaderImpl::RemoveActionEventListener(IActionEventListener& listener)
963 SysTryReturnVoidResult(NID_UI_CTRL, __pPublicActionEvent, E_INVALID_STATE, "[E_INVALID_STATE] This instance isn't constructed.");
965 // Todo : check fail case of RemoveListener
966 __pPublicActionEvent->RemoveListener(listener);
968 GetCore().RemoveActionEventListener(*this);
974 _HeaderImpl::OnActionPerformed(const _Control& source, int actionId)
976 if (GetCore().IsInitialDraw() == true && GetCore().GetSelectedItemIndex() == 0)
981 if (__pPublicActionEvent != null)
983 __pPublicActionEvent->Fire(*_PublicActionEvent::CreateActionEventArgN(actionId));
990 _HeaderImpl::CheckItemValidate(const HeaderItem& item)
992 result r = E_SUCCESS;
994 SysTryReturnResult(NID_UI_CTRL, (item.GetActionId() != -1), E_INVALID_ARG, "[E_INVALID_ARG] The HeaderItem isn't constructed.");
996 int count = GetItemCount();
998 if (__style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE || __style == HEADER_STYLE_TAB_LARGE)
1000 SysTryReturnResult(NID_UI_CTRL, (count < HEADER_TAB_STYLE_MAX_ITEM_COUNT), E_MAX_EXCEEDED,
1001 "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit.");
1005 SysTryReturnResult(NID_UI_CTRL, (count < HEADER_ITEM_MAX_COUNT), E_MAX_EXCEEDED,
1006 "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit.");
1009 if ((HEADER_STYLE_TITLE_BUTTON == __style) && (HEADER_TITLE_BUTTON_STYLE_MAX_ITEM_COUNT <= count))
1011 SysLogException(NID_UI_CTRL, E_MAX_EXCEEDED, "[E_MAX_EXCEEDED] The number of items exceeded the maximum limit.");
1016 if ((count >= HEADER_MAX_ITEM_COUNT_WITH_BUTTON) &&
1017 (true == IsButtonSet(BUTTON_POSITION_LEFT) || true == IsButtonSet(BUTTON_POSITION_RIGHT)))
1019 SysLogException(NID_UI_CTRL, E_MAX_EXCEEDED, "[E_MAX_EXCEEDED] The number of items with button have exceeded the maximum limit.");
1024 if (item.GetActionId() < HEADER_ACTION_ID_MIN || item.GetActionId() > HEADER_ACTION_ID_MAX)
1026 SysLogException(NID_UI_CTRL, E_INVALID_ARG, "[E_INVALID_ARG] The actionId is invalid.");
1038 _HeaderImpl::ConvertHeaderStyle(HeaderStyle style)
1040 ToolbarStyle viewStyle = TOOLBAR_TITLE;
1042 if (style == HEADER_STYLE_TITLE || style == HEADER_STYLE_TITLE_BUTTON)
1044 viewStyle = TOOLBAR_TITLE;
1046 else if (style == HEADER_STYLE_SEGMENTED)
1048 viewStyle = TOOLBAR_HEADER_SEGMENTED;
1050 else if (style == HEADER_STYLE_SEGMENTED_WITH_TITLE)
1052 viewStyle = TOOLBAR_HEADER_SEGMENTED_WITH_TITLE;
1054 else if (style == HEADER_STYLE_TAB)
1056 viewStyle = TOOLBAR_TAB;
1058 else if (style == HEADER_STYLE_TAB_WITH_TITLE)
1060 viewStyle = TOOLBAR_TAB_WITH_TITLE;
1062 else if (style == HEADER_STYLE_BUTTON)
1064 viewStyle = TOOLBAR_TEXT;
1066 else if (style == HEADER_STYLE_TAB_LARGE)
1068 viewStyle = TOOLBAR_TAB_LARGE;
1075 _HeaderImpl::ConvertButtonItem(const ButtonItem& buttonItem)
1077 result r = E_SUCCESS;
1079 _Button* pButton = _Button::CreateButtonN();
1081 pButton->SetMargin(0.0f, 0.0f, 0.0f, 0.0f);
1083 float fontSize = 0.0f;
1084 float multilineFontSize = 0.0f;
1086 if (__style == HEADER_STYLE_BUTTON)
1088 r = GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
1091 pButton->SetTextSize(fontSize, FONT_STYLE_BOLD);
1094 r = GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_MULTILINE_FONT_SIZE, GetCore().GetOrientation(), multilineFontSize);
1097 pButton->SetMultilineTextSize(multilineFontSize);
1102 r = GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
1105 pButton->SetTextSize(fontSize, FONT_STYLE_BOLD);
1108 r = GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_MULTILINE_FONT_SIZE, GetCore().GetOrientation(), multilineFontSize);
1111 pButton->SetMultilineTextSize(multilineFontSize);
1115 pButton->SetText(buttonItem.GetText());
1117 float buttonItemWidth = 0.0f;
1118 float buttonItemHeight = 0.0f;
1119 float textMargin = 0.0f;
1121 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_HEIGHT, GetCore().GetOrientation(), buttonItemHeight);
1122 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_WIDTH, GetCore().GetOrientation(), buttonItemWidth);
1123 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_MARGIN_WITH_TEXT, GetCore().GetOrientation(), textMargin);
1125 if (buttonItem.GetText() != L"")
1127 pButton->SetBounds(FloatRectangle(0.0f, 0.0f, buttonItemWidth, buttonItemHeight));
1129 float extentSize = 0.0f;
1130 float extentSizeMax = 0.0f;
1131 float extentSizeMin = 0.0f;
1133 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_WIDTH_WITH_TEXT, GetCore().GetOrientation(), extentSizeMax);
1134 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_WIDTH, GetCore().GetOrientation(), extentSizeMin);
1136 extentSize = pButton->GetTextExtentSizeF() + textMargin * 2;
1138 if (extentSize > extentSizeMax)
1140 extentSize = extentSizeMax;
1143 if (extentSize < extentSizeMin)
1145 extentSize = extentSizeMin;
1148 pButton->SetMargin(textMargin, 0.0f, textMargin, 0.0f);
1149 pButton->SetBounds(FloatRectangle(0.0f, 0.0f, extentSize, buttonItemHeight));
1153 pButton->SetBounds(FloatRectangle(0.0f, 0.0f, buttonItemWidth, buttonItemHeight));
1156 pButton->SetActionId(buttonItem.GetActionId());
1157 pButton->SetTextMaxLine(2);
1159 float iconSize = 0.0f;
1161 if (__style == HEADER_STYLE_BUTTON)
1163 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize); // 63
1167 if (__style == HEADER_STYLE_SEGMENTED_WITH_TITLE)
1169 GET_SHAPE_CONFIG(HEADER::TAB_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize); //63
1173 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize); //63
1177 Bitmap* pIconBitmap = null;
1178 pIconBitmap = const_cast<Bitmap*>(buttonItem.__pImpl->GetIcon(BUTTON_ITEM_STATUS_NORMAL));
1182 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1184 pButton->SetBitmap(_BUTTON_STATUS_NORMAL, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1185 pButton->SetBitmap(_BUTTON_STATUS_PRESSED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1186 pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1187 pButton->SetBitmap(_BUTTON_STATUS_DISABLED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1190 pIconBitmap = const_cast<Bitmap*>(buttonItem.__pImpl->GetIcon(BUTTON_ITEM_STATUS_PRESSED));
1194 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1196 pButton->SetBitmap(_BUTTON_STATUS_PRESSED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1199 pIconBitmap = const_cast<Bitmap*>(buttonItem.__pImpl->GetIcon(BUTTON_ITEM_STATUS_HIGHLIGHTED));
1203 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1205 pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1208 pIconBitmap = const_cast<Bitmap*>(buttonItem.__pImpl->GetIcon(BUTTON_ITEM_STATUS_DISABLED));
1212 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1214 pButton->SetBitmap(_BUTTON_STATUS_DISABLED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1217 Bitmap* pNormalBackgroundBitmap = null;
1218 Bitmap* pDisabledBackgroundBitmap = null;
1219 Bitmap* pPressedBackgroundBitmap = null;
1220 Bitmap* pHighlightedBackgroundBitmap = null;
1222 Bitmap* pColorReplacedBitmap = null;
1224 GET_BITMAP_CONFIG_N(HEADER::BUTTON_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pNormalBackgroundBitmap);
1225 GET_BITMAP_CONFIG_N(HEADER::BUTTON_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pDisabledBackgroundBitmap);
1226 GET_BITMAP_CONFIG_N(HEADER::BUTTON_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pPressedBackgroundBitmap);
1227 GET_BITMAP_CONFIG_N(HEADER::BUTTON_BG_HIGHLIGHTED, BITMAP_PIXEL_FORMAT_ARGB8888, pHighlightedBackgroundBitmap);
1229 if (pNormalBackgroundBitmap)
1231 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pNormalBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1232 GetCore().GetButtonColor(_BUTTON_STATUS_NORMAL));
1234 if (GetCore().GetButtonColor(_BUTTON_STATUS_NORMAL).GetAlpha() != 0xFF)
1236 pColorReplacedBitmap->SetAlphaConstant(GetCore().GetButtonColor(_BUTTON_STATUS_NORMAL).GetAlpha());
1239 pButton->SetBackgroundBitmap(_BUTTON_STATUS_NORMAL, *pColorReplacedBitmap);
1241 delete pColorReplacedBitmap;
1242 delete pNormalBackgroundBitmap;
1245 if (pDisabledBackgroundBitmap)
1247 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDisabledBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1248 GetCore().GetButtonColor(_BUTTON_STATUS_DISABLED));
1250 if (GetCore().GetButtonColor(_BUTTON_STATUS_DISABLED).GetAlpha() != 0xFF)
1252 pColorReplacedBitmap->SetAlphaConstant(GetCore().GetButtonColor(_BUTTON_STATUS_DISABLED).GetAlpha());
1255 pButton->SetBackgroundBitmap(_BUTTON_STATUS_DISABLED, *pColorReplacedBitmap);
1257 delete pColorReplacedBitmap;
1258 delete pDisabledBackgroundBitmap;
1261 if (pPressedBackgroundBitmap)
1263 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pPressedBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1264 GetCore().GetButtonColor(_BUTTON_STATUS_PRESSED));
1266 if (GetCore().GetButtonColor(_BUTTON_STATUS_PRESSED).GetAlpha() != 0xFF)
1268 pColorReplacedBitmap->SetAlphaConstant(GetCore().GetButtonColor(_BUTTON_STATUS_PRESSED).GetAlpha());
1271 pButton->SetBackgroundBitmap(_BUTTON_STATUS_PRESSED, *pColorReplacedBitmap);
1273 delete pColorReplacedBitmap;
1274 delete pPressedBackgroundBitmap;
1277 if (pHighlightedBackgroundBitmap)
1279 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pHighlightedBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1280 GetCore().GetButtonColor(_BUTTON_STATUS_HIGHLIGHTED));
1282 if (GetCore().GetButtonColor(_BUTTON_STATUS_HIGHLIGHTED).GetAlpha() != 0xFF)
1284 pColorReplacedBitmap->SetAlphaConstant(GetCore().GetButtonColor(_BUTTON_STATUS_HIGHLIGHTED).GetAlpha());
1287 pButton->SetBackgroundBitmap(_BUTTON_STATUS_HIGHLIGHTED, *pColorReplacedBitmap);
1289 delete pColorReplacedBitmap;
1290 delete pHighlightedBackgroundBitmap;
1293 if (buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL) != null)
1295 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_NORMAL,
1296 *buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL));
1298 if (buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED) != null)
1300 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_PRESSED,
1301 *buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED));
1303 if (buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_HIGHLIGHTED) != null)
1305 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_HIGHLIGHTED,
1306 *buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_HIGHLIGHTED));
1308 if (buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_DISABLED) != null)
1310 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_DISABLED,
1311 *buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_DISABLED));
1314 if (buttonItem.__pImpl->__accessibilityHint.GetLength() > 0)
1316 _AccessibilityContainer* pContainer = pButton->GetAccessibilityContainer();
1319 _AccessibilityElement* pElement = pContainer->GetChildElement(L"ButtonText");
1322 pElement->SetHint(buttonItem.__pImpl->__accessibilityHint);
1331 _HeaderImpl::ConvertHeaderItem(const HeaderItem& headerItem)
1333 _Button* pButton = _Button::CreateButtonN();
1335 float minItemLength = 0.0f;
1337 GET_SHAPE_CONFIG(HEADER::ITEM_MINIMUM_WIDTH, GetCore().GetOrientation(), minItemLength);
1339 pButton->SetBounds(FloatRectangle(0.0f, 0.0f, minItemLength, minItemLength));
1341 pButton->SetActionId(headerItem.GetActionId());
1343 pButton->SetText(headerItem.GetText());
1345 pButton->SetTextMaxLine(2);
1347 float fontSize = 0.0f;
1348 result r = E_SUCCESS;
1350 bool customTheme = false;
1352 if (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE || __style == HEADER_STYLE_TITLE_BUTTON)
1354 r = GET_SHAPE_CONFIG(HEADER::SEGMENTED_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
1356 else if (__style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE || __style == HEADER_STYLE_TAB_LARGE)
1358 r = GET_SHAPE_CONFIG(HEADER::TAB_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
1360 else // __style == HEADER_STYLE_BUTTON
1362 r = GET_SHAPE_CONFIG(FOOTER::FOOTER_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
1367 pButton->SetTextSize(fontSize, FONT_STYLE_BOLD);
1370 float iconSize = 0.0f;
1372 if (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
1373 || __style == HEADER_STYLE_TAB_WITH_TITLE || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_LARGE)
1375 if (headerItem.GetText() != L"" && __style != HEADER_STYLE_TAB_LARGE)
1377 GET_SHAPE_CONFIG(HEADER::TAB_ITEM_ICON_SIZE_WITH_TEXT, GetCore().GetOrientation(), iconSize); // 45
1381 GET_SHAPE_CONFIG(HEADER::TAB_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize); // 63
1384 Bitmap* pSelectedBitmap = null;
1385 Bitmap* pColorReplacedBitmap = null;
1386 Color selectedBitmapColor;
1388 GET_BITMAP_CONFIG_N(HEADER::TAB_ITEM_SELECTED, BITMAP_PIXEL_FORMAT_ARGB8888, pSelectedBitmap);
1389 GET_COLOR_CONFIG(HEADER::SELECTED_BAR_BG_NORMAL, selectedBitmapColor);
1391 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), selectedBitmapColor);
1393 if (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE)
1395 if (GetCore().IsTransparent() == true)
1397 customTheme = IS_CUSTOM_BITMAP(HEADER::SEGMENTED_ITEM_TRANSLUCENT_BG_SELECTED);
1401 customTheme = IS_CUSTOM_BITMAP(HEADER::SEGMENTED_ITEM_BG_SELECTED);
1404 else if (__style == HEADER_STYLE_TAB_WITH_TITLE || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_LARGE)
1406 if (GetCore().IsTransparent() == true)
1408 customTheme = IS_CUSTOM_BITMAP(HEADER::TAB_ITEM_TRANSLUCENT_BG_SELECTED);
1412 customTheme = IS_CUSTOM_BITMAP(HEADER::TAB_ITEM_BG_SELECTED);
1416 if (pColorReplacedBitmap && customTheme == false)
1418 if (__style == HEADER_STYLE_SEGMENTED_WITH_TITLE || __style == HEADER_STYLE_TAB_WITH_TITLE)
1420 pButton->SetUnderlineBitmap(*pColorReplacedBitmap);
1424 pButton->SetUnderlineBitmap(*pColorReplacedBitmap);
1428 delete pColorReplacedBitmap;
1429 delete pSelectedBitmap;
1431 if (__style == HEADER_STYLE_TAB_LARGE || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE || __style == HEADER_STYLE_TAB_WITH_TITLE)
1433 pButton->SetTabTextSlide(true);
1436 else // __style == HEADER_STYLE_BUTTON
1438 if (headerItem.GetText() != L"")
1440 GET_SHAPE_CONFIG(FOOTER::FOOTER_ITEM_BUTTON_STYLE_ICON_SIZE_WITH_TEXT, GetCore().GetOrientation(), iconSize); //45
1444 GET_SHAPE_CONFIG(FOOTER::FOOTER_ITEM_BUTTON_STYLE_ICON_SIZE, GetCore().GetOrientation(), iconSize); // 63
1448 Bitmap* pIconBitmap = null;
1450 pIconBitmap = const_cast<Bitmap*>(headerItem.__pImpl->GetIcon(HEADER_ITEM_STATUS_NORMAL));
1453 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1455 pButton->SetBitmap(_BUTTON_STATUS_NORMAL, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1456 pButton->SetBitmap(_BUTTON_STATUS_PRESSED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1457 pButton->SetBitmap(_BUTTON_STATUS_SELECTED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1458 pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1459 pButton->SetBitmap(_BUTTON_STATUS_DISABLED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1462 pIconBitmap = const_cast<Bitmap*>(headerItem.__pImpl->GetIcon(HEADER_ITEM_STATUS_PRESSED));
1466 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1468 pButton->SetBitmap(_BUTTON_STATUS_PRESSED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1471 pIconBitmap = const_cast<Bitmap*>(headerItem.__pImpl->GetIcon(HEADER_ITEM_STATUS_SELECTED));
1475 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1477 pButton->SetBitmap(_BUTTON_STATUS_SELECTED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1480 pIconBitmap = const_cast<Bitmap*>(headerItem.__pImpl->GetIcon(HEADER_ITEM_STATUS_HIGHLIGHTED));
1484 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1486 pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1489 pIconBitmap = const_cast<Bitmap*>(headerItem.__pImpl->GetIcon(HEADER_ITEM_STATUS_DISABLED));
1493 pIconBitmap->Scale(FloatDimension(iconSize, iconSize));
1495 pButton->SetBitmap(_BUTTON_STATUS_DISABLED, FloatPoint(0.0f, 0.0f), *pIconBitmap);
1498 if (headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_NORMAL) != null)
1500 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_NORMAL,
1501 *headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_NORMAL));
1503 if (headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_PRESSED) != null)
1505 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_PRESSED,
1506 *headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_PRESSED));
1508 if (headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_SELECTED) != null)
1510 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_SELECTED,
1511 *headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_SELECTED));
1513 if (headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_HIGHLIGHTED) != null)
1515 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_HIGHLIGHTED,
1516 *headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_HIGHLIGHTED));
1518 if (headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_DISABLED) != null)
1520 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_DISABLED,
1521 *headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_DISABLED));
1524 if (headerItem.__pImpl->__accessibilityHint.GetLength() > 0)
1526 _AccessibilityContainer* pContainer = pButton->GetAccessibilityContainer();
1529 _AccessibilityElement* pElement = pContainer->GetChildElement(L"ButtonText");
1532 pElement->SetHint(headerItem.__pImpl->__accessibilityHint);
1541 _HeaderImpl::ConvertButtonItemStatus(_ButtonStatus status) const
1545 case _BUTTON_STATUS_NORMAL:
1546 return BUTTON_ITEM_STATUS_NORMAL;
1549 case _BUTTON_STATUS_DISABLED:
1550 return BUTTON_ITEM_STATUS_DISABLED;
1553 case _BUTTON_STATUS_PRESSED:
1554 return BUTTON_ITEM_STATUS_PRESSED;
1557 case _BUTTON_STATUS_HIGHLIGHTED:
1558 return BUTTON_ITEM_STATUS_HIGHLIGHTED;
1562 return BUTTON_ITEM_STATUS_DISABLED;
1568 _HeaderImpl::ConvertHeaderItemStatus(_ButtonStatus status) const
1572 case _BUTTON_STATUS_NORMAL:
1573 return HEADER_ITEM_STATUS_NORMAL;
1576 case _BUTTON_STATUS_DISABLED:
1577 return HEADER_ITEM_STATUS_DISABLED;
1580 case _BUTTON_STATUS_PRESSED:
1581 return HEADER_ITEM_STATUS_PRESSED;
1584 case _BUTTON_STATUS_HIGHLIGHTED:
1585 return HEADER_ITEM_STATUS_HIGHLIGHTED;
1588 case _BUTTON_STATUS_SELECTED:
1589 return HEADER_ITEM_STATUS_SELECTED;
1593 return HEADER_ITEM_STATUS_DISABLED;
1599 _HeaderImpl::ConvertButtonStatus(ButtonItemStatus status) const
1603 case BUTTON_ITEM_STATUS_NORMAL:
1604 return _BUTTON_STATUS_NORMAL;
1607 case BUTTON_ITEM_STATUS_DISABLED:
1608 return _BUTTON_STATUS_DISABLED;
1611 case BUTTON_ITEM_STATUS_PRESSED:
1612 return _BUTTON_STATUS_PRESSED;
1615 case BUTTON_ITEM_STATUS_HIGHLIGHTED:
1616 return _BUTTON_STATUS_HIGHLIGHTED;
1620 return _BUTTON_STATUS_DISABLED;
1626 _HeaderImpl::ConvertButtonStatus(HeaderItemStatus status) const
1630 case HEADER_ITEM_STATUS_NORMAL:
1631 return _BUTTON_STATUS_NORMAL;
1634 case HEADER_ITEM_STATUS_DISABLED:
1635 return _BUTTON_STATUS_DISABLED;
1638 case HEADER_ITEM_STATUS_PRESSED:
1639 return _BUTTON_STATUS_PRESSED;
1642 case HEADER_ITEM_STATUS_HIGHLIGHTED:
1643 return _BUTTON_STATUS_HIGHLIGHTED;
1646 case HEADER_ITEM_STATUS_SELECTED:
1647 return _BUTTON_STATUS_SELECTED;
1651 return _BUTTON_STATUS_DISABLED;
1657 : public _UiBuilderControlMaker
1660 _HeaderMaker(_UiBuilder* uibuilder)
1661 : _UiBuilderControlMaker(uibuilder){};
1662 virtual ~_HeaderMaker(){};
1663 static _UiBuilderControlMaker* GetInstance(_UiBuilder* uibuilder)
1665 _HeaderMaker* pHeaderMaker = new (std::nothrow) _HeaderMaker(uibuilder);
1666 return pHeaderMaker;
1669 virtual Control* Make(_UiBuilderControl* pControl)
1671 Header* pHeader = null;
1672 String elementString;
1674 int numberedBadge = 0;
1678 HeaderStyle hstyle = HEADER_STYLE_TITLE;
1679 Form* pForm = static_cast<Form*>(GetContainer());
1680 pHeader = pForm->GetHeader();
1682 if (null == pHeader)
1687 if (pControl->GetElement(L"headerStyle", elementString))
1689 if (elementString.Equals(L"HEADER_STYLE_TITLE", false))
1691 hstyle = HEADER_STYLE_TITLE;
1693 else if (elementString.Equals(L"HEADER_STYLE_SEGMENTED", false))
1695 hstyle = HEADER_STYLE_SEGMENTED;
1697 else if (elementString.Equals(L"HEADER_STYLE_TITLE_BUTTON", false))
1699 hstyle = HEADER_STYLE_TITLE_BUTTON;
1701 else if (elementString.Equals(L"HEADER_STYLE_SEGMENTED_WITH_TITLE", false))
1703 hstyle = HEADER_STYLE_SEGMENTED_WITH_TITLE;
1705 else if (elementString.Equals(L"HEADER_STYLE_TAB", false))
1707 hstyle = HEADER_STYLE_TAB;
1709 else if (elementString.Equals(L"HEADER_STYLE_TAB_WITH_TITLE", false))
1711 hstyle = HEADER_STYLE_TAB_WITH_TITLE;
1713 else if (elementString.Equals(L"HEADER_STYLE_BUTTON", false))
1715 hstyle = HEADER_STYLE_BUTTON;
1717 else if (elementString.Equals(L"HEADER_STYLE_TAB_LARGE", false))
1719 hstyle = HEADER_STYLE_TAB_LARGE;
1722 pHeader->SetStyle(hstyle);
1725 if (pControl->GetElement(L"backgroundBitmapPath", elementString) || pControl->GetElement(L"BGBitmapPath", elementString))
1727 Bitmap* pBitmap = null;
1728 pBitmap = LoadBitmapN(elementString);
1729 pHeader->SetBackgroundBitmap(pBitmap);
1733 if (pControl->GetElement(L"colorOpacity", elementString))
1735 Base::Integer::Parse(elementString, opacity);
1738 if (pControl->GetElement(L"color", elementString))
1740 ConvertStringToColor32(elementString, opacity, color);
1741 pHeader->SetColor(color);
1744 if (HEADER_STYLE_TITLE == hstyle || HEADER_STYLE_SEGMENTED_WITH_TITLE == hstyle || HEADER_STYLE_TAB_WITH_TITLE == hstyle)
1747 if (pControl->GetElement(L"titleText", elementString))
1749 pHeader->SetTitleText(elementString);
1752 if (pControl->GetElement(L"titleTextColor", elementString))
1754 ConvertStringToColor(elementString, color);
1755 result r = pHeader->SetTitleTextColor(color);
1756 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set title text color");
1759 if (pControl->GetElement(L"titleIconPath", elementString))
1761 Bitmap* pBitmap = null;
1762 pBitmap = LoadBitmapN(elementString);
1763 result r = pHeader->SetTitleIcon(pBitmap);
1764 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set an icon");
1767 if (pControl->GetElement(L"titleBadgeIconPath", elementString))
1769 Bitmap* pBitmap = null;
1770 pBitmap = LoadBitmapN(elementString);
1771 result r = pHeader->SetTitleBadgeIcon(pBitmap);
1772 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set an icon");
1775 if (pControl->GetElement(L"titleNumberedBadgeIcon", elementString))
1777 Base::Integer::Parse(elementString, numberedBadge);
1778 result r = pHeader->SetTitleNumberedBadgeIcon(numberedBadge);
1779 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set a numbered icon");
1783 if (pControl->GetElement(L"descriptionText", elementString))
1785 result r = pHeader->SetDescriptionText(elementString);
1786 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set description text");
1789 if (pControl->GetElement(L"descriptionTextColor", elementString))
1791 ConvertStringToColor(elementString, color);
1792 result r = pHeader->SetDescriptionTextColor(color);
1793 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set description text color");
1797 if (pControl->GetElement(L"accessibilityHint", elementString))
1799 AccessibilityContainer* pContainer = pHeader->GetAccessibilityContainer();
1802 AccessibilityElement* pElement = pContainer->GetElement(L"HeaderTitleText");
1805 pElement->SetHint(elementString);
1811 if (pControl->GetElement(L"normalButtonColorOpacity", elementString))
1813 Base::Integer::Parse(elementString, opacity);
1816 if (pControl->GetElement(L"normalButtonColor", elementString))
1818 ConvertStringToColor32(elementString, opacity, color);
1819 pHeader->SetButtonColor(BUTTON_ITEM_STATUS_NORMAL, color);
1822 if (pControl->GetElement(L"normalButtonTextColor", elementString))
1824 ConvertStringToColor(elementString, color);
1825 pHeader->SetButtonTextColor(BUTTON_ITEM_STATUS_NORMAL, color);
1829 if (pControl->GetElement(L"pressedButtonColorOpacity", elementString))
1831 Base::Integer::Parse(elementString, opacity);
1834 if (pControl->GetElement(L"pressedButtonColor", elementString))
1836 ConvertStringToColor32(elementString, opacity, color);
1837 pHeader->SetButtonColor(BUTTON_ITEM_STATUS_PRESSED, color);
1840 if (pControl->GetElement(L"pressedButtonTextColor", elementString))
1842 ConvertStringToColor(elementString, color);
1843 pHeader->SetButtonTextColor(BUTTON_ITEM_STATUS_PRESSED, color);
1846 // highlighted button
1847 if (pControl->GetElement(L"highlightedButtonColorOpacity", elementString))
1849 Base::Integer::Parse(elementString, opacity);
1852 if (pControl->GetElement(L"highlightedButtonColor", elementString))
1854 ConvertStringToColor32(elementString, opacity, color);
1855 pHeader->SetButtonColor(BUTTON_ITEM_STATUS_HIGHLIGHTED, color);
1858 if (pControl->GetElement(L"highlightedButtonTextColor", elementString))
1860 ConvertStringToColor(elementString, color);
1861 pHeader->SetButtonTextColor(BUTTON_ITEM_STATUS_HIGHLIGHTED, color);
1865 if (pControl->GetElement(L"disabledButtonColorOpacity", elementString))
1867 Base::Integer::Parse(elementString, opacity);
1870 if (pControl->GetElement(L"disabledButtonColor", elementString))
1872 ConvertStringToColor32(elementString, opacity, color);
1873 pHeader->SetButtonColor(BUTTON_ITEM_STATUS_DISABLED, color);
1876 if (pControl->GetElement(L"disabledButtonTextColor", elementString))
1878 ConvertStringToColor(elementString, color);
1879 pHeader->SetButtonTextColor(BUTTON_ITEM_STATUS_DISABLED, color);
1882 if (HEADER_STYLE_TITLE != hstyle)
1885 if (pControl->GetElement(L"normalItemColorOpacity", elementString))
1887 Base::Integer::Parse(elementString, opacity);
1890 if (pControl->GetElement(L"normalItemColor", elementString))
1892 ConvertStringToColor32(elementString, opacity, color);
1893 pHeader->SetItemColor(HEADER_ITEM_STATUS_NORMAL, color);
1896 if (pControl->GetElement(L"normalItemTextColor", elementString))
1898 ConvertStringToColor(elementString, color);
1899 pHeader->SetItemTextColor(HEADER_ITEM_STATUS_NORMAL, color);
1903 if (pControl->GetElement(L"pressedItemColorOpacity", elementString))
1905 Base::Integer::Parse(elementString, opacity);
1908 if (pControl->GetElement(L"pressedItemColor", elementString))
1910 ConvertStringToColor32(elementString, opacity, color);
1911 pHeader->SetItemColor(HEADER_ITEM_STATUS_PRESSED, color);
1914 if (pControl->GetElement(L"pressedItemTextColor", elementString))
1916 ConvertStringToColor(elementString, color);
1917 pHeader->SetItemTextColor(HEADER_ITEM_STATUS_PRESSED, color);
1920 if (hstyle == HEADER_STYLE_SEGMENTED || hstyle == HEADER_STYLE_SEGMENTED_WITH_TITLE
1921 || hstyle == HEADER_STYLE_TAB || hstyle == HEADER_STYLE_TAB_WITH_TITLE || hstyle == HEADER_STYLE_TAB_LARGE)
1924 if (pControl->GetElement(L"selectedItemColorOpacity", elementString))
1926 Base::Integer::Parse(elementString, opacity);
1929 if (pControl->GetElement(L"selectedItemColor", elementString))
1931 ConvertStringToColor32(elementString, opacity, color);
1932 pHeader->SetItemColor(HEADER_ITEM_STATUS_SELECTED, color);
1935 if (pControl->GetElement(L"selectedItemTextColor", elementString))
1937 ConvertStringToColor(elementString, color);
1938 pHeader->SetItemTextColor(HEADER_ITEM_STATUS_SELECTED, color);
1943 if (pControl->GetElement(L"highlightedItemColorOpacity", elementString))
1945 Base::Integer::Parse(elementString, opacity);
1948 if (pControl->GetElement(L"highlightedItemColor", elementString))
1950 ConvertStringToColor32(elementString, opacity, color);
1951 pHeader->SetItemColor(HEADER_ITEM_STATUS_HIGHLIGHTED, color);
1954 if (pControl->GetElement(L"highlightedItemTextColor", elementString))
1956 ConvertStringToColor(elementString, color);
1957 pHeader->SetItemTextColor(HEADER_ITEM_STATUS_HIGHLIGHTED, color);
1961 if (pControl->GetElement(L"disabledItemColorOpacity", elementString))
1963 Base::Integer::Parse(elementString, opacity);
1966 if (pControl->GetElement(L"disabledItemColor", elementString))
1968 ConvertStringToColor32(elementString, opacity, color);
1969 pHeader->SetItemColor(HEADER_ITEM_STATUS_DISABLED, color);
1972 if (pControl->GetElement(L"disabledItemTextColor", elementString))
1974 ConvertStringToColor(elementString, color);
1975 pHeader->SetItemTextColor(HEADER_ITEM_STATUS_DISABLED, color);
1979 int itemCnt = pControl->GetItemCount();
1980 ButtonItemStyle buttonItemStyle = BUTTON_ITEM_STYLE_TEXT;
1981 ButtonPosition buttonPosition = BUTTON_POSITION_LEFT;
1982 String headerItemString;
1984 for (int i = 0; i < itemCnt; i++)
1986 headerItemString = pControl->GetItemName(i);
1987 if ((HEADER_STYLE_TITLE != hstyle) && (headerItemString.Equals(L"headerItem", false)))
1989 HeaderItem headerItem;
1992 if (pControl->GetItemElement(i, "actionId", headerItemString))
1995 Base::Integer::Parse(headerItemString, actionId);
1996 headerItem.Construct(actionId);
2000 if (pControl->GetItemElement(i, "text", headerItemString))
2002 headerItem.SetText(headerItemString);
2005 // headeritem icon bitmap setting
2007 if (pControl->GetItemElement(i, "normalIconPath", headerItemString))
2009 Bitmap* pBitmap = null;
2010 pBitmap = LoadBitmapN(headerItemString);
2011 headerItem.SetIcon(HEADER_ITEM_STATUS_NORMAL, pBitmap);
2015 if (pControl->GetItemElement(i, "pressedIconPath", headerItemString))
2017 Bitmap* pBitmap = null;
2018 pBitmap = LoadBitmapN(headerItemString);
2019 headerItem.SetIcon(HEADER_ITEM_STATUS_PRESSED, pBitmap);
2023 if (pControl->GetItemElement(i, "selectedIconPath", headerItemString))
2025 Bitmap* pBitmap = null;
2026 pBitmap = LoadBitmapN(headerItemString);
2027 headerItem.SetIcon(HEADER_ITEM_STATUS_SELECTED, pBitmap);
2031 if (pControl->GetItemElement(i, "highlightedIconPath", headerItemString))
2033 Bitmap* pBitmap = null;
2034 pBitmap = LoadBitmapN(headerItemString);
2035 headerItem.SetIcon(HEADER_ITEM_STATUS_HIGHLIGHTED, pBitmap);
2039 if (pControl->GetItemElement(i, "disabledIconPath", headerItemString))
2041 Bitmap* pBitmap = null;
2042 pBitmap = LoadBitmapN(headerItemString);
2043 headerItem.SetIcon(HEADER_ITEM_STATUS_DISABLED, pBitmap);
2046 // headeritem background bitmap path setting
2048 if (pControl->GetItemElement(i, "normalBGBitmapPath", headerItemString))
2050 Bitmap* pBitmap = null;
2051 pBitmap = LoadBitmapN(headerItemString);
2052 headerItem.SetBackgroundBitmap(HEADER_ITEM_STATUS_NORMAL, pBitmap);
2055 // pressed bg bitmap
2056 if (pControl->GetItemElement(i, "pressedBGBitmapPath", headerItemString))
2058 Bitmap* pBitmap = null;
2059 pBitmap = LoadBitmapN(headerItemString);
2060 headerItem.SetBackgroundBitmap(HEADER_ITEM_STATUS_PRESSED, pBitmap);
2063 // selected bg bitmap
2064 if (pControl->GetItemElement(i, "selectedBGBitmapPath", headerItemString))
2066 Bitmap* pBitmap = null;
2067 pBitmap = LoadBitmapN(headerItemString);
2068 headerItem.SetBackgroundBitmap(HEADER_ITEM_STATUS_SELECTED, pBitmap);
2071 // highlighted bg bitmap
2072 if (pControl->GetItemElement(i, "highlightedBGBitmapPath", headerItemString))
2074 Bitmap* pBitmap = null;
2075 pBitmap = LoadBitmapN(headerItemString);
2076 headerItem.SetBackgroundBitmap(HEADER_ITEM_STATUS_HIGHLIGHTED, pBitmap);
2079 // disabled bg bitmap
2080 if (pControl->GetItemElement(i, "disabledBGBitmapPath", headerItemString))
2082 Bitmap* pBitmap = null;
2083 pBitmap = LoadBitmapN(headerItemString);
2084 headerItem.SetBackgroundBitmap(HEADER_ITEM_STATUS_DISABLED, pBitmap);
2087 if (pControl->GetItemElement(i, L"accessibilityHint", elementString))
2089 _HeaderItemImpl::GetInstance(headerItem)->SetAccessibilityHint(elementString);
2092 pHeader->AddItem(headerItem);
2094 if (pControl->GetItemElement(i, "headerItemBadgeIconPath", headerItemString))
2096 Bitmap* pBitmap = null;
2097 pBitmap = LoadBitmapN(headerItemString);
2098 result r = pHeader->SetItemBadgeIcon(i, pBitmap);
2099 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set an icon");
2102 if (pControl->GetItemElement(i, "headerItemNumberedBadgeIcon", headerItemString))
2104 Base::Integer::Parse(headerItemString, numberedBadge);
2105 result r = pHeader->SetItemNumberedBadgeIcon(i, numberedBadge);
2106 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set a numbered icon");
2109 else if (headerItemString.Equals(L"buttonItem", false))
2111 ButtonItem buttonItem;
2114 if (pControl->GetItemElement(i, "style", headerItemString))
2116 if (headerItemString.Equals(L"BUTTON_ITEM_STYLE_TEXT", false))
2118 buttonItemStyle = BUTTON_ITEM_STYLE_TEXT;
2120 else if (headerItemString.Equals(L"BUTTON_ITEM_STYLE_ICON", false))
2122 buttonItemStyle = BUTTON_ITEM_STYLE_ICON;
2126 // set button position
2127 if (pControl->GetItemElement(i, "position", headerItemString))
2129 if (headerItemString.Equals(L"BUTTON_POSITION_LEFT", false))
2131 buttonPosition = BUTTON_POSITION_LEFT;
2133 else if (headerItemString.Equals(L"BUTTON_POSITION_RIGHT", false))
2135 buttonPosition = BUTTON_POSITION_RIGHT;
2139 if (pControl->GetItemElement(i, "actionId", headerItemString))
2142 Base::Integer::Parse(headerItemString, actionId);
2143 buttonItem.Construct(buttonItemStyle, actionId);
2146 if (pControl->GetItemElement(i, "text", headerItemString))
2148 buttonItem.SetText(headerItemString);
2151 // buttonitem background bitmap path setting
2153 if (pControl->GetItemElement(i, "normalBGBitmapPath", headerItemString))
2155 Bitmap* pBitmap = null;
2156 pBitmap = LoadBitmapN(headerItemString);
2157 buttonItem.SetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL, pBitmap);
2160 // pressed bg bitmap
2161 if (pControl->GetItemElement(i, "pressedBGBitmapPath", headerItemString))
2163 Bitmap* pBitmap = null;
2164 pBitmap = LoadBitmapN(headerItemString);
2165 buttonItem.SetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED, pBitmap);
2168 // highlighted bg bitmap
2169 if (pControl->GetItemElement(i, "highlightedBGBitmapPath", headerItemString))
2171 Bitmap* pBitmap = null;
2172 pBitmap = LoadBitmapN(headerItemString);
2173 buttonItem.SetBackgroundBitmap(BUTTON_ITEM_STATUS_HIGHLIGHTED, pBitmap);
2176 // disabled bg bitmap
2177 if (pControl->GetItemElement(i, "disabledBGBitmapPath", headerItemString))
2179 Bitmap* pBitmap = null;
2180 pBitmap = LoadBitmapN(headerItemString);
2181 buttonItem.SetBackgroundBitmap(BUTTON_ITEM_STATUS_DISABLED, pBitmap);
2184 // buttonitem icon bitmap setting
2185 if (pControl->GetItemElement(i, "normalIconPath", headerItemString))
2187 Bitmap* pBitmap = null;
2188 pBitmap = LoadBitmapN(headerItemString);
2189 buttonItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitmap);
2192 if (pControl->GetItemElement(i, "pressedIconPath", headerItemString))
2194 Bitmap* pBitmap = null;
2195 pBitmap = LoadBitmapN(headerItemString);
2196 buttonItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitmap);
2199 if (pControl->GetItemElement(i, "highlightedIconPath", headerItemString))
2201 Bitmap* pBitmap = null;
2202 pBitmap = LoadBitmapN(headerItemString);
2203 buttonItem.SetIcon(BUTTON_ITEM_STATUS_HIGHLIGHTED, pBitmap);
2206 if (pControl->GetItemElement(i, "disabledIconPath", headerItemString))
2208 Bitmap* pBitmap = null;
2209 pBitmap = LoadBitmapN(headerItemString);
2210 buttonItem.SetIcon(BUTTON_ITEM_STATUS_DISABLED, pBitmap);
2213 if (pControl->GetItemElement(i, L"accessibilityHint", elementString))
2215 _ButtonItemImpl::GetInstance(buttonItem)->SetAccessibilityHint(elementString);
2217 pHeader->SetButton(buttonPosition, buttonItem);
2219 if (pControl->GetItemElement(i, "buttonItemBadgeIconPath", headerItemString))
2221 Bitmap* pBitmap = null;
2222 pBitmap = LoadBitmapN(headerItemString);
2223 result r = pHeader->SetButtonBadgeIcon(buttonPosition, pBitmap);
2224 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set an icon");
2227 if (pControl->GetItemElement(i, "buttonItemNumberedBadgeIcon", headerItemString))
2229 Base::Integer::Parse(headerItemString, numberedBadge);
2230 result r = pHeader->SetButtonNumberedBadgeIcon(buttonPosition, numberedBadge);
2231 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set a numbered icon");
2244 _HeaderRegister::_HeaderRegister()
2246 _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
2247 pUiBuilderControlTableManager->RegisterControl(L"Header", _HeaderMaker::GetInstance);
2250 _HeaderRegister::~_HeaderRegister()
2252 _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
2253 pUiBuilderControlTableManager->UnregisterControl(L"Header");
2256 static _HeaderRegister HeaderRegisterToUiBuilder;
2258 }}} // Tizen::Ui::Controls