2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://floralicense.org/license/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
18 * @file FUiCtrl_HeaderImpl.cpp
19 * @brief This is the implementation file for the _HeaderImpl class.
23 #include <FGrp_BitmapImpl.h>
24 #include "FUi_Control.h"
25 #include "FUi_EcoreEvasMgr.h"
26 #include "FUi_EcoreEvas.h"
27 #include "FUi_ResourceManager.h"
28 #include "FUi_UiBuilder.h"
29 #include "FUiCtrl_ButtonItemImpl.h"
30 #include "FUiCtrl_HeaderImpl.h"
31 #include "FUiCtrl_HeaderItemImpl.h"
32 #include "FUiCtrl_IActionEventListener.h"
33 #include "FUiCtrl_PanelImpl.h"
34 #include "FUiCtrl_PublicActionEvent.h"
36 using namespace Tizen::Base;
37 using namespace Tizen::Graphics;
39 namespace Tizen { namespace Ui { namespace Controls
43 _HeaderImpl::CreateHeaderImplN(Header* pControl)
48 _Toolbar* pCore = null;
50 pCore = _Toolbar::CreateToolbarN(true);
52 SysTryReturn(NID_UI_CTRL, pCore, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(r));
54 r = pCore->InitializeLongPressGesture();
55 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
57 _HeaderImpl* pHeaderImpl = new (std::nothrow) _HeaderImpl(pControl, pCore);
59 r = CheckConstruction(pCore, pHeaderImpl);
60 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
65 _HeaderImpl::_HeaderImpl(Header* pPublic, _Toolbar* pCore)
66 : _ControlImpl(pPublic, pCore)
67 , __style(HEADER_STYLE_TITLE)
68 , __pPublicActionEvent(null)
69 //, __calledBySetItemSelected(false)
71 result r = GetLastResult(); // Check if _ControlImpl succeeded.
72 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
74 pCore->SetStyle(TOOLBAR_TITLE);
76 Color tempColor = Color(0);
78 GET_COLOR_CONFIG(HEADER::BG_NORMAL, tempColor);
79 pCore->SetColor(tempColor);
82 _HeaderImpl::~_HeaderImpl(void)
84 if (__pPublicActionEvent)
86 delete __pPublicActionEvent;
87 __pPublicActionEvent = null;
92 _HeaderImpl::GetHeader(void) const
94 return &const_cast <Header&>(GetPublic());
98 _HeaderImpl::GetPublicClassName(void) const
100 return "Tizen::Ui::Controls::Header";
104 _HeaderImpl::GetPublic(void) const
106 return static_cast<const Header&>(_ControlImpl::GetPublic());
110 _HeaderImpl::GetPublic(void)
112 return static_cast<Header&>(_ControlImpl::GetPublic());
116 _HeaderImpl::GetCore(void) const
118 return static_cast<const _Toolbar&>(_ControlImpl::GetCore());
122 _HeaderImpl::GetCore(void)
124 return static_cast<_Toolbar&>(_ControlImpl::GetCore());
128 _HeaderImpl::GetInstance(const Header& header)
130 return static_cast<const _HeaderImpl*> (header._pControlImpl);
134 _HeaderImpl::GetInstance(Header& header)
136 return static_cast<_HeaderImpl*> (header._pControlImpl);
140 _HeaderImpl::AddItem(const HeaderItem& item)
142 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.");
144 result r = CheckItemValidate(item);
151 if (__style == HEADER_STYLE_TITLE_BUTTON && GetItemCount() >= 1)
153 SysLogException(NID_UI_CTRL, E_MAX_EXCEEDED, "[E_MAX_EXCEEDED] Only 1 HeaderItem can be added to HEADER_STYLE_TITLE_BUTTON ");
154 return E_MAX_EXCEEDED;
157 _Button* pButton = ConvertHeaderItem(item);
159 if (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
160 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE)
162 pButton->SetButtonStyle(_BUTTON_STYLE_SEGMENT);
165 return GetCore().AddItem(pButton);
169 _HeaderImpl::GetButtonStatus(ButtonPosition position) const
171 bool isButtonSet = IsButtonSet(position);
173 SysTryReturn(NID_UI_CTRL, isButtonSet == true, BUTTON_ITEM_STATUS_NORMAL, E_INVALID_OPERATION,
174 "[E_INVALID_OPERATION] No button item is set at the specified position.");
176 _ButtonStatus buttonStatus = _BUTTON_STATUS_NORMAL;
178 if (position == BUTTON_POSITION_LEFT)
180 buttonStatus = GetCore().GetButtonStatus(LEFT_BUTTON);
182 else if (position == BUTTON_POSITION_RIGHT)
184 buttonStatus = GetCore().GetButtonStatus(RIGHT_BUTTON);
187 return ConvertButtonItemStatus(buttonStatus);
191 _HeaderImpl::GetButtonColor(ButtonItemStatus status) const
193 _ButtonStatus tempStatus = ConvertButtonStatus(status);
195 return GetCore().GetButtonColor(tempStatus);
199 _HeaderImpl::GetButtonTextColor(ButtonItemStatus status) const
201 _ButtonStatus tempStatus = ConvertButtonStatus(status);
203 return GetCore().GetButtonTextColor(tempStatus);
207 _HeaderImpl::GetDescriptionText(void) const
209 return GetCore().GetDescriptionText();
213 _HeaderImpl::GetDescriptionTextColor(void) const
215 return GetCore().GetDescriptionTextColor();
219 _HeaderImpl::GetItemColor(HeaderItemStatus status) const
221 _ButtonStatus tempStatus = ConvertButtonStatus(status);
223 return GetCore().GetItemColor(tempStatus);
227 _HeaderImpl::GetItemCount(void) const
229 return GetCore().GetItemCount();
233 _HeaderImpl::GetItemStatus(int itemIndex, HeaderItemStatus& status) const
235 int count = GetItemCount();
237 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex <= count), E_OUT_OF_RANGE,
238 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
240 _Button* pButton = GetCore().GetItem(itemIndex);
242 SysTryReturnResult(NID_UI_CTRL, pButton, E_SYSTEM, "[E_SYSTEM] Unable to get the item status.");
244 status = ConvertHeaderItemStatus(pButton->GetButtonStatus());
250 _HeaderImpl::GetItemTextColor(HeaderItemStatus status) const
252 _ButtonStatus tempStatus = ConvertButtonStatus(status);
254 return GetCore().GetItemTextColor(tempStatus);
258 _HeaderImpl::GetStyle(void) const
264 _HeaderImpl::GetSelectedItemIndex(void) const
266 SysTryReturn(NID_UI_CTRL, (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
267 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE), -1,
268 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to get the selected item index because the current style does not support it.")
270 return GetCore().GetSelectedItemIndex();
274 _HeaderImpl::GetTitleText(void) const
276 return GetCore().GetTitleText();
280 _HeaderImpl::GetTitleTextColor(void) const
282 return GetCore().GetTitleTextColor();
286 _HeaderImpl::GetColor(void) const
288 return GetCore().GetColor();
292 _HeaderImpl::InsertItemAt(int itemIndex, const HeaderItem& item)
294 result r = CheckItemValidate(item);
301 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
302 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE || __style == HEADER_STYLE_BUTTON), E_SYSTEM,
303 "[E_SYSTEM] Unable to add the item because the current style does not support it.");
305 int count = GetItemCount();
307 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex <= count), E_OUT_OF_RANGE,
308 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
310 _Button* pButton = ConvertHeaderItem(item);
312 pButton->SetButtonStyle(_BUTTON_STYLE_SEGMENT);
314 return GetCore().InsertItemAt(itemIndex, pButton);
318 _HeaderImpl::IsButtonSet(ButtonPosition position) const
320 if (position == BUTTON_POSITION_LEFT)
322 return GetCore().IsButtonSet(LEFT_BUTTON);
324 else if (position == BUTTON_POSITION_RIGHT)
326 return GetCore().IsButtonSet(RIGHT_BUTTON);
333 _HeaderImpl::PlayWaitingAnimation(HeaderAnimationPosition animationPos)
335 if ((__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_TITLE_BUTTON || __style == HEADER_STYLE_BUTTON || __style == HEADER_STYLE_TAB)
336 && animationPos == HEADER_ANIMATION_POSITION_TITLE)
338 SysLogException(NID_UI_CTRL, E_INVALID_OPERATION, "[E_INVALID_OPERATION] Unable to pause the waiting animation because the current style does not support it.");
339 return E_INVALID_OPERATION;
342 if ((IsButtonSet(BUTTON_POSITION_LEFT) == false && animationPos == HEADER_ANIMATION_POSITION_BUTTON_LEFT)
343 || (IsButtonSet(BUTTON_POSITION_RIGHT) == false && animationPos == HEADER_ANIMATION_POSITION_BUTTON_RIGHT))
345 SysLogException(NID_UI_CTRL, E_INVALID_OPERATION,
346 "[E_INVALID_OPERATION] Unable to play the waiting animation because no button is set at the specified position.");
347 return E_INVALID_OPERATION;
350 ToolbarAnimationPosition toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
352 if (animationPos == HEADER_ANIMATION_POSITION_TITLE)
354 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
356 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_LEFT)
358 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_LEFT;
360 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_RIGHT)
362 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_RIGHT;
365 return GetCore().PlayWaitingAnimation(toolbarAnimPos);
369 _HeaderImpl::StopWaitingAnimation(HeaderAnimationPosition animationPos)
371 if ((__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_TITLE_BUTTON || __style == HEADER_STYLE_BUTTON || __style == HEADER_STYLE_TAB)
372 && animationPos == HEADER_ANIMATION_POSITION_TITLE)
374 SysLogException(NID_UI_CTRL, E_INVALID_OPERATION, "[E_INVALID_OPERATION] A Header in this style doesn't support title animation.");
375 return E_INVALID_OPERATION;
378 SysTryReturnResult(NID_UI_CTRL, (GetWaitingAnimationStatus(animationPos) != ANIMATION_STOPPED), E_INVALID_OPERATION,
379 "[E_INVALID_OPERATION] The animation is not playing currently.");
381 ToolbarAnimationPosition toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
383 if (animationPos == HEADER_ANIMATION_POSITION_TITLE)
385 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
387 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_LEFT)
389 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_LEFT;
391 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_RIGHT)
393 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_RIGHT;
396 return GetCore().StopWaitingAnimation(toolbarAnimPos);
400 _HeaderImpl::PauseWaitingAnimation(HeaderAnimationPosition animationPos)
402 if ((__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_TITLE_BUTTON || __style == HEADER_STYLE_BUTTON || __style == HEADER_STYLE_TAB)
403 && animationPos == HEADER_ANIMATION_POSITION_TITLE)
405 SysLogException(NID_UI_CTRL, E_INVALID_OPERATION, "[E_INVALID_OPERATION] Unable to pause the waiting animation because the current style does not support it.");
406 return E_INVALID_OPERATION;
409 SysTryReturnResult(NID_UI_CTRL, (GetWaitingAnimationStatus(animationPos) != ANIMATION_STOPPED), E_INVALID_OPERATION,
410 "[E_INVALID_OPERATION] No waiting animation is in progress at the specified position.");
412 SysTryReturnResult(NID_UI_CTRL,
413 (animationPos >= HEADER_ANIMATION_POSITION_TITLE && animationPos <= HEADER_ANIMATION_POSITION_BUTTON_RIGHT),
414 E_INVALID_ARG, "[E_INVALID_ARG] The animationPos is invalid");
416 ToolbarAnimationPosition toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
418 if (animationPos == HEADER_ANIMATION_POSITION_TITLE)
420 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
422 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_LEFT)
424 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_LEFT;
426 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_RIGHT)
428 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_RIGHT;
431 return GetCore().PauseWaitingAnimation(toolbarAnimPos);
435 _HeaderImpl::GetWaitingAnimationStatus(HeaderAnimationPosition animationPos) const
437 ToolbarAnimationPosition toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
439 if (HEADER_ANIMATION_POSITION_TITLE == animationPos)
441 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_TITLE;
443 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_LEFT)
445 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_LEFT;
447 else if (animationPos == HEADER_ANIMATION_POSITION_BUTTON_RIGHT)
449 toolbarAnimPos = TOOLBAR_ANIMATION_POSITION_BUTTON_RIGHT;
452 return GetCore().GetWaitingAnimationStatus(toolbarAnimPos);
456 _HeaderImpl::RemoveAllButtons(void)
458 return GetCore().RemoveAllButtons();
462 _HeaderImpl::RemoveAllItems(void)
464 return GetCore().RemoveAllItems();
468 _HeaderImpl::RemoveItemAt(int itemIndex)
470 int count = GetItemCount();
472 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex <= count), E_OUT_OF_RANGE,
473 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
476 return GetCore().RemoveItemAt(itemIndex);
480 _HeaderImpl::RemoveButtonAt(ButtonPosition position)
482 if (BUTTON_POSITION_LEFT == position)
484 return GetCore().RemoveButtonAt(LEFT_BUTTON);
486 else if (BUTTON_POSITION_RIGHT == position)
488 return GetCore().RemoveButtonAt(RIGHT_BUTTON);
495 _HeaderImpl::SetBackgroundBitmap(const Bitmap* pBitmap)
497 return GetCore().SetBackgroundBitmap(*pBitmap);
501 _HeaderImpl::SetButton(ButtonPosition position, const ButtonItem& button)
503 SysTryReturnResult(NID_UI_CTRL, (!(__style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE)), E_INVALID_OPERATION,
504 "[E_INVALID_OPERATION] This operation is not supported.");
506 SysTryReturnResult(NID_UI_CTRL, (button.GetActionId() >= HEADER_ACTION_ID_MIN && button.GetActionId() <= HEADER_ACTION_ID_MAX),
507 E_INVALID_ARG, "[E_INVALID_ARG] The actionId is invalid.");
509 int count = GetItemCount();
511 SysTryReturnResult(NID_UI_CTRL, (count <= HEADER_MAX_ITEM_COUNT_WITH_BUTTON), E_SYSTEM,
512 "[E_SYSTEM] If the item count is larger then 4, no button can be set.");
514 SysTryReturnResult(NID_UI_CTRL, (position == BUTTON_POSITION_LEFT || position == BUTTON_POSITION_RIGHT), E_INVALID_ARG,
515 "[E_INVALID_ARG] The position is invalid.");
517 _Button* pButton = ConvertButtonItem(button);
519 if (position == BUTTON_POSITION_LEFT)
521 return GetCore().SetButton(LEFT_BUTTON, pButton);
523 else if (position == BUTTON_POSITION_RIGHT)
525 return GetCore().SetButton(RIGHT_BUTTON, pButton);
532 _HeaderImpl::SetButtonColor(ButtonItemStatus status, const Color& color)
534 _ButtonStatus tempStatus = ConvertButtonStatus(status);
536 return GetCore().SetButtonColor(tempStatus, color);
540 _HeaderImpl::SetButtonEnabled(ButtonPosition position, bool enable)
542 bool isButtonSet = IsButtonSet(position);
544 SysTryReturnResult(NID_UI_CTRL, isButtonSet, E_INVALID_OPERATION,
545 "[E_INVALID_OPERATION] No button item is set at the specified position.");
547 if (position == BUTTON_POSITION_LEFT)
549 GetCore().SetButtonEnabled(LEFT_BUTTON, enable);
551 else if (position == BUTTON_POSITION_RIGHT)
553 GetCore().SetButtonEnabled(RIGHT_BUTTON, enable);
560 _HeaderImpl::SetButtonTextColor(ButtonItemStatus status, const Color& color)
562 _ButtonStatus tempStatus = ConvertButtonStatus(status);
564 return GetCore().SetButtonTextColor(tempStatus, color);
568 _HeaderImpl::SetButtonBadgeIcon(ButtonPosition position, const Bitmap* pBadgeIcon)
570 SysTryReturnResult(NID_UI_CTRL, (position == BUTTON_POSITION_LEFT || position == BUTTON_POSITION_RIGHT), E_SYSTEM,
571 "[E_SYSTEM] The position is invalid.");
573 bool isButtonSet = IsButtonSet(position);
575 SysTryReturnResult(NID_UI_CTRL, isButtonSet, E_INVALID_STATE,
576 "[E_INVALID_STATE] No button item is set at the specified position.");
578 if (position == BUTTON_POSITION_LEFT)
580 return GetCore().SetButtonBadgeIcon(LEFT_BUTTON, pBadgeIcon);
584 return GetCore().SetButtonBadgeIcon(RIGHT_BUTTON, pBadgeIcon);
589 _HeaderImpl::SetButtonNumberedBadgeIcon(ButtonPosition position, int number)
591 SysTryReturnResult(NID_UI_CTRL, (position == BUTTON_POSITION_LEFT || position == BUTTON_POSITION_RIGHT), E_SYSTEM,
592 "[E_SYSTEM] The position is invalid.");
594 bool isButtonSet = IsButtonSet(position);
596 SysTryReturnResult(NID_UI_CTRL, isButtonSet, E_INVALID_STATE,
597 "[E_INVALID_STATE] No button item is set at the specified position.");
599 SysTryReturnResult(NID_UI_CTRL, (0 <= number && number <= HEADER_NUMBERD_BADGE_ICON_NUMBER_MAX), E_INVALID_ARG,
600 "[E_INVALID_ARG] The number is invalid.");
602 if (position == BUTTON_POSITION_LEFT)
604 return GetCore().SetButtonNumberedBadgeIcon(LEFT_BUTTON, number);
608 return GetCore().SetButtonNumberedBadgeIcon(RIGHT_BUTTON, number);
613 _HeaderImpl::SetItemAt(int itemIndex, const HeaderItem& item)
615 SysTryReturnResult(NID_UI_CTRL, (item.GetActionId() != -1), E_INVALID_ARG, "[E_INVALID_ARG] The HeaderItem isn't constructed.");
617 if (item.GetActionId() < HEADER_ACTION_ID_MIN || item.GetActionId() > HEADER_ACTION_ID_MAX)
619 SysLogException(NID_UI_CTRL, E_INVALID_ARG, "[E_INVALID_ARG] The actionId is invalid.");
620 return E_INVALID_ARG;
623 int count = GetItemCount();
625 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex <= count && __style != HEADER_STYLE_TITLE), E_OUT_OF_RANGE,
626 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
628 _Button* pButton = ConvertHeaderItem(item);
630 if (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
631 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE)
633 pButton->SetButtonStyle(_BUTTON_STYLE_SEGMENT);
636 return GetCore().SetItemAt(itemIndex, pButton);
640 _HeaderImpl::SetItemBadgeIcon(int itemIndex, const Bitmap* pBadgeIcon)
642 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
643 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE || __style == HEADER_STYLE_BUTTON),
644 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to set the badge icon because the current style does not support it.");
646 int count = GetItemCount();
648 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
649 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
651 return GetCore().SetItemBadgeIcon(itemIndex, pBadgeIcon);
655 _HeaderImpl::SetItemNumberedBadgeIcon(int itemIndex, int number)
657 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
658 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE || __style == HEADER_STYLE_BUTTON),
659 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to set the badge icon because the current style does not support it.");
661 SysTryReturnResult(NID_UI_CTRL, (0 <= number && number <= HEADER_NUMBERD_BADGE_ICON_NUMBER_MAX), E_INVALID_ARG,
662 "[E_INVALID_ARG] The number is invalid.");
664 int count = GetItemCount();
666 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
667 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
669 return GetCore().SetItemNumberedBadgeIcon(itemIndex, number);
673 _HeaderImpl::SetItemColor(HeaderItemStatus status, const Color& color)
675 _ButtonStatus tempStatus = ConvertButtonStatus(status);
677 return GetCore().SetItemColor(tempStatus, color);
681 _HeaderImpl::SetItemEnabled(int itemIndex, bool enable)
683 int count = GetItemCount();
685 SysTryReturnResult(NID_UI_CTRL, (count != 0), E_SYSTEM, "[E_SYSTEM] No item to be enabled exists.")
687 SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
688 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
690 // Selected item cannot be disabled.
691 int selectedItemIndex = GetSelectedItemIndex();
693 if (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE)
695 if ((selectedItemIndex == itemIndex && enable == false) || (selectedItemIndex == -1 && itemIndex == 0 && enable == false))
697 SysLogException(NID_UI_CTRL, E_INVALID_OPERATION, "[E_INVALID_OPERATION] The Selected item cannot be disabled.");
698 return E_INVALID_OPERATION;
702 return GetCore().SetItemEnabled(itemIndex, enable);
706 _HeaderImpl::SetItemTextColor(HeaderItemStatus status, const Color& color)
708 _ButtonStatus tempStatus = ConvertButtonStatus(status);
710 return GetCore().SetItemTextColor(tempStatus, color);
714 _HeaderImpl::SetItemSelected(int itemIndex)
716 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
717 || __style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE),
718 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to select the item because the current style does not support it.");
720 int count = GetItemCount();
722 SysTryReturnResult(NID_UI_CTRL, (count != 0 && itemIndex >= 0 && itemIndex < count), E_OUT_OF_RANGE,
723 "[E_OUT_OF_RANGE] The itemIndex is out of range.");
725 // Disabled items can not be selected.
726 HeaderItemStatus status;
728 result r = GetItemStatus(itemIndex, status);
730 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "[E_INVALID_STATE] Failed to get item status.");
732 SysTryReturnResult(NID_UI_CTRL, (status != HEADER_ITEM_STATUS_DISABLED), E_INVALID_OPERATION,
733 "[E_INVALID_OPERATION] The disabled item can not be selected.");
735 //__calledBySetItemSelected = true;
737 return GetCore().SetItemSelected(itemIndex);
741 _HeaderImpl::SetColor(const Color& color)
743 return GetCore().SetColor(color);
747 _HeaderImpl::SetStyle(HeaderStyle style)
754 return GetCore().SetStyle(ConvertHeaderStyle(__style));
758 _HeaderImpl::SetTitleIcon(const Bitmap* pIcon)
760 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
761 || __style == HEADER_STYLE_TAB_WITH_TITLE),
762 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to set the title icon because the current style does not support it.");
764 return GetCore().SetTitleIcon(*pIcon);
768 _HeaderImpl::SetTitleText(const String& text)
770 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
771 || __style == HEADER_STYLE_TAB_WITH_TITLE),
772 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to set the title icon because the current style does not support it.");
774 return GetCore().SetTitleText(text);
778 _HeaderImpl::SetTitleTextColor(const Color& color)
780 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE
781 || __style == HEADER_STYLE_TAB_WITH_TITLE),
782 E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] Unable to set the title icon because the current style does not support it.");
784 return GetCore().SetTitleTextColor(color);
788 _HeaderImpl::SetTransparent(bool transparent)
790 return GetCore().SetTransparent(transparent);
794 _HeaderImpl::SetDescriptionText(const String& text)
796 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE), E_UNSUPPORTED_OPERATION,
797 "[E_UNSUPPORTED_OPERATION] Unable to set the description text icon because the current style does not support it.");
799 return GetCore().SetDescriptionText(text);
803 _HeaderImpl::SetDescriptionTextColor(const Color& color)
805 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TITLE), E_UNSUPPORTED_OPERATION,
806 "[E_UNSUPPORTED_OPERATION] Unable to set the description text icon because the current style does not support it.");
808 return GetCore().SetDescriptionTextColor(color);
812 _HeaderImpl::IsTabEditModeEnabled(void) const
814 return GetCore().IsTabEditModeEnabled();
818 _HeaderImpl::SetTabEditModeEnabled(bool enable)
820 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE), E_UNSUPPORTED_OPERATION,
821 "[E_UNSUPPORTED_OPERATION] This operation is only for HEADER_STYLE_TAB.");
823 return GetCore().SetTabEditModeEnabled(enable);
827 _HeaderImpl::SetBackButton(void)
829 SysTryReturnResult(NID_UI_CTRL, (__style == HEADER_STYLE_BUTTON), E_UNSUPPORTED_OPERATION,
830 "[E_UNSUPPORTED_OPERATION] The current Header style does not support the operation.");
832 _Button* pButton = _Button::CreateButtonN();
834 int buttonHeight = 0;
837 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_HEIGHT, GetCore().GetOrientation(), buttonHeight);
838 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_WIDTH, GetCore().GetOrientation(), buttonWidth);
840 pButton->SetSize(Dimension(buttonWidth, buttonHeight));
842 Bitmap* pBackgroundBaseBitmap = null;
843 Bitmap* pPressedBitmap = null;
844 Bitmap* pColorReplacedBitmap = null;
845 Bitmap* pIconBaseBitmap = null;
846 Bitmap* pIconBaseEffectBitmap = null;
848 GET_BITMAP_CONFIG_N(FOOTER::BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pBackgroundBaseBitmap);
849 GET_BITMAP_CONFIG_N(FOOTER::BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pPressedBitmap);
850 GET_BITMAP_CONFIG_N(FOOTER::BACK_ICON_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pIconBaseBitmap);
851 GET_BITMAP_CONFIG_N(FOOTER::BACK_ICON_EFFECT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pIconBaseEffectBitmap);
853 if (pBackgroundBaseBitmap)
855 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundBaseBitmap, Color::GetColor(COLOR_ID_MAGENTA),
856 GetCore().GetButtonColor(_BUTTON_STATUS_NORMAL));
857 pButton->SetBackgroundBitmap(_BUTTON_STATUS_NORMAL, *pColorReplacedBitmap);
858 delete pColorReplacedBitmap;
860 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundBaseBitmap, Color::GetColor(COLOR_ID_MAGENTA),
861 GetCore().GetButtonColor(_BUTTON_STATUS_HIGHLIGHTED));
862 pButton->SetBackgroundBitmap(_BUTTON_STATUS_HIGHLIGHTED, *pColorReplacedBitmap);
863 delete pColorReplacedBitmap;
865 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundBaseBitmap, Color::GetColor(COLOR_ID_MAGENTA),
866 GetCore().GetButtonColor(_BUTTON_STATUS_DISABLED));
867 pButton->SetBackgroundBitmap(_BUTTON_STATUS_DISABLED, *pColorReplacedBitmap);
868 delete pColorReplacedBitmap;
870 delete pBackgroundBaseBitmap;
873 //# if (pBackgroundEffectBitmap)
875 //# pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_NORMAL, *pBackgroundEffectBitmap);
876 //# pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_HIGHLIGHTED, *pBackgroundEffectBitmap);
877 //# pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_DISABLED, *pBackgroundEffectBitmap);
878 //# delete pBackgroundEffectBitmap;
883 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA),
884 GetCore().GetButtonColor(_BUTTON_STATUS_PRESSED));
885 pButton->SetBackgroundBitmap(_BUTTON_STATUS_PRESSED, *pColorReplacedBitmap);
886 delete pColorReplacedBitmap;
888 delete pPressedBitmap;
891 //# if (pPressedEffectBitmap)
893 //# pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_PRESSED, *pPressedEffectBitmap);
894 //# delete pPressedEffectBitmap;
903 GET_COLOR_CONFIG(FOOTER::BACK_ICON_NORMAL, normalColor);
904 GET_COLOR_CONFIG(FOOTER::BACK_ICON_PRESSED, pressedColor);
905 GET_COLOR_CONFIG(FOOTER::BACK_ICON_DISABLED, disabledColor);
909 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize);
911 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pIconBaseBitmap, Color::GetColor(COLOR_ID_MAGENTA), normalColor);
912 if (pColorReplacedBitmap)
914 pColorReplacedBitmap->Scale(Dimension(iconSize, iconSize));
916 pButton->SetBitmap(_BUTTON_STATUS_NORMAL,
917 Point((buttonWidth - iconSize) / 2, (buttonHeight - iconSize) / 2), *pColorReplacedBitmap);
919 delete pColorReplacedBitmap;
922 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pIconBaseBitmap, Color::GetColor(COLOR_ID_MAGENTA), pressedColor);
923 if (pColorReplacedBitmap)
925 pColorReplacedBitmap->Scale(Dimension(iconSize, iconSize));
927 pButton->SetBitmap(_BUTTON_STATUS_PRESSED,
928 Point((buttonWidth - iconSize) / 2, (buttonHeight - iconSize) / 2), *pColorReplacedBitmap);
929 delete pColorReplacedBitmap;
932 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pIconBaseBitmap, Color::GetColor(COLOR_ID_MAGENTA), disabledColor);
933 if (pColorReplacedBitmap)
935 pColorReplacedBitmap->Scale(Dimension(iconSize, iconSize));
937 pButton->SetBitmap(_BUTTON_STATUS_DISABLED,
938 Point((buttonWidth - iconSize) / 2, (buttonHeight - iconSize) / 2), *pColorReplacedBitmap);
939 delete pColorReplacedBitmap;
942 delete pIconBaseBitmap;
945 if (pIconBaseEffectBitmap)
947 pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_NORMAL, *pIconBaseEffectBitmap);
948 pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_PRESSED, *pIconBaseEffectBitmap);
949 pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_SELECTED, *pIconBaseEffectBitmap);
950 pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_HIGHLIGHTED, *pIconBaseEffectBitmap);
951 pButton->SetBackgroundEffectBitmap(_BUTTON_STATUS_DISABLED, *pIconBaseEffectBitmap);
953 delete pIconBaseEffectBitmap;
956 return GetCore().SetButton(BACK_BUTTON, pButton);
960 _HeaderImpl::IsBackButtonSet(void) const
962 return GetCore().IsButtonSet(BACK_BUTTON);
966 _HeaderImpl::RemoveBackButton(void)
968 GetCore().RemoveButtonAt(BACK_BUTTON);
974 _HeaderImpl::SetBackButtonEnabled(bool enable)
976 return GetCore().SetButtonEnabled(BACK_BUTTON, enable);
980 _HeaderImpl::GetBackButtonStatus(void) const
982 SysTryReturn(NID_UI_CTRL, (IsBackButtonSet() == true), BUTTON_ITEM_STATUS_NORMAL, E_INVALID_OPERATION,
983 "[E_INVALID_OPERATION] A Back button doesn't exist");
985 _ButtonStatus buttonStatus;
987 buttonStatus = GetCore().GetButtonStatus(BACK_BUTTON);
989 return ConvertButtonItemStatus(buttonStatus);
993 _HeaderImpl::GetButtonBounds(ButtonPosition position) const
995 bool isButtonSet = IsButtonSet(position);
997 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.");
1001 if (position == BUTTON_POSITION_LEFT)
1003 rect = GetCore().GetButtonBounds(LEFT_BUTTON);
1005 else if (position == BUTTON_POSITION_RIGHT)
1007 rect = GetCore().GetButtonBounds(RIGHT_BUTTON);
1014 _HeaderImpl::AddActionEventListener(IActionEventListener& listener)
1016 if (__pPublicActionEvent == null)
1018 __pPublicActionEvent = _PublicActionEvent::CreateInstanceN(GetPublic());
1020 if (IsFailed(GetLastResult()))
1022 SysLogException(NID_UI_CTRL, E_SYSTEM, "[E_SYSTEM] System error occurred.");
1023 delete __pPublicActionEvent;
1029 __pPublicActionEvent->AddListener(listener);
1031 GetCore().AddActionEventListener(*this);
1037 _HeaderImpl::RemoveActionEventListener(IActionEventListener& listener)
1039 SysTryReturnVoidResult(NID_UI_CTRL, __pPublicActionEvent, E_INVALID_STATE, "[E_INVALID_STATE] This instance isn't constructed.");
1041 // Todo : check fail case of RemoveListener
1042 __pPublicActionEvent->RemoveListener(listener);
1044 GetCore().RemoveActionEventListener(*this);
1050 _HeaderImpl::OnActionPerformed(const _Control& source, int actionId)
1052 //if (__calledBySetItemSelected)
1054 // __calledBySetItemSelected = false;
1058 if (GetCore().IsInitialDraw() == true && GetCore().GetSelectedItemIndex() == 0)
1063 if (__pPublicActionEvent != null)
1065 __pPublicActionEvent->Fire(*_PublicActionEvent::CreateActionEventArgN(actionId));
1072 _HeaderImpl::CheckItemValidate(const HeaderItem& item)
1074 result r = E_SUCCESS;
1076 SysTryReturnResult(NID_UI_CTRL, (item.GetActionId() != -1), E_INVALID_ARG, "[E_INVALID_ARG] The HeaderItem isn't constructed.");
1078 int count = GetItemCount();
1080 if (__style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE)
1082 SysTryReturnResult(NID_UI_CTRL, (count < HEADER_TAB_STYLE_MAX_ITEM_COUNT), E_MAX_EXCEEDED,
1083 "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit.");
1087 SysTryReturnResult(NID_UI_CTRL, (count < HEADER_ITEM_MAX_COUNT), E_MAX_EXCEEDED,
1088 "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit.");
1091 if ((HEADER_STYLE_TITLE_BUTTON == __style) && (HEADER_TITLE_BUTTON_STYLE_MAX_ITEM_COUNT <= count))
1093 SysLogException(NID_UI_CTRL, E_MAX_EXCEEDED, "[E_MAX_EXCEEDED] The number of items exceeded the maximum limit.");
1098 if ((count >= HEADER_MAX_ITEM_COUNT_WITH_BUTTON) &&
1099 (true == IsButtonSet(BUTTON_POSITION_LEFT) || true == IsButtonSet(BUTTON_POSITION_RIGHT)))
1101 SysLogException(NID_UI_CTRL, E_MAX_EXCEEDED, "[E_MAX_EXCEEDED] The number of items with button have exceeded the maximum limit.");
1106 if (item.GetActionId() < HEADER_ACTION_ID_MIN || item.GetActionId() > HEADER_ACTION_ID_MAX)
1108 SysLogException(NID_UI_CTRL, E_INVALID_ARG, "[E_INVALID_ARG] The actionId is invalid.");
1120 _HeaderImpl::ConvertHeaderStyle(HeaderStyle style)
1122 ToolbarStyle viewStyle = TOOLBAR_TITLE;
1124 if (style == HEADER_STYLE_TITLE || style == HEADER_STYLE_TITLE_BUTTON)
1126 viewStyle = TOOLBAR_TITLE;
1128 else if (style == HEADER_STYLE_SEGMENTED)
1130 viewStyle = TOOLBAR_HEADER_SEGMENTED;
1132 else if (style == HEADER_STYLE_SEGMENTED_WITH_TITLE)
1134 viewStyle = TOOLBAR_HEADER_SEGMENTED_WITH_TITLE;
1136 else if (style == HEADER_STYLE_TAB)
1138 viewStyle = TOOLBAR_TAB;
1140 else if (style == HEADER_STYLE_TAB_WITH_TITLE)
1142 viewStyle = TOOLBAR_TAB_WITH_TITLE;
1144 else if (style == HEADER_STYLE_BUTTON)
1146 viewStyle = TOOLBAR_TEXT;
1153 _HeaderImpl::ConvertButtonItem(const ButtonItem& buttonItem)
1155 _Button* pButton = _Button::CreateButtonN();
1157 int buttonItemWidth = 0;
1158 int buttonItemHeight = 0;
1160 if (__style == HEADER_STYLE_BUTTON)
1162 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_WIDTH, GetCore().GetOrientation(), buttonItemWidth);
1163 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_HEIGHT, GetCore().GetOrientation(), buttonItemHeight);
1167 if (__style == HEADER_STYLE_TITLE || __style == HEADER_STYLE_TITLE_BUTTON)
1169 if (buttonItem.GetText() != L"")
1171 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_WIDTH_WITH_TEXT, GetCore().GetOrientation(), buttonItemWidth);
1175 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_WIDTH, GetCore().GetOrientation(), buttonItemWidth);
1178 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_HEIGHT, GetCore().GetOrientation(), buttonItemHeight);
1180 else // Segmented or SegmentedTitle
1182 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_WIDTH_OF_SEGMENTED, GetCore().GetOrientation(), buttonItemWidth);
1183 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_HEIGHT_OF_SEGMENTED, GetCore().GetOrientation(), buttonItemHeight);
1187 pButton->SetMargin(0, 0);
1188 pButton->SetSize(Dimension(buttonItemWidth, buttonItemHeight));
1190 pButton->SetActionId(buttonItem.GetActionId());
1192 pButton->SetText(buttonItem.GetText());
1194 pButton->SetTextMaxLine(2);
1196 result r = E_SUCCESS;
1200 if (__style == HEADER_STYLE_BUTTON)
1202 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
1206 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
1211 pButton->SetTextSize(fontSize, FONT_STYLE_BOLD);
1216 if (__style == HEADER_STYLE_BUTTON)
1218 GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize);
1222 if (__style == HEADER_STYLE_SEGMENTED_WITH_TITLE)
1224 GET_SHAPE_CONFIG(HEADER::TAB_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize);
1228 GET_SHAPE_CONFIG(HEADER::BUTTON_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize);
1232 Bitmap* pIconBitmap = null;
1233 pIconBitmap = const_cast<Bitmap*>(buttonItem.__pImpl->GetIcon(BUTTON_ITEM_STATUS_NORMAL));
1237 pIconBitmap->Scale(Dimension(iconSize, iconSize));
1239 pButton->SetBitmap(_BUTTON_STATUS_NORMAL,
1240 Point((buttonItemWidth - iconSize) / 2, (buttonItemHeight - iconSize) / 2), *pIconBitmap);
1241 pButton->SetBitmap(_BUTTON_STATUS_PRESSED,
1242 Point((buttonItemWidth - iconSize) / 2, (buttonItemHeight - iconSize) / 2), *pIconBitmap);
1243 pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED,
1244 Point((buttonItemWidth - iconSize) / 2, (buttonItemHeight - iconSize) / 2), *pIconBitmap);
1245 pButton->SetBitmap(_BUTTON_STATUS_DISABLED,
1246 Point((buttonItemWidth - iconSize) / 2, (buttonItemHeight - iconSize) / 2), *pIconBitmap);
1249 pIconBitmap = const_cast<Bitmap*>(buttonItem.__pImpl->GetIcon(BUTTON_ITEM_STATUS_PRESSED));
1253 pIconBitmap->Scale(Dimension(iconSize, iconSize));
1255 pButton->SetBitmap(_BUTTON_STATUS_PRESSED,
1256 Point((buttonItemWidth - iconSize) / 2, (buttonItemHeight - iconSize) / 2), *pIconBitmap);
1259 pIconBitmap = const_cast<Bitmap*>(buttonItem.__pImpl->GetIcon(BUTTON_ITEM_STATUS_HIGHLIGHTED));
1263 pIconBitmap->Scale(Dimension(iconSize, iconSize));
1265 pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED,
1266 Point((buttonItemWidth - iconSize) / 2, (buttonItemHeight - iconSize) / 2), *pIconBitmap);
1269 pIconBitmap = const_cast<Bitmap*>(buttonItem.__pImpl->GetIcon(BUTTON_ITEM_STATUS_DISABLED));
1273 pIconBitmap->Scale(Dimension(iconSize, iconSize));
1275 pButton->SetBitmap(_BUTTON_STATUS_DISABLED,
1276 Point((buttonItemWidth - iconSize) / 2, (buttonItemHeight - iconSize) / 2), *pIconBitmap);
1279 Bitmap* pNormalBackgroundBitmap = null;
1280 Bitmap* pColorReplacedBitmap = null;
1282 GET_BITMAP_CONFIG_N(HEADER::BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pNormalBackgroundBitmap);
1284 if (pNormalBackgroundBitmap)
1286 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pNormalBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1287 GetCore().GetButtonColor(_BUTTON_STATUS_NORMAL));
1289 if (GetCore().GetButtonColor(_BUTTON_STATUS_NORMAL).GetAlpha() != 0xFF)
1291 pColorReplacedBitmap->SetAlphaConstant(GetCore().GetButtonColor(_BUTTON_STATUS_NORMAL).GetAlpha());
1294 pButton->SetBackgroundBitmap(_BUTTON_STATUS_NORMAL, *pColorReplacedBitmap);
1295 delete pColorReplacedBitmap;
1298 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pNormalBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1299 GetCore().GetButtonColor(_BUTTON_STATUS_PRESSED));
1301 if (GetCore().GetButtonColor(_BUTTON_STATUS_PRESSED).GetAlpha() != 0xFF)
1303 pColorReplacedBitmap->SetAlphaConstant(GetCore().GetButtonColor(_BUTTON_STATUS_PRESSED).GetAlpha());
1306 pButton->SetBackgroundBitmap(_BUTTON_STATUS_PRESSED, *pColorReplacedBitmap);
1307 delete pColorReplacedBitmap;
1310 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pNormalBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1311 GetCore().GetButtonColor(_BUTTON_STATUS_HIGHLIGHTED));
1313 if (GetCore().GetButtonColor(_BUTTON_STATUS_HIGHLIGHTED).GetAlpha() != 0xFF)
1315 pColorReplacedBitmap->SetAlphaConstant(GetCore().GetButtonColor(_BUTTON_STATUS_HIGHLIGHTED).GetAlpha());
1318 pButton->SetBackgroundBitmap(_BUTTON_STATUS_HIGHLIGHTED, *pColorReplacedBitmap);
1319 delete pColorReplacedBitmap;
1322 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pNormalBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1323 GetCore().GetButtonColor(_BUTTON_STATUS_DISABLED));
1325 if (GetCore().GetButtonColor(_BUTTON_STATUS_DISABLED).GetAlpha() != 0xFF)
1327 pColorReplacedBitmap->SetAlphaConstant(GetCore().GetButtonColor(_BUTTON_STATUS_DISABLED).GetAlpha());
1330 pButton->SetBackgroundBitmap(_BUTTON_STATUS_DISABLED, *pColorReplacedBitmap);
1332 delete pColorReplacedBitmap;
1334 delete pNormalBackgroundBitmap;
1337 if (buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL) != null)
1339 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_NORMAL,
1340 *buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL));
1342 if (buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED) != null)
1344 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_PRESSED,
1345 *buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED));
1347 if (buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_HIGHLIGHTED) != null)
1349 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_HIGHLIGHTED,
1350 *buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_HIGHLIGHTED));
1352 if (buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_DISABLED) != null)
1354 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_DISABLED,
1355 *buttonItem.__pImpl->GetBackgroundBitmap(BUTTON_ITEM_STATUS_DISABLED));
1362 _HeaderImpl::ConvertHeaderItem(const HeaderItem& headerItem)
1364 _Button* pButton = _Button::CreateButtonN();
1366 int minItemLength = 0;
1368 GET_SHAPE_CONFIG(HEADER::HEADER_ITEM_WIDTH_1_MIN, GetCore().GetOrientation(), minItemLength);
1370 pButton->SetSize(Dimension(minItemLength, minItemLength));
1372 pButton->SetActionId(headerItem.GetActionId());
1374 pButton->SetText(headerItem.GetText());
1376 pButton->SetTextMaxLine(2);
1379 result r = E_SUCCESS;
1381 if (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE || __style == HEADER_STYLE_TITLE_BUTTON)
1383 r = GET_SHAPE_CONFIG(HEADER::SEGMENTED_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
1385 else if (__style == HEADER_STYLE_TAB || __style == HEADER_STYLE_TAB_WITH_TITLE)
1387 r = GET_SHAPE_CONFIG(HEADER::TAB_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
1389 else // __style == HEADER_STYLE_BUTTON
1391 r = GET_SHAPE_CONFIG(FOOTER::FOOTER_ITEM_FONT_SIZE, GetCore().GetOrientation(), fontSize);
1396 pButton->SetTextSize(fontSize, FONT_STYLE_BOLD);
1401 if (__style == HEADER_STYLE_SEGMENTED || __style == HEADER_STYLE_SEGMENTED_WITH_TITLE || __style == HEADER_STYLE_TAB_WITH_TITLE
1402 || __style == HEADER_STYLE_TAB)
1404 if (headerItem.GetText() != L"")
1406 GET_SHAPE_CONFIG(HEADER::TAB_ITEM_ICON_SIZE_WITH_TEXT, GetCore().GetOrientation(), iconSize);
1410 GET_SHAPE_CONFIG(HEADER::TAB_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize);
1413 Bitmap* pSelectedBitmap = null;
1414 Bitmap* pColorReplacedBitmap = null;
1415 Color selectedBitmapColor;
1417 GET_BITMAP_CONFIG_N(HEADER::TAB_ITEM_BG_SELECTED, BITMAP_PIXEL_FORMAT_ARGB8888, pSelectedBitmap);
1418 GET_COLOR_CONFIG(HEADER::SEGMENTED_ITEM_TEXT_PRESSED, selectedBitmapColor);
1420 pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), selectedBitmapColor);
1422 if (pColorReplacedBitmap)
1424 if (__style == HEADER_STYLE_SEGMENTED_WITH_TITLE || __style == HEADER_STYLE_TAB_WITH_TITLE)
1426 pButton->SetToolbarSelectedBitmap(*pColorReplacedBitmap, true);
1430 pButton->SetToolbarSelectedBitmap(*pColorReplacedBitmap, false);
1433 delete pColorReplacedBitmap;
1435 delete pSelectedBitmap;
1438 else // __style == HEADER_STYLE_BUTTON
1440 if (headerItem.GetText() != L"")
1442 GET_SHAPE_CONFIG(FOOTER::FOOTER_ITEM_BUTTON_STYLE_ICON_SIZE_WITH_TEXT, GetCore().GetOrientation(), iconSize);
1446 GET_SHAPE_CONFIG(FOOTER::FOOTER_ITEM_BUTTON_STYLE_ICON_SIZE, GetCore().GetOrientation(), iconSize);
1450 Bitmap* pIconBitmap = null;
1452 pIconBitmap = const_cast<Bitmap*>(headerItem.__pImpl->GetIcon(HEADER_ITEM_STATUS_NORMAL));
1455 pIconBitmap->Scale(Dimension(iconSize, iconSize));
1457 pButton->SetBitmap(_BUTTON_STATUS_NORMAL, Point(0, 0), *pIconBitmap);
1458 pButton->SetBitmap(_BUTTON_STATUS_PRESSED, Point(0, 0), *pIconBitmap);
1459 pButton->SetBitmap(_BUTTON_STATUS_SELECTED, Point(0, 0), *pIconBitmap);
1460 pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED, Point(0, 0), *pIconBitmap);
1461 pButton->SetBitmap(_BUTTON_STATUS_DISABLED, Point(0, 0), *pIconBitmap);
1464 pIconBitmap = const_cast<Bitmap*>(headerItem.__pImpl->GetIcon(HEADER_ITEM_STATUS_PRESSED));
1468 pIconBitmap->Scale(Dimension(iconSize, iconSize));
1470 pButton->SetBitmap(_BUTTON_STATUS_PRESSED, Point(0, 0), *pIconBitmap);
1473 pIconBitmap = const_cast<Bitmap*>(headerItem.__pImpl->GetIcon(HEADER_ITEM_STATUS_SELECTED));
1477 pIconBitmap->Scale(Dimension(iconSize, iconSize));
1479 pButton->SetBitmap(_BUTTON_STATUS_SELECTED, Point(0, 0), *pIconBitmap);
1482 pIconBitmap = const_cast<Bitmap*>(headerItem.__pImpl->GetIcon(HEADER_ITEM_STATUS_HIGHLIGHTED));
1486 pIconBitmap->Scale(Dimension(iconSize, iconSize));
1488 pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED, Point(0, 0), *pIconBitmap);
1491 pIconBitmap = const_cast<Bitmap*>(headerItem.__pImpl->GetIcon(HEADER_ITEM_STATUS_DISABLED));
1495 pIconBitmap->Scale(Dimension(iconSize, iconSize));
1497 pButton->SetBitmap(_BUTTON_STATUS_DISABLED, Point(0, 0), *pIconBitmap);
1500 if (headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_NORMAL) != null)
1502 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_NORMAL,
1503 *headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_NORMAL));
1505 if (headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_PRESSED) != null)
1507 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_PRESSED,
1508 *headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_PRESSED));
1510 if (headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_SELECTED) != null)
1512 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_SELECTED,
1513 *headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_SELECTED));
1515 if (headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_HIGHLIGHTED) != null)
1517 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_HIGHLIGHTED,
1518 *headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_HIGHLIGHTED));
1520 if (headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_DISABLED) != null)
1522 pButton->SetToolbarItemBackgroundBitmap(_BUTTON_STATUS_DISABLED,
1523 *headerItem.__pImpl->GetBackgroundBitmap(HEADER_ITEM_STATUS_DISABLED));
1530 _HeaderImpl::ConvertButtonItemStatus(_ButtonStatus status) const
1534 case _BUTTON_STATUS_NORMAL:
1535 return BUTTON_ITEM_STATUS_NORMAL;
1538 case _BUTTON_STATUS_DISABLED:
1539 return BUTTON_ITEM_STATUS_DISABLED;
1542 case _BUTTON_STATUS_PRESSED:
1543 return BUTTON_ITEM_STATUS_PRESSED;
1546 case _BUTTON_STATUS_HIGHLIGHTED:
1547 return BUTTON_ITEM_STATUS_HIGHLIGHTED;
1551 return BUTTON_ITEM_STATUS_DISABLED;
1557 _HeaderImpl::ConvertHeaderItemStatus(_ButtonStatus status) const
1561 case _BUTTON_STATUS_NORMAL:
1562 return HEADER_ITEM_STATUS_NORMAL;
1565 case _BUTTON_STATUS_DISABLED:
1566 return HEADER_ITEM_STATUS_DISABLED;
1569 case _BUTTON_STATUS_PRESSED:
1570 return HEADER_ITEM_STATUS_PRESSED;
1573 case _BUTTON_STATUS_HIGHLIGHTED:
1574 return HEADER_ITEM_STATUS_HIGHLIGHTED;
1577 case _BUTTON_STATUS_SELECTED:
1578 return HEADER_ITEM_STATUS_SELECTED;
1582 return HEADER_ITEM_STATUS_DISABLED;
1588 _HeaderImpl::ConvertButtonStatus(ButtonItemStatus status) const
1592 case BUTTON_ITEM_STATUS_NORMAL:
1593 return _BUTTON_STATUS_NORMAL;
1596 case BUTTON_ITEM_STATUS_DISABLED:
1597 return _BUTTON_STATUS_DISABLED;
1600 case BUTTON_ITEM_STATUS_PRESSED:
1601 return _BUTTON_STATUS_PRESSED;
1604 case BUTTON_ITEM_STATUS_HIGHLIGHTED:
1605 return _BUTTON_STATUS_HIGHLIGHTED;
1609 return _BUTTON_STATUS_DISABLED;
1615 _HeaderImpl::ConvertButtonStatus(HeaderItemStatus status) const
1619 case HEADER_ITEM_STATUS_NORMAL:
1620 return _BUTTON_STATUS_NORMAL;
1623 case HEADER_ITEM_STATUS_DISABLED:
1624 return _BUTTON_STATUS_DISABLED;
1627 case HEADER_ITEM_STATUS_PRESSED:
1628 return _BUTTON_STATUS_PRESSED;
1631 case HEADER_ITEM_STATUS_HIGHLIGHTED:
1632 return _BUTTON_STATUS_HIGHLIGHTED;
1635 case HEADER_ITEM_STATUS_SELECTED:
1636 return _BUTTON_STATUS_SELECTED;
1640 return _BUTTON_STATUS_DISABLED;
1646 : public _UiBuilderControlMaker
1649 _HeaderMaker(_UiBuilder* uibuilder)
1650 : _UiBuilderControlMaker(uibuilder){};
1651 virtual ~_HeaderMaker(){};
1652 static _UiBuilderControlMaker* GetInstance(_UiBuilder* uibuilder)
1654 _HeaderMaker* pHeaderMaker = new (std::nothrow) _HeaderMaker(uibuilder);
1655 return pHeaderMaker;
1658 virtual Control* Make(_UiBuilderControl* pControl)
1660 Header* pHeader = null;
1661 Rectangle rect(0, 0, 0, 0);
1662 String elementString;
1667 HeaderStyle hstyle = HEADER_STYLE_TITLE;
1668 Form* pForm = static_cast<Form*>(GetContainer());
1669 pHeader = pForm->GetHeader();
1671 if (null == pHeader)
1676 if (pControl->GetElement(L"headerStyle", elementString))
1678 if (elementString.Equals(L"HEADER_STYLE_TITLE", false))
1680 hstyle = HEADER_STYLE_TITLE;
1682 else if (elementString.Equals(L"HEADER_STYLE_SEGMENTED", false))
1684 hstyle = HEADER_STYLE_SEGMENTED;
1686 else if (elementString.Equals(L"HEADER_STYLE_TITLE_BUTTON", false))
1688 hstyle = HEADER_STYLE_TITLE_BUTTON;
1690 else if (elementString.Equals(L"HEADER_STYLE_SEGMENTED_WITH_TITLE", false))
1692 hstyle = HEADER_STYLE_SEGMENTED_WITH_TITLE;
1694 else if (elementString.Equals(L"HEADER_STYLE_TAB", false))
1696 hstyle = HEADER_STYLE_TAB;
1698 else if (elementString.Equals(L"HEADER_STYLE_TAB_WITH_TITLE", false))
1700 hstyle = HEADER_STYLE_TAB_WITH_TITLE;
1702 else if (elementString.Equals(L"HEADER_STYLE_BUTTON", false))
1704 hstyle = HEADER_STYLE_BUTTON;
1707 pHeader->SetStyle(hstyle);
1710 if (pControl->GetElement(L"backgroundBitmapPath", elementString) || pControl->GetElement(L"BGBitmapPath", elementString))
1712 Bitmap* pBitmap = null;
1713 pBitmap = LoadBitmapN(elementString);
1714 pHeader->SetBackgroundBitmap(pBitmap);
1718 if (pControl->GetElement(L"colorOpacity", elementString))
1720 Base::Integer::Parse(elementString, opacity);
1723 if (pControl->GetElement(L"color", elementString))
1725 ConvertStringToColor32(elementString, opacity, color);
1726 pHeader->SetColor(color);
1729 if (HEADER_STYLE_TITLE == hstyle || HEADER_STYLE_SEGMENTED_WITH_TITLE == hstyle || HEADER_STYLE_TAB_WITH_TITLE == hstyle)
1732 if (pControl->GetElement(L"titleText", elementString))
1734 pHeader->SetTitleText(elementString);
1737 if (pControl->GetElement(L"titleTextColor", elementString))
1739 ConvertStringToColor(elementString, color);
1740 result r = pHeader->SetTitleTextColor(color);
1741 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set title text color");
1744 if (pControl->GetElement(L"titleIconPath", elementString))
1746 Bitmap* pBitmap = null;
1747 pBitmap = LoadBitmapN(elementString);
1748 result r = pHeader->SetTitleIcon(pBitmap);
1749 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set an icon");
1753 if (pControl->GetElement(L"descriptionText", elementString))
1755 result r = pHeader->SetDescriptionText(elementString);
1756 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set description text");
1759 if (pControl->GetElement(L"descriptionTextColor", elementString))
1761 ConvertStringToColor(elementString, color);
1762 result r = pHeader->SetDescriptionTextColor(color);
1763 SysLogException(NID_UI_CTRL, r, "[E_INVALID_STATE] Failed to set description text color");
1768 if (pControl->GetElement(L"normalButtonColorOpacity", elementString))
1770 Base::Integer::Parse(elementString, opacity);
1773 if (pControl->GetElement(L"normalButtonColor", elementString))
1775 ConvertStringToColor32(elementString, opacity, color);
1776 pHeader->SetButtonColor(BUTTON_ITEM_STATUS_NORMAL, color);
1779 if (pControl->GetElement(L"normalButtonTextColor", elementString))
1781 ConvertStringToColor(elementString, color);
1782 pHeader->SetButtonTextColor(BUTTON_ITEM_STATUS_NORMAL, color);
1786 if (pControl->GetElement(L"pressedButtonColorOpacity", elementString))
1788 Base::Integer::Parse(elementString, opacity);
1791 if (pControl->GetElement(L"pressedButtonColor", elementString))
1793 ConvertStringToColor32(elementString, opacity, color);
1794 pHeader->SetButtonColor(BUTTON_ITEM_STATUS_PRESSED, color);
1797 if (pControl->GetElement(L"pressedButtonTextColor", elementString))
1799 ConvertStringToColor(elementString, color);
1800 pHeader->SetButtonTextColor(BUTTON_ITEM_STATUS_PRESSED, color);
1803 // highlighted button
1804 if (pControl->GetElement(L"highlightedButtonColorOpacity", elementString))
1806 Base::Integer::Parse(elementString, opacity);
1809 if (pControl->GetElement(L"highlightedButtonColor", elementString))
1811 ConvertStringToColor32(elementString, opacity, color);
1812 pHeader->SetButtonColor(BUTTON_ITEM_STATUS_HIGHLIGHTED, color);
1815 if (pControl->GetElement(L"highlightedButtonTextColor", elementString))
1817 ConvertStringToColor(elementString, color);
1818 pHeader->SetButtonTextColor(BUTTON_ITEM_STATUS_HIGHLIGHTED, color);
1822 if (pControl->GetElement(L"disabledButtonColorOpacity", elementString))
1824 Base::Integer::Parse(elementString, opacity);
1827 if (pControl->GetElement(L"disabledButtonColor", elementString))
1829 ConvertStringToColor32(elementString, opacity, color);
1830 pHeader->SetButtonColor(BUTTON_ITEM_STATUS_DISABLED, color);
1833 if (pControl->GetElement(L"disabledButtonTextColor", elementString))
1835 ConvertStringToColor(elementString, color);
1836 pHeader->SetButtonTextColor(BUTTON_ITEM_STATUS_DISABLED, color);
1839 if (HEADER_STYLE_TITLE != hstyle)
1842 if (pControl->GetElement(L"normalItemColorOpacity", elementString))
1844 Base::Integer::Parse(elementString, opacity);
1847 if (pControl->GetElement(L"normalItemColor", elementString))
1849 ConvertStringToColor32(elementString, opacity, color);
1850 pHeader->SetItemColor(HEADER_ITEM_STATUS_NORMAL, color);
1853 if (pControl->GetElement(L"normalItemTextColor", elementString))
1855 ConvertStringToColor(elementString, color);
1856 pHeader->SetItemTextColor(HEADER_ITEM_STATUS_NORMAL, color);
1860 if (pControl->GetElement(L"pressedItemColorOpacity", elementString))
1862 Base::Integer::Parse(elementString, opacity);
1865 if (pControl->GetElement(L"pressedItemColor", elementString))
1867 ConvertStringToColor32(elementString, opacity, color);
1868 pHeader->SetItemColor(HEADER_ITEM_STATUS_PRESSED, color);
1871 if (pControl->GetElement(L"pressedItemTextColor", elementString))
1873 ConvertStringToColor(elementString, color);
1874 pHeader->SetItemTextColor(HEADER_ITEM_STATUS_PRESSED, color);
1877 if (hstyle == HEADER_STYLE_SEGMENTED || hstyle == HEADER_STYLE_SEGMENTED_WITH_TITLE
1878 || hstyle == HEADER_STYLE_TAB || hstyle == HEADER_STYLE_TAB_WITH_TITLE)
1881 if (pControl->GetElement(L"selectedItemColorOpacity", elementString))
1883 Base::Integer::Parse(elementString, opacity);
1886 if (pControl->GetElement(L"selectedItemColor", elementString))
1888 ConvertStringToColor32(elementString, opacity, color);
1889 pHeader->SetItemColor(HEADER_ITEM_STATUS_SELECTED, color);
1892 if (pControl->GetElement(L"selectedItemTextColor", elementString))
1894 ConvertStringToColor(elementString, color);
1895 pHeader->SetItemTextColor(HEADER_ITEM_STATUS_SELECTED, color);
1900 if (pControl->GetElement(L"highlightedItemColorOpacity", elementString))
1902 Base::Integer::Parse(elementString, opacity);
1905 if (pControl->GetElement(L"highlightedItemColor", elementString))
1907 ConvertStringToColor32(elementString, opacity, color);
1908 pHeader->SetItemColor(HEADER_ITEM_STATUS_HIGHLIGHTED, color);
1911 if (pControl->GetElement(L"highlightedItemTextColor", elementString))
1913 ConvertStringToColor(elementString, color);
1914 pHeader->SetItemTextColor(HEADER_ITEM_STATUS_HIGHLIGHTED, color);
1918 if (pControl->GetElement(L"disabledItemColorOpacity", elementString))
1920 Base::Integer::Parse(elementString, opacity);
1923 if (pControl->GetElement(L"disabledItemColor", elementString))
1925 ConvertStringToColor32(elementString, opacity, color);
1926 pHeader->SetItemColor(HEADER_ITEM_STATUS_DISABLED, color);
1929 if (pControl->GetElement(L"disabledItemTextColor", elementString))
1931 ConvertStringToColor(elementString, color);
1932 pHeader->SetItemTextColor(HEADER_ITEM_STATUS_DISABLED, color);
1936 int itemCnt = pControl->GetItemCount();
1937 ButtonItemStyle buttonItemStyle = BUTTON_ITEM_STYLE_TEXT;
1938 ButtonPosition buttonPosition = BUTTON_POSITION_LEFT;
1939 String headerItemString;
1941 for (int i = 0; i < itemCnt; i++)
1943 headerItemString = pControl->GetItemName(i);
1944 if ((HEADER_STYLE_TITLE != hstyle) && (headerItemString.Equals(L"headerItem", false)))
1946 HeaderItem headerItem;
1949 if (pControl->GetItemElement(i, "actionId", headerItemString))
1952 Base::Integer::Parse(headerItemString, actionId);
1953 headerItem.Construct(actionId);
1957 if (pControl->GetItemElement(i, "text", headerItemString))
1959 headerItem.SetText(headerItemString);
1962 if (HEADER_STYLE_TITLE_BUTTON == hstyle)
1964 // headeritem icon bitmap setting
1966 if (pControl->GetItemElement(i, "normalIconPath", headerItemString))
1968 Bitmap* pBitmap = null;
1969 pBitmap = LoadBitmapN(headerItemString);
1970 headerItem.SetIcon(HEADER_ITEM_STATUS_NORMAL, pBitmap);
1974 if (pControl->GetItemElement(i, "pressedIconPath", headerItemString))
1976 Bitmap* pBitmap = null;
1977 pBitmap = LoadBitmapN(headerItemString);
1978 headerItem.SetIcon(HEADER_ITEM_STATUS_PRESSED, pBitmap);
1982 if (pControl->GetItemElement(i, "selectedIconPath", headerItemString))
1984 Bitmap* pBitmap = null;
1985 pBitmap = LoadBitmapN(headerItemString);
1986 headerItem.SetIcon(HEADER_ITEM_STATUS_SELECTED, pBitmap);
1990 if (pControl->GetItemElement(i, "highlightedIconPath", headerItemString))
1992 Bitmap* pBitmap = null;
1993 pBitmap = LoadBitmapN(headerItemString);
1994 headerItem.SetIcon(HEADER_ITEM_STATUS_HIGHLIGHTED, pBitmap);
1998 if (pControl->GetItemElement(i, "disabledIconPath", headerItemString))
2000 Bitmap* pBitmap = null;
2001 pBitmap = LoadBitmapN(headerItemString);
2002 headerItem.SetIcon(HEADER_ITEM_STATUS_DISABLED, pBitmap);
2006 // headeritem background bitmap path setting
2008 if (pControl->GetItemElement(i, "normalBGBitmapPath", headerItemString))
2010 Bitmap* pBitmap = null;
2011 pBitmap = LoadBitmapN(headerItemString);
2012 headerItem.SetBackgroundBitmap(HEADER_ITEM_STATUS_NORMAL, pBitmap);
2015 // pressed bg bitmap
2016 if (pControl->GetItemElement(i, "pressedBGBitmapPath", headerItemString))
2018 Bitmap* pBitmap = null;
2019 pBitmap = LoadBitmapN(headerItemString);
2020 headerItem.SetBackgroundBitmap(HEADER_ITEM_STATUS_PRESSED, pBitmap);
2023 // selected bg bitmap
2024 if (pControl->GetItemElement(i, "selectedBGBitmapPath", headerItemString))
2026 Bitmap* pBitmap = null;
2027 pBitmap = LoadBitmapN(headerItemString);
2028 headerItem.SetBackgroundBitmap(HEADER_ITEM_STATUS_SELECTED, pBitmap);
2031 // highlighted bg bitmap
2032 if (pControl->GetItemElement(i, "highlightedBGBitmapPath", headerItemString))
2034 Bitmap* pBitmap = null;
2035 pBitmap = LoadBitmapN(headerItemString);
2036 headerItem.SetBackgroundBitmap(HEADER_ITEM_STATUS_HIGHLIGHTED, pBitmap);
2039 // disabled bg bitmap
2040 if (pControl->GetItemElement(i, "disabledBGBitmapPath", headerItemString))
2042 Bitmap* pBitmap = null;
2043 pBitmap = LoadBitmapN(headerItemString);
2044 headerItem.SetBackgroundBitmap(HEADER_ITEM_STATUS_DISABLED, pBitmap);
2047 pHeader->AddItem(headerItem);
2049 else if (headerItemString.Equals(L"buttonItem", false))
2051 ButtonItem buttonItem;
2054 if (pControl->GetItemElement(i, "style", headerItemString))
2056 if (headerItemString.Equals(L"BUTTON_ITEM_STYLE_TEXT", false))
2058 buttonItemStyle = BUTTON_ITEM_STYLE_TEXT;
2060 else if (headerItemString.Equals(L"BUTTON_ITEM_STYLE_ICON", false))
2062 buttonItemStyle = BUTTON_ITEM_STYLE_ICON;
2066 // set button position
2067 if (pControl->GetItemElement(i, "position", headerItemString))
2069 if (headerItemString.Equals(L"BUTTON_POSITION_LEFT", false))
2071 buttonPosition = BUTTON_POSITION_LEFT;
2073 else if (headerItemString.Equals(L"BUTTON_POSITION_RIGHT", false))
2075 buttonPosition = BUTTON_POSITION_RIGHT;
2079 if (pControl->GetItemElement(i, "actionId", headerItemString))
2082 Base::Integer::Parse(headerItemString, actionId);
2083 buttonItem.Construct(buttonItemStyle, actionId);
2086 if (pControl->GetItemElement(i, "text", headerItemString))
2088 buttonItem.SetText(headerItemString);
2091 // buttonitem background bitmap path setting
2093 if (pControl->GetItemElement(i, "normalBGBitmapPath", headerItemString))
2095 Bitmap* pBitmap = null;
2096 pBitmap = LoadBitmapN(headerItemString);
2097 buttonItem.SetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL, pBitmap);
2100 // pressed bg bitmap
2101 if (pControl->GetItemElement(i, "pressedBGBitmapPath", headerItemString))
2103 Bitmap* pBitmap = null;
2104 pBitmap = LoadBitmapN(headerItemString);
2105 buttonItem.SetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED, pBitmap);
2108 // highlighted bg bitmap
2109 if (pControl->GetItemElement(i, "highlightedBGBitmapPath", headerItemString))
2111 Bitmap* pBitmap = null;
2112 pBitmap = LoadBitmapN(headerItemString);
2113 buttonItem.SetBackgroundBitmap(BUTTON_ITEM_STATUS_HIGHLIGHTED, pBitmap);
2116 // disabled bg bitmap
2117 if (pControl->GetItemElement(i, "disabledBGBitmapPath", headerItemString))
2119 Bitmap* pBitmap = null;
2120 pBitmap = LoadBitmapN(headerItemString);
2121 buttonItem.SetBackgroundBitmap(BUTTON_ITEM_STATUS_DISABLED, pBitmap);
2124 // buttonitem icon bitmap setting
2125 if (pControl->GetItemElement(i, "normalIconPath", headerItemString))
2127 Bitmap* pBitmap = null;
2128 pBitmap = LoadBitmapN(headerItemString);
2129 buttonItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitmap);
2132 if (pControl->GetItemElement(i, "pressedIconPath", headerItemString))
2134 Bitmap* pBitmap = null;
2135 pBitmap = LoadBitmapN(headerItemString);
2136 buttonItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitmap);
2139 if (pControl->GetItemElement(i, "highlightedIconPath", headerItemString))
2141 Bitmap* pBitmap = null;
2142 pBitmap = LoadBitmapN(headerItemString);
2143 buttonItem.SetIcon(BUTTON_ITEM_STATUS_HIGHLIGHTED, pBitmap);
2146 if (pControl->GetItemElement(i, "disabledIconPath", headerItemString))
2148 Bitmap* pBitmap = null;
2149 pBitmap = LoadBitmapN(headerItemString);
2150 buttonItem.SetIcon(BUTTON_ITEM_STATUS_DISABLED, pBitmap);
2153 pHeader->SetButton(buttonPosition, buttonItem);
2165 _HeaderRegister::_HeaderRegister()
2167 _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
2168 pUiBuilderControlTableManager->RegisterControl(L"Header", _HeaderMaker::GetInstance);
2171 _HeaderRegister::~_HeaderRegister()
2173 _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
2174 pUiBuilderControlTableManager->UnregisterControl(L"Header");
2177 static _HeaderRegister HeaderRegisterToUiBuilder;
2179 }}} // Tizen::Ui::Controls