From c529248c299bfd7b69161b1be10152bf3189f913 Mon Sep 17 00:00:00 2001 From: Myung Jin Kim Date: Thu, 30 May 2013 22:32:01 +0900 Subject: [PATCH] apply option button for footer Change-Id: Idcadc44993e70341a318f6feec130d25153e73bf --- inc/FUiCtrlFooter.h | 76 +++++++ src/ui/controls/FUiCtrlFooter.cpp | 59 ++++++ src/ui/controls/FUiCtrl_FooterImpl.cpp | 279 ++++++++++++++++++++++++-- src/ui/controls/FUiCtrl_Toolbar.cpp | 290 ++++++++++++++++++++++----- src/ui/inc/FUiCtrl_FooterImpl.h | 10 + src/ui/inc/FUiCtrl_Toolbar.h | 7 + src/ui/inc/FUi_ResourceFooterConfig.h | 4 + src/ui/resource/FUi_ResourceFooterConfig.cpp | 5 + 8 files changed, 662 insertions(+), 68 deletions(-) diff --git a/inc/FUiCtrlFooter.h b/inc/FUiCtrlFooter.h index 96f6169..bf3057b 100644 --- a/inc/FUiCtrlFooter.h +++ b/inc/FUiCtrlFooter.h @@ -790,6 +790,7 @@ public: */ Tizen::Graphics::Rectangle GetButtonBounds(ButtonPosition position) const; + /** * Gets the position and size of the specified button item. * @@ -805,6 +806,81 @@ public: Tizen::Graphics::FloatRectangle GetButtonBoundsF(ButtonPosition position) const; + /** + * Checks whether the option button item is set. + * + * @since 2.2 + * + * @return @c true if the option button item is set, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + bool IsOptionButtonSet(void) const; + + + /** + * Gets the state of the option button. + * + * @since 2.2 + * + * @return The state of the option button, @n + * else @c BUTTON_ITEM_STATUS_NORMAL if an error occurs. + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The option button is not set. + * @remarks The specific error code can be accessed using the GetLastResult() method. + */ + ButtonItemStatus GetOptionButtonStatus(void) const; + + + /** + * Removes the option button item. + * + * @since 2.2 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @remarks If the option button item is not set, the method will return @c E_SUCCESS. + */ + result RemoveOptionButton(void); + + + /** + * Enables or disables the option button. + * + * @since 2.2 + * + * @return An error code + * @param[in] enable Set to @c true to enable the option button, @n + * else @c false + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * The option button item is not set. + * @exception E_SYSTEM A system error has occurred. + */ + result SetOptionButtonEnabled(bool enable); + + + /** + * Sets the option button. + * + * @since 2.2 + * + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation. @n + * There are more than 3 footer items. + * @exception E_UNSUPPORTED_OPERATION This operation is not supported. @n + * The operation is not supported when the style of the %Footer control is ::FOOTER_STYLE_TAB. @n + * @exception E_SYSTEM A system error has occurred. + * @remarks + * - If the left button is already set, then the button is replaced with the option button. + */ + result SetOptionButton(void); + + protected: // //This method is for internal use only. Using this method can cause behavioral, security-related, diff --git a/src/ui/controls/FUiCtrlFooter.cpp b/src/ui/controls/FUiCtrlFooter.cpp index 2eff980..8e4bfa2 100644 --- a/src/ui/controls/FUiCtrlFooter.cpp +++ b/src/ui/controls/FUiCtrlFooter.cpp @@ -571,4 +571,63 @@ Footer::SetButtonNumberedBadgeIcon(ButtonPosition position, int number) return pFooterImpl->SetButtonNumberedBadgeIcon(position, number); } +bool +Footer::IsOptionButtonSet(void) const +{ + ClearLastResult(); + + const _FooterImpl* pFooterImpl = _FooterImpl::GetInstance(*this); + + SysAssertf(pFooterImpl != null, + "Not yet constructed. Construct() should be called before use."); + + return pFooterImpl->IsOptionButtonSet(); +} + +ButtonItemStatus +Footer::GetOptionButtonStatus(void) const +{ + ClearLastResult(); + + const _FooterImpl* pFooterImpl = _FooterImpl::GetInstance(*this); + + SysAssertf(pFooterImpl != null, + "Not yet constructed. Construct() should be called before use."); + + return pFooterImpl->GetOptionButtonStatus(); +} + +result +Footer::RemoveOptionButton(void) +{ + _FooterImpl* pFooterImpl = _FooterImpl::GetInstance(*this); + + SysAssertf(pFooterImpl != null, + "Not yet constructed. Construct() should be called before use."); + + return pFooterImpl->RemoveOptionButton(); +} + +result +Footer::SetOptionButtonEnabled(bool enable) +{ + _FooterImpl* pFooterImpl = _FooterImpl::GetInstance(*this); + + SysAssertf(pFooterImpl != null, + "Not yet constructed. Construct() should be called before use."); + + return pFooterImpl->SetOptionButtonEnabled(enable); +} + +result +Footer::SetOptionButton(void) +{ + _FooterImpl* pFooterImpl = _FooterImpl::GetInstance(*this); + + SysAssertf(pFooterImpl != null, + "Not yet constructed. Construct() should be called before use."); + + return pFooterImpl->SetOptionButton(); +} + }}} // Tizen::Ui::Controls diff --git a/src/ui/controls/FUiCtrl_FooterImpl.cpp b/src/ui/controls/FUiCtrl_FooterImpl.cpp index f8f5a50..5eee1c2 100644 --- a/src/ui/controls/FUiCtrl_FooterImpl.cpp +++ b/src/ui/controls/FUiCtrl_FooterImpl.cpp @@ -401,6 +401,12 @@ _FooterImpl::SetButton(ButtonPosition position, const ButtonItem& button) "[E_SYSTEM] A Back button exists."); } + if (position == BUTTON_POSITION_LEFT) + { + SysTryReturnResult(NID_UI_CTRL, (IsOptionButtonSet() == false), E_SYSTEM, + "[E_SYSTEM] A Option button exists."); + } + SysTryReturnResult(NID_UI_CTRL, (count <= FOOTER_MAX_ITEM_COUNT_WITH_BUTTON), E_SYSTEM, "[E_SYSTEM] If the item count is larger then 3, no button can be set."); } @@ -954,30 +960,22 @@ _FooterImpl::CheckItemValidate(const FooterItem& item) else if (__style == FOOTER_STYLE_SEGMENTED_TEXT || __style == FOOTER_STYLE_SEGMENTED_ICON || __style == FOOTER_STYLE_SEGMENTED_ICON_TEXT || __style == FOOTER_STYLE_BUTTON_TEXT || __style == FOOTER_STYLE_BUTTON_ICON || __style == FOOTER_STYLE_BUTTON_ICON_TEXT) { - if (IsButtonSet(BUTTON_POSITION_LEFT)) + if (IsBackButtonSet() || IsOptionButtonSet()) { - SysTryReturnResult(NID_UI_CTRL, (count < 3), E_MAX_EXCEEDED, - "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit."); + SysTryReturnResult(NID_UI_CTRL, (count < 4), E_MAX_EXCEEDED, + "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit."); } else { - if (IsBackButtonSet()) + if (IsButtonSet(BUTTON_POSITION_RIGHT) || IsButtonSet(BUTTON_POSITION_LEFT)) { - SysTryReturnResult(NID_UI_CTRL, (count < 4), E_MAX_EXCEEDED, + SysTryReturnResult(NID_UI_CTRL, (count < 3), E_MAX_EXCEEDED, "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit."); } else { - if (IsButtonSet(BUTTON_POSITION_RIGHT)) - { - SysTryReturnResult(NID_UI_CTRL, (count < 3), E_MAX_EXCEEDED, - "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit."); - } - else - { - SysTryReturnResult(NID_UI_CTRL, (count < 4), E_MAX_EXCEEDED, - "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit."); - } + SysTryReturnResult(NID_UI_CTRL, (count < 4), E_MAX_EXCEEDED, + "[E_MAX_EXCEEDED] The number of items have exceeded the maximum limit."); } } } @@ -1584,6 +1582,257 @@ _FooterImpl::ConvertFooterStyle(FooterStyle style) return viewStyle; } +bool +_FooterImpl::IsOptionButtonSet(void) const +{ + return GetCore().IsButtonSet(OPTION_BUTTON); +} + + +ButtonItemStatus +_FooterImpl::GetOptionButtonStatus(void) const +{ + SysTryReturn(NID_UI_CTRL, (IsOptionButtonSet() == true), BUTTON_ITEM_STATUS_NORMAL, E_INVALID_OPERATION, + "[E_INVALID_OPERATION] A Option button doesn't exist"); + + _ButtonStatus buttonStatus; + + buttonStatus = GetCore().GetButtonStatus(OPTION_BUTTON); + + return ConvertButtonItemStatus(buttonStatus); +} + + +result +_FooterImpl::RemoveOptionButton(void) +{ + return GetCore().RemoveButtonAt(OPTION_BUTTON); +} + + +result +_FooterImpl::SetOptionButtonEnabled(bool enable) +{ + return GetCore().SetButtonEnabled(OPTION_BUTTON, enable); +} + + +result +_FooterImpl::SetOptionButton(void) +{ + SysTryReturnResult(NID_UI_CTRL, (__style != FOOTER_STYLE_TAB), E_UNSUPPORTED_OPERATION, + "[E_UNSUPPORTED_OPERATION] The current Footer style does not support the operation."); + + if ((__style == FOOTER_STYLE_SEGMENTED_TEXT || __style == FOOTER_STYLE_SEGMENTED_ICON || __style == FOOTER_STYLE_SEGMENTED_ICON_TEXT) && GetItemCount() > 4) + { + SysLogException(NID_UI_CTRL, E_SYSTEM, "[E_SYSTEM] Unable to set the option button."); + return E_SYSTEM; + } + else if ((__style == FOOTER_STYLE_BUTTON_ICON || __style == FOOTER_STYLE_BUTTON_TEXT || __style == FOOTER_STYLE_BUTTON_ICON_TEXT) && GetItemCount() > 5) + { + SysLogException(NID_UI_CTRL, E_SYSTEM, "[E_SYSTEM] Unable to set the option button."); + return E_SYSTEM; + } + + _Button* pButton = _Button::CreateButtonN(); + + float buttonHeight = 0.0f; + float buttonWidth = 0.0f; + float iconSize = 0.0f; + + GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_HEIGHT, GetCore().GetOrientation(), buttonHeight); + GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_WIDTH, GetCore().GetOrientation(), buttonWidth); + GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_ICON_SIZE, GetCore().GetOrientation(), iconSize); + + pButton->SetBounds(FloatRectangle(0.0f, 0.0f, buttonWidth, buttonHeight)); + + Bitmap* pBackgroundNormalBitmap = null; + Bitmap* pBackgroundDisabledBitmap = null; + Bitmap* pBackgroundPressedBitmap = null; + Bitmap* pBackgroundHighlightedBitmap = null; + + Bitmap* pColorReplacedBitmap = null; + + Bitmap* pBackIconNormalBitmap = null; + Bitmap* pBackIconDisabledBitmap = null; + Bitmap* pBackIconPressedBitmap = null; + Bitmap* pBackIconHighlightedBitmap = null; + + Bitmap* pBackIconNormalEffectBitmap = null; + Bitmap* pBackIconDisabledEffectBitmap = null; + Bitmap* pBackIconPressedEffectBitmap = null; + Bitmap* pBackIconHighlightedEffectBitmap = null; + + GET_BITMAP_CONFIG_N(FOOTER::BUTTON_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pBackgroundNormalBitmap); + GET_BITMAP_CONFIG_N(FOOTER::BUTTON_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pBackgroundDisabledBitmap); + GET_BITMAP_CONFIG_N(FOOTER::BUTTON_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pBackgroundPressedBitmap); + GET_BITMAP_CONFIG_N(FOOTER::BUTTON_BG_HIGHLIGHTED, BITMAP_PIXEL_FORMAT_ARGB8888, pBackgroundHighlightedBitmap); + + GET_BITMAP_CONFIG_N(FOOTER::MORE_ICON_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pBackIconNormalBitmap); + GET_BITMAP_CONFIG_N(FOOTER::MORE_ICON_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pBackIconDisabledBitmap); + GET_BITMAP_CONFIG_N(FOOTER::MORE_ICON_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pBackIconPressedBitmap); + GET_BITMAP_CONFIG_N(FOOTER::MORE_ICON_HIGHLIGHTED, BITMAP_PIXEL_FORMAT_ARGB8888, pBackIconHighlightedBitmap); + + bool customTheme = false; + + customTheme = IS_CUSTOM_BITMAP(FOOTER::MORE_ICON_NORMAL); + if (customTheme == false) + { + GET_BITMAP_CONFIG_N(FOOTER::MORE_ICON_EFFECT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pBackIconNormalEffectBitmap); + } + + customTheme = IS_CUSTOM_BITMAP(FOOTER::MORE_ICON_DISABLED); + if (customTheme == false) + { + GET_BITMAP_CONFIG_N(FOOTER::MORE_ICON_EFFECT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pBackIconDisabledEffectBitmap); + } + + customTheme = IS_CUSTOM_BITMAP(FOOTER::MORE_ICON_PRESSED); + if (customTheme == false) + { + GET_BITMAP_CONFIG_N(FOOTER::MORE_ICON_EFFECT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pBackIconPressedEffectBitmap); + } + + customTheme = IS_CUSTOM_BITMAP(FOOTER::MORE_ICON_HIGHLIGHTED); + if (customTheme == false) + { + GET_BITMAP_CONFIG_N(FOOTER::MORE_ICON_EFFECT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pBackIconHighlightedEffectBitmap); + } + + if (pBackgroundNormalBitmap) + { + pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), + GetCore().GetButtonColor(_BUTTON_STATUS_NORMAL)); + pButton->SetBackgroundBitmap(_BUTTON_STATUS_NORMAL, *pColorReplacedBitmap); + delete pColorReplacedBitmap; + + delete pBackgroundNormalBitmap; + } + + if (pBackgroundDisabledBitmap) + { + pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), + GetCore().GetButtonColor(_BUTTON_STATUS_DISABLED)); + pButton->SetBackgroundBitmap(_BUTTON_STATUS_DISABLED, *pColorReplacedBitmap); + delete pColorReplacedBitmap; + + delete pBackgroundDisabledBitmap; + } + + if (pBackgroundPressedBitmap) + { + pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), + GetCore().GetButtonColor(_BUTTON_STATUS_PRESSED)); + pButton->SetBackgroundBitmap(_BUTTON_STATUS_PRESSED, *pColorReplacedBitmap); + delete pColorReplacedBitmap; + + delete pBackgroundPressedBitmap; + } + + if (pBackgroundHighlightedBitmap) + { + pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), + GetCore().GetButtonColor(_BUTTON_STATUS_HIGHLIGHTED)); + pButton->SetBackgroundBitmap(_BUTTON_STATUS_HIGHLIGHTED, *pColorReplacedBitmap); + delete pColorReplacedBitmap; + + delete pBackgroundHighlightedBitmap; + } + + Color normalColor; + Color disabledColor; + Color pressedColor; + Color highlightedColor; + + GET_COLOR_CONFIG(FOOTER::MORE_ICON_NORMAL, normalColor); + GET_COLOR_CONFIG(FOOTER::MORE_ICON_DISABLED, disabledColor); + GET_COLOR_CONFIG(FOOTER::MORE_ICON_PRESSED, pressedColor); + GET_COLOR_CONFIG(FOOTER::MORE_ICON_HIGHLIGHTED, highlightedColor); + + if (pBackIconNormalBitmap) + { + pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackIconNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), normalColor); + + if (pColorReplacedBitmap) + { + pColorReplacedBitmap->Scale(FloatDimension(iconSize, iconSize)); + pButton->SetBitmap(_BUTTON_STATUS_NORMAL, FloatPoint(0.0f, 0.0f), *pColorReplacedBitmap); + + delete pColorReplacedBitmap; + } + + delete pBackIconNormalBitmap; + } + + if (pBackIconDisabledBitmap) + { + pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackIconDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), disabledColor); + + if (pColorReplacedBitmap) + { + pColorReplacedBitmap->Scale(FloatDimension(iconSize, iconSize)); + pButton->SetBitmap(_BUTTON_STATUS_DISABLED, FloatPoint(0.0f, 0.0f), *pColorReplacedBitmap); + + delete pColorReplacedBitmap; + } + + delete pBackIconDisabledBitmap; + } + + if (pBackIconPressedBitmap) + { + pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackIconPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), pressedColor); + + if (pColorReplacedBitmap) + { + pColorReplacedBitmap->Scale(FloatDimension(iconSize, iconSize)); + pButton->SetBitmap(_BUTTON_STATUS_PRESSED, FloatPoint(0.0f, 0.0f), *pColorReplacedBitmap); + + delete pColorReplacedBitmap; + } + + delete pBackIconPressedBitmap; + } + + if (pBackIconHighlightedBitmap) + { + pColorReplacedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackIconHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), highlightedColor); + + if (pColorReplacedBitmap) + { + pColorReplacedBitmap->Scale(FloatDimension(iconSize, iconSize)); + pButton->SetBitmap(_BUTTON_STATUS_HIGHLIGHTED, FloatPoint(0.0f, 0.0f), *pColorReplacedBitmap); + + delete pColorReplacedBitmap; + } + + delete pBackIconHighlightedBitmap; + } + + if (pBackIconNormalEffectBitmap) + { + pButton->SetEffectBitmap(_BUTTON_STATUS_NORMAL, FloatPoint(0.0f, 0.0f), *pBackIconNormalEffectBitmap); + delete pBackIconNormalEffectBitmap; + } + if (pBackIconDisabledEffectBitmap) + { + pButton->SetEffectBitmap(_BUTTON_STATUS_DISABLED, FloatPoint(0.0f, 0.0f), *pBackIconDisabledEffectBitmap); + delete pBackIconDisabledEffectBitmap; + } + if (pBackIconPressedEffectBitmap) + { + pButton->SetEffectBitmap(_BUTTON_STATUS_PRESSED, FloatPoint(0.0f, 0.0f), *pBackIconPressedEffectBitmap); + delete pBackIconPressedEffectBitmap; + } + if (pBackIconHighlightedEffectBitmap) + { + pButton->SetEffectBitmap(_BUTTON_STATUS_HIGHLIGHTED, FloatPoint(0.0f, 0.0f), *pBackIconHighlightedEffectBitmap); + delete pBackIconHighlightedEffectBitmap; + } + + return GetCore().SetButton(OPTION_BUTTON, pButton); +} + class _FooterMaker : public _UiBuilderControlMaker { diff --git a/src/ui/controls/FUiCtrl_Toolbar.cpp b/src/ui/controls/FUiCtrl_Toolbar.cpp index bd20807..410e1e8 100644 --- a/src/ui/controls/FUiCtrl_Toolbar.cpp +++ b/src/ui/controls/FUiCtrl_Toolbar.cpp @@ -105,6 +105,7 @@ _Toolbar::_Toolbar(void) , __pToolbarPresenter(null) , __pActionEventListener(null) , __pBackEventListener(null) + , __pOptionEventListener(null) , __pLongPressGesture(null) , __pFlickGesture(null) , __pToolbarBackgroundBitmap(null) @@ -115,6 +116,7 @@ _Toolbar::_Toolbar(void) , __pItems(null) , __pTitleBadgeIcon(null) , __backActionId(-1) + , __optionActionId(-1) , __itemCount(0) , __style(TOOLBAR_TITLE) , __transparent(false) @@ -131,6 +133,7 @@ _Toolbar::_Toolbar(void) __pButtonItems[RIGHT_BUTTON] = null; __pButtonItems[BACK_BUTTON] = null; __pButtonItems[MIDDLE_BUTTON] = null; + __pButtonItems[OPTION_BUTTON] = null; for (int i = 0; i < TOOLBAR_ANIMATION_POSITION_MAX; i++) { @@ -205,6 +208,11 @@ _Toolbar::~_Toolbar(void) __pBackEventListener = null; } + if (__pOptionEventListener) + { + __pOptionEventListener = null; + } + if (__pLongPressGesture != null) { __pLongPressGesture->RemoveGestureListener(*this); @@ -1600,12 +1608,26 @@ _Toolbar::SetButton(ToolbarButton position, _Button* pButton) pButton->SetPosition(FloatPoint((toolbarWidth - buttonWidth - horizontalMargin)/2, verticalMargin)); break; + case OPTION_BUTTON: + if (IsButtonSet(LEFT_BUTTON) == true) + { + RemoveButtonAt(LEFT_BUTTON); + } + + pButton->SetPosition(FloatPoint(0.0f, 0.0f)); + if (__pOptionEventListener) + { + pButton->AddActionEventListener(*__pOptionEventListener); + pButton->SetActionId(__optionActionId); + } + break; + default: break; } } - if (position != BACK_BUTTON && __pActionEventListener != null) + if (!(position == BACK_BUTTON || position == OPTION_BUTTON) && __pActionEventListener != null) { pButton->AddActionEventListener(*__pActionEventListener); } @@ -2844,6 +2866,9 @@ _Toolbar::AddAccessibilityElement(ToolbarButton position, _Button* pButton) case MIDDLE_BUTTON: name = L"MiddleButtonText"; break; + case OPTION_BUTTON: + name = L"OptionButtonText"; + break; default: return; break; @@ -2869,6 +2894,11 @@ _Toolbar::AddAccessibilityElement(ToolbarButton position, _Button* pButton) pButtonElement->SetLabel("Back"); pButtonElement->SetTrait("Button"); } + else if (position == OPTION_BUTTON) + { + pButtonElement->SetLabel("Option"); + pButtonElement->SetTrait("Button"); + } else { pButtonElement->SetTrait(L"Button"); @@ -4416,6 +4446,15 @@ _Toolbar::SetBackEventListener(const Controls::_IActionEventListener& listener, return; } +void +_Toolbar::SetOptionEventListener(const Controls::_IActionEventListener& listener, int actionId) +{ + __optionActionId = actionId; + __pOptionEventListener = const_cast<_IActionEventListener*>(&listener); + + return; +} + result _Toolbar::SetPresenter(const _ToolbarPresenter& toolbarPresenter) { @@ -5075,6 +5114,12 @@ _Toolbar::CalculateMinimumToolbarWidth(void) GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_WIDTH, GetOrientation(), itemMinimumWidth); totalWidth += itemMinimumWidth; } + else if (IsButtonSet(OPTION_BUTTON)) + { + GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_WIDTH, GetOrientation(), itemMinimumWidth); + totalWidth += itemMinimumWidth; + } + if (IsButtonSet(RIGHT_BUTTON)) { GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_WIDTH, GetOrientation(), itemMinimumWidth); @@ -5164,6 +5209,12 @@ _Toolbar::CalculateMinimumToolbarWidthF(void) GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_WIDTH, GetOrientation(), itemMinimumWidth); totalWidth += itemMinimumWidth; } + else if (IsButtonSet(OPTION_BUTTON)) + { + GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_WIDTH, GetOrientation(), itemMinimumWidth); + totalWidth += itemMinimumWidth; + } + if (IsButtonSet(RIGHT_BUTTON)) { GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_WIDTH, GetOrientation(), itemMinimumWidth); @@ -5836,30 +5887,58 @@ _Toolbar::RearrangeItems(void) { if (__pButtonItems[LEFT_BUTTON]) { - if (__pButtonItems[BACK_BUTTON]) + if (__pButtonItems[BACK_BUTTON]) // L,B { - __pButtonItems[BACK_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin, - (__itemArea.height - footerButtonItemHeight) / 2, footerButtonItemWidth, footerButtonItemHeight)); + if (__pButtonItems[OPTION_BUTTON]) + { + __pButtonItems[BACK_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin, + (__itemArea.height - footerButtonItemHeight) / 2, footerButtonItemWidth, footerButtonItemHeight)); - __pButtonItems[LEFT_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, - footerButtonItemWidth, footerButtonItemHeight)); + __pButtonItems[OPTION_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, + footerButtonItemWidth, footerButtonItemHeight)); - __pButtonItems[BACK_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); - __pButtonItems[LEFT_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); - } - else - { - if (__style != TOOLBAR_SOFTKEY) + __pButtonItems[BACK_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); + __pButtonItems[OPTION_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); + } + else { - __pButtonItems[RIGHT_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin, + __pButtonItems[BACK_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, footerButtonItemWidth, footerButtonItemHeight)); - __pButtonItems[LEFT_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, sipButtonItemTopMargin, + __pButtonItems[LEFT_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, footerButtonItemWidth, footerButtonItemHeight)); - __pButtonItems[RIGHT_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); + __pButtonItems[BACK_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); __pButtonItems[LEFT_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); } + } + else // L, R + { + if (__style != TOOLBAR_SOFTKEY) + { + if (__pButtonItems[OPTION_BUTTON]) + { + __pButtonItems[RIGHT_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin, + (__itemArea.height - footerButtonItemHeight) / 2, footerButtonItemWidth, footerButtonItemHeight)); + + __pButtonItems[OPTION_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, + footerButtonItemWidth, footerButtonItemHeight)); + + __pButtonItems[RIGHT_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); + __pButtonItems[OPTION_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); + } + else + { + __pButtonItems[RIGHT_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin, + (__itemArea.height - footerButtonItemHeight) / 2, footerButtonItemWidth, footerButtonItemHeight)); + + __pButtonItems[LEFT_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, + footerButtonItemWidth, footerButtonItemHeight)); + + __pButtonItems[RIGHT_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); + __pButtonItems[LEFT_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); + } + } else { if (__pButtonItems[RIGHT_BUTTON]->GetText() == L"") @@ -5872,17 +5951,7 @@ _Toolbar::RearrangeItems(void) __pButtonItems[RIGHT_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - softkeyDimension.width, __itemArea.height - softkeyDimension.height, softkeyDimension.width, softkeyDimension.height)); } - } - - if (__style != TOOLBAR_SOFTKEY) - { - __pButtonItems[LEFT_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, - footerButtonItemWidth, footerButtonItemHeight)); - __pButtonItems[LEFT_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); - } - else - { if (__pButtonItems[LEFT_BUTTON]->GetText() == L"") { __pButtonItems[LEFT_BUTTON]->SetPosition(FloatPoint(0.0f, __itemArea.height - __pButtonItems[LEFT_BUTTON]->GetSizeF().height)); @@ -5897,17 +5966,32 @@ _Toolbar::RearrangeItems(void) } else { - if (__pButtonItems[BACK_BUTTON]) + if (__pButtonItems[BACK_BUTTON]) // B { + if (__pButtonItems[OPTION_BUTTON]) + { + __pButtonItems[OPTION_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, + footerButtonItemWidth, footerButtonItemHeight)); + + __pButtonItems[OPTION_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); + } __pButtonItems[BACK_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, footerButtonItemWidth, footerButtonItemHeight)); __pButtonItems[BACK_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); } - else + else // R { if (__style != TOOLBAR_SOFTKEY) { + if (__pButtonItems[OPTION_BUTTON]) + { + __pButtonItems[OPTION_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, + footerButtonItemWidth, footerButtonItemHeight)); + + __pButtonItems[OPTION_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); + } + __pButtonItems[RIGHT_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, footerButtonItemWidth, footerButtonItemHeight)); @@ -5931,26 +6015,50 @@ _Toolbar::RearrangeItems(void) } else if (__pButtonItems[LEFT_BUTTON]) { - if (__pButtonItems[BACK_BUTTON]) + if (__pButtonItems[BACK_BUTTON]) // L B { - __pButtonItems[BACK_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin, - (__itemArea.height - footerButtonItemHeight) / 2, footerButtonItemWidth, footerButtonItemHeight)); + if (__pButtonItems[OPTION_BUTTON]) + { + __pButtonItems[BACK_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin, + (__itemArea.height - footerButtonItemHeight) / 2, footerButtonItemWidth, footerButtonItemHeight)); - __pButtonItems[LEFT_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, - footerButtonItemWidth, footerButtonItemHeight)); + __pButtonItems[OPTION_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, + footerButtonItemWidth, footerButtonItemHeight)); - __pButtonItems[BACK_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); - __pButtonItems[LEFT_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); - } - else - { - if (__style != TOOLBAR_SOFTKEY) + __pButtonItems[BACK_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); + __pButtonItems[OPTION_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); + } + else { + __pButtonItems[BACK_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin, + (__itemArea.height - footerButtonItemHeight) / 2, footerButtonItemWidth, footerButtonItemHeight)); + __pButtonItems[LEFT_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, footerButtonItemWidth, footerButtonItemHeight)); + __pButtonItems[BACK_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); __pButtonItems[LEFT_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); } + } + else // L + { + if (__style != TOOLBAR_SOFTKEY) + { + if (__pButtonItems[OPTION_BUTTON]) + { + __pButtonItems[OPTION_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, + footerButtonItemWidth, footerButtonItemHeight)); + + __pButtonItems[OPTION_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); + } + else + { + __pButtonItems[LEFT_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, + footerButtonItemWidth, footerButtonItemHeight)); + + __pButtonItems[LEFT_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); + } + } else { if (__pButtonItems[LEFT_BUTTON]->GetText() == L"") @@ -5965,15 +6073,31 @@ _Toolbar::RearrangeItems(void) } } } - else + else //B { if (__pButtonItems[BACK_BUTTON]) { + if (__pButtonItems[OPTION_BUTTON]) + { + __pButtonItems[OPTION_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, + footerButtonItemWidth, footerButtonItemHeight)); + __pButtonItems[OPTION_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); + } + __pButtonItems[BACK_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, footerButtonItemWidth, footerButtonItemHeight)); __pButtonItems[BACK_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); } + else + { + if (__pButtonItems[OPTION_BUTTON]) + { + __pButtonItems[OPTION_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2, + footerButtonItemWidth, footerButtonItemHeight)); + __pButtonItems[OPTION_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin); + } + } } } @@ -6205,7 +6329,7 @@ _Toolbar::RearrangeFooterSegmentedItems(void) } else if (__itemCount == 3) { - if (__pButtonItems[LEFT_BUTTON]) + if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[OPTION_BUTTON]) { if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON]) { @@ -6264,13 +6388,33 @@ _Toolbar::RearrangeFooterSegmentedItems(void) { if (__pButtonItems[BACK_BUTTON]) { - rightMargin = footerLeftMargin; - itemButtonRightGap = footerLeftMargin; - __itemArea.width -= (leftMargin + itemButtonRightGap + iconSize + rightMargin); + if (__pButtonItems[OPTION_BUTTON]) + { + rightMargin = footerLeftMargin; + itemButtonRightGap = footerLeftMargin; + __itemArea.width -= (leftMargin + itemButtonRightGap + iconSize + itemButtonRightGap + iconSize + rightMargin); + leftMargin += (itemButtonRightGap + iconSize); + } + else + { + rightMargin = footerLeftMargin; + itemButtonRightGap = footerLeftMargin; + __itemArea.width -= (leftMargin + itemButtonRightGap + iconSize + rightMargin); + } } else { - __itemArea.width -= leftMargin * 2; + if (__pButtonItems[OPTION_BUTTON]) + { + rightMargin = footerLeftMargin; + itemButtonRightGap = footerLeftMargin; + __itemArea.width -= (leftMargin + itemButtonRightGap + iconSize + rightMargin); + leftMargin += (itemButtonRightGap + iconSize); + } + else + { + __itemArea.width -= leftMargin * 2; + } } blockWidth[0] = blockWidth[1] = blockWidth[2] = blockWidth[3] = (__itemArea.width - dividerWidth * 3) / 4; @@ -6659,7 +6803,7 @@ _Toolbar::RearrangeButtonItems(void) } else if (__itemCount == 3) { - if (__pButtonItems[LEFT_BUTTON]) + if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[OPTION_BUTTON]) { if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON]) { @@ -6727,13 +6871,33 @@ _Toolbar::RearrangeButtonItems(void) { if (__pButtonItems[BACK_BUTTON]) { - tabRightMargin = footerLeftMargin; - itemButtonRightGap = footerLeftMargin; - __itemArea.width -= (tabLeftMargin + itemButtonRightGap + iconSize + tabRightMargin); + if (__pButtonItems[OPTION_BUTTON]) + { + tabRightMargin = footerLeftMargin; + itemButtonRightGap = footerLeftMargin; + __itemArea.width -= (tabLeftMargin + itemButtonRightGap + iconSize + itemButtonRightGap + iconSize + tabRightMargin); + tabLeftMargin += (itemButtonRightGap + iconSize); + } + else + { + tabRightMargin = footerLeftMargin; + itemButtonRightGap = footerLeftMargin; + __itemArea.width -= (tabLeftMargin + itemButtonRightGap + iconSize + tabRightMargin); + } } else { - __itemArea.width -= tabLeftMargin * 2; + if (__pButtonItems[OPTION_BUTTON]) + { + tabRightMargin = footerLeftMargin; + itemButtonRightGap = footerLeftMargin; + __itemArea.width -= (tabLeftMargin + itemButtonRightGap + iconSize + tabRightMargin); + tabLeftMargin += (itemButtonRightGap + iconSize); + } + else + { + __itemArea.width -= tabLeftMargin * 2; + } } blockWidth[0] = blockWidth[1] = blockWidth[2] = blockWidth[3] = (__itemArea.width - dividerWidth * 3) / 4; @@ -6777,13 +6941,33 @@ _Toolbar::RearrangeButtonItems(void) { if (__pButtonItems[BACK_BUTTON]) { - tabRightMargin = footerLeftMargin; - itemButtonRightGap = footerLeftMargin; - __itemArea.width -= (tabLeftMargin + itemButtonRightGap + iconSize + tabRightMargin); + if (__pButtonItems[OPTION_BUTTON]) + { + tabRightMargin = footerLeftMargin; + itemButtonRightGap = footerLeftMargin; + __itemArea.width -= (tabLeftMargin + itemButtonRightGap + iconSize + itemButtonRightGap + iconSize + tabRightMargin); + tabLeftMargin += (itemButtonRightGap + iconSize); + } + else + { + tabRightMargin = footerLeftMargin; + itemButtonRightGap = footerLeftMargin; + __itemArea.width -= (tabLeftMargin + itemButtonRightGap + iconSize + tabRightMargin); + } } else { - __itemArea.width -= tabLeftMargin * 2; + if (__pButtonItems[OPTION_BUTTON]) + { + tabRightMargin = footerLeftMargin; + itemButtonRightGap = footerLeftMargin; + __itemArea.width -= (tabLeftMargin + itemButtonRightGap + iconSize + tabRightMargin); + tabLeftMargin += (itemButtonRightGap + iconSize); + } + else + { + __itemArea.width -= tabLeftMargin * 2; + } } blockWidth[0] = blockWidth[1] = blockWidth[2] = blockWidth[3] = blockWidth[4] = (__itemArea.width - dividerWidth * 4) / 5; diff --git a/src/ui/inc/FUiCtrl_FooterImpl.h b/src/ui/inc/FUiCtrl_FooterImpl.h index c0dba65..4f45436 100644 --- a/src/ui/inc/FUiCtrl_FooterImpl.h +++ b/src/ui/inc/FUiCtrl_FooterImpl.h @@ -164,6 +164,16 @@ public: virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId); + bool IsOptionButtonSet(void) const; + + ButtonItemStatus GetOptionButtonStatus(void) const; + + result RemoveOptionButton(void); + + result SetOptionButtonEnabled(bool enable); + + result SetOptionButton(void); + private: result CheckItemValidate(const FooterItem& item); diff --git a/src/ui/inc/FUiCtrl_Toolbar.h b/src/ui/inc/FUiCtrl_Toolbar.h index 0e1e678..b2fcc87 100644 --- a/src/ui/inc/FUiCtrl_Toolbar.h +++ b/src/ui/inc/FUiCtrl_Toolbar.h @@ -81,6 +81,7 @@ enum ToolbarButton RIGHT_BUTTON, BACK_BUTTON, MIDDLE_BUTTON, + OPTION_BUTTON, BUTTON_MAX }; @@ -361,6 +362,8 @@ public: void SetBackEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener, int actionId); + void SetOptionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener, int actionId); + virtual result OnAttachedToMainTree(void); virtual void OnFontChanged(Tizen::Graphics::Font* pFont); @@ -451,6 +454,8 @@ private: Tizen::Ui::Controls::_IActionEventListener* __pBackEventListener; + Tizen::Ui::Controls::_IActionEventListener* __pOptionEventListener; + _TouchLongPressGestureDetector* __pLongPressGesture; _TouchFlickGestureDetector* __pFlickGesture; @@ -512,6 +517,8 @@ private: int __backActionId; + int __optionActionId; + int __itemCount; ToolbarStyle __style; diff --git a/src/ui/inc/FUi_ResourceFooterConfig.h b/src/ui/inc/FUi_ResourceFooterConfig.h index 9fae1f9..66f74e0 100644 --- a/src/ui/inc/FUi_ResourceFooterConfig.h +++ b/src/ui/inc/FUi_ResourceFooterConfig.h @@ -119,6 +119,10 @@ DECLARE_UI_CONFIG(FOOTER); DECLARE_COLOR_CONFIG(DIVIDER_LINE_RIGHT_NORMAL, 92); DECLARE_COLOR_CONFIG(DIVIDER_LINE_LEFT_TRANSLUCENT_NORMAL, 93); DECLARE_COLOR_CONFIG(DIVIDER_LINE_RIGHT_TRANSLUCENT_NORMAL, 94); + DECLARE_COLOR_CONFIG(MORE_ICON_NORMAL, 95); + DECLARE_COLOR_CONFIG(MORE_ICON_DISABLED, 96); + DECLARE_COLOR_CONFIG(MORE_ICON_PRESSED, 97); + DECLARE_COLOR_CONFIG(MORE_ICON_HIGHLIGHTED, 98); // BITMAP DECLARE_IMAGE_CONFIG(BG_NORMAL, 1); DECLARE_IMAGE_CONFIG(TRANSLUCENT_BG_NORMAL, 2); diff --git a/src/ui/resource/FUi_ResourceFooterConfig.cpp b/src/ui/resource/FUi_ResourceFooterConfig.cpp index 97b7c48..14558a0 100644 --- a/src/ui/resource/FUi_ResourceFooterConfig.cpp +++ b/src/ui/resource/FUi_ResourceFooterConfig.cpp @@ -145,6 +145,11 @@ START_UI_CONFIG(FOOTER); ADD_COLOR_CONFIG(DIVIDER_LINE_LEFT_TRANSLUCENT_NORMAL, $B0227); ADD_COLOR_CONFIG(DIVIDER_LINE_RIGHT_TRANSLUCENT_NORMAL, $B0228); + ADD_COLOR_CONFIG(MORE_ICON_NORMAL, $B052L1); + ADD_COLOR_CONFIG(MORE_ICON_DISABLED, $B052L1D); + ADD_COLOR_CONFIG(MORE_ICON_PRESSED, $B052L1P); + ADD_COLOR_CONFIG(MORE_ICON_HIGHLIGHTED, $B052L1); + // BITMAP ADD_IMAGE_CONFIG(BG_NORMAL, #00_toolbar_bg.#.png); ADD_IMAGE_CONFIG(TRANSLUCENT_BG_NORMAL, #00_toolbar_bg.#.png); -- 2.7.4