apply toolbar forcus and fix prevent
authorMyung Jin Kim <critical.kim@samsung.com>
Mon, 26 Aug 2013 11:09:59 +0000 (20:09 +0900)
committerMyung Jin Kim <critical.kim@samsung.com>
Mon, 26 Aug 2013 11:09:59 +0000 (20:09 +0900)
Change-Id: I6e83d06d411acd3e8a6e2de906fe3e8156a94e96

src/ui/controls/FUiCtrl_Toolbar.cpp
src/ui/inc/FUiCtrl_Toolbar.h

index 1df57a6..82afc0d 100644 (file)
@@ -1758,6 +1758,9 @@ _Toolbar::SetButtonEnabled(ToolbarButton position, bool enabled)
        if (enabled)
        {
                __pButtonItems[position]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+
+               SetFocusNavigateEnabled(true);
+
                _AccessibilityElement* pElement = __pButtonItems[position]->GetAccessibilityContainer()->GetChildElement(0);
                if (pElement)
                {
@@ -1768,6 +1771,58 @@ _Toolbar::SetButtonEnabled(ToolbarButton position, bool enabled)
        else
        {
                __pButtonItems[position]->SetButtonStatus(_BUTTON_STATUS_DISABLED);
+
+               bool AllItemDisabled = true;
+
+               for (int i = 0; i < __itemCount ; i++)
+               {
+                       if (__pItems.at(i)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                       {
+                               AllItemDisabled = false;
+                               break;
+                       }
+               }
+
+               bool AllButtonDisabled = false;
+
+               if (__pButtonItems[LEFT_BUTTON])
+               {
+                       if (__pButtonItems[RIGHT_BUTTON])
+                       {
+                               if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() == _BUTTON_STATUS_DISABLED
+                                               && __pButtonItems[RIGHT_BUTTON]->GetButtonStatus() == _BUTTON_STATUS_DISABLED)
+                               {
+                                       AllButtonDisabled = true;
+                               }
+                       }
+                       else
+                       {
+                               if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() == _BUTTON_STATUS_DISABLED)
+                               {
+                                       AllButtonDisabled = true;
+                               }
+                       }
+               }
+               else
+               {
+                       if (__pButtonItems[RIGHT_BUTTON])
+                       {
+                               if (__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() == _BUTTON_STATUS_DISABLED)
+                               {
+                                       AllButtonDisabled = true;
+                               }
+                       }
+                       else
+                       {
+                               AllButtonDisabled = true;
+                       }
+               }
+
+               if (AllItemDisabled == true && AllButtonDisabled == true)
+               {
+                       SetFocusNavigateEnabled(false);
+               }
+
                _AccessibilityElement* pElement = __pButtonItems[position]->GetAccessibilityContainer()->GetChildElement(0);
                if (pElement)
                {
@@ -2032,7 +2087,7 @@ _Toolbar::SetItemAt(int itemIndex, const _Button* pButton)
        SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < __itemCount), E_OUT_OF_RANGE,
                                "[E_OUT_OF_RANGE] The itemIndex is out of range.");
 
-       if (pButton->GetActionId() < TOOLBAR_ACTION_ID_MIN || pButton->GetActionId() > TOOLBAR_ACTION_ID_MAX)
+       if (pButton->GetActionId() < TOOLBAR_ACTION_ID_MIN)
        {
                SysLog(NID_UI_CTRL, "[E_INVALID_ARG] The actionId is invalid.");
                return E_OUT_OF_RANGE;
@@ -2203,6 +2258,8 @@ _Toolbar::SetItemEnabled(int itemIndex, bool enabled)
        SysTryReturnResult(NID_UI_CTRL, (null != __pItems.at(itemIndex)), E_INVALID_OPERATION,
                                "[E_INVALID_OPERATION] No button item is at the position.");
 
+       result r = E_SUCCESS;
+
        if (enabled)
        {
                _AccessibilityElement* pElement = __pItems.at(itemIndex)->GetAccessibilityContainer()->GetChildElement(0);
@@ -2211,7 +2268,12 @@ _Toolbar::SetItemEnabled(int itemIndex, bool enabled)
                        pElement->SetStatus(L"");
                        pElement->SetHintDisabled(false);
                }
-               return __pItems.at(itemIndex)->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+
+               r = __pItems.at(itemIndex)->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+
+               SetFocusNavigateEnabled(true);
+
+               return r;
        }
        else
        {
@@ -2221,7 +2283,61 @@ _Toolbar::SetItemEnabled(int itemIndex, bool enabled)
                        pElement->SetStatus(L"");
                        pElement->SetHintDisabled(true);
                }
-               return __pItems.at(itemIndex)->SetButtonStatus(_BUTTON_STATUS_DISABLED);
+
+               r = __pItems.at(itemIndex)->SetButtonStatus(_BUTTON_STATUS_DISABLED);
+
+               bool AllItemDisabled = true;
+
+               for (int i = 0; i < __itemCount ; i++)
+               {
+                       if (__pItems.at(i)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                       {
+                               AllItemDisabled = false;
+                               break;
+                       }
+               }
+
+               bool AllButtonDisabled = false;
+
+               if (__pButtonItems[LEFT_BUTTON])
+               {
+                       if (__pButtonItems[RIGHT_BUTTON])
+                       {
+                               if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() == _BUTTON_STATUS_DISABLED
+                                               && __pButtonItems[RIGHT_BUTTON]->GetButtonStatus() == _BUTTON_STATUS_DISABLED)
+                               {
+                                       AllButtonDisabled = true;
+                               }
+                       }
+                       else
+                       {
+                               if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() == _BUTTON_STATUS_DISABLED)
+                               {
+                                       AllButtonDisabled = true;
+                               }
+                       }
+               }
+               else
+               {
+                       if (__pButtonItems[RIGHT_BUTTON])
+                       {
+                               if (__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() == _BUTTON_STATUS_DISABLED)
+                               {
+                                       AllButtonDisabled = true;
+                               }
+                       }
+                       else
+                       {
+                               AllButtonDisabled = true;
+                       }
+               }
+
+               if (AllItemDisabled == true && AllButtonDisabled == true)
+               {
+                       SetFocusNavigateEnabled(false);
+               }
+
+               return r;
        }
 
        return E_SUCCESS;
@@ -3382,7 +3498,7 @@ _Toolbar::OnAncestorVisibleStateChanged(const _Control& control)
 void
 _Toolbar::OnDrawFocus(void)
 {
-       if (IsFocusModeStateEnabled() == false)
+       if (IsFocusModeStateEnabled() == true)
        {
                if (__itemCount == 0)
                {
index 67d7943..edb74bf 100644 (file)
@@ -55,7 +55,6 @@ class _ActionEvent;
 const int TOOLBAR_BUTTON_MAX_STATE_COUNT = 4;
 const int TOOLBAR_ITEM_MAX_STATE_COUNT = 5;
 const int TOOLBAR_ACTION_ID_MIN = 0;
-const int TOOLBAR_ACTION_ID_MAX = (int) 0x7FFFFFFF;
 const int TOOLBAR_MORE_BUTTON_ID = -2;
 const int TAB_ITEM_MAX = 15;
 const int SEGMENTED_ITEM_MAX = 4;