apply focus concept
authorMyung Jin Kim <critical.kim@samsung.com>
Thu, 4 Jul 2013 06:50:00 +0000 (15:50 +0900)
committerMyung Jin Kim <critical.kim@samsung.com>
Thu, 4 Jul 2013 06:50:00 +0000 (15:50 +0900)
Change-Id: I65a8ba1882a09b3b9bf2788e5daa92b942a08397

src/ui/controls/FUiCtrl_ButtonPresenter.cpp
src/ui/controls/FUiCtrl_CheckButtonPresenter.cpp
src/ui/controls/FUiCtrl_Toolbar.cpp

index c83daab..a704d2f 100644 (file)
@@ -1152,6 +1152,19 @@ _ButtonPresenter::OnTouchMoveHandled(const _Control& control)
 bool
 _ButtonPresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo)
 {
+       _KeyCode keyCode = keyInfo.GetKeyCode();
+
+       if (__pButton->IsFocusModeStateEnabled() == true && keyCode == _KEY_ENTER)
+       {
+               if (__pButton->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+               {
+                       __pButton->SetButtonStatus(_BUTTON_STATUS_PRESSED);
+               }
+       }
+
+       __pButton->Draw();
+       __pButton->Show();
+
        return false;
 }
 
@@ -1164,6 +1177,9 @@ _ButtonPresenter::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
        {
                if (__pButton->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
                {
+                       __pButton->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                       __pButton->Invalidate();
+
                        __pButton->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
                }
        }
@@ -1540,4 +1556,5 @@ _ButtonPresenter::DrawTabTextDimBitmap(void)
 
        return;
 }
+
 }}} // Tizen::Ui::Controls
index 567fe3b..abcb88b 100644 (file)
@@ -2004,6 +2004,18 @@ _CheckButtonPresenter::OnTouchMoveHandled(const _Control& control)
 bool
 _CheckButtonPresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo)
 {
+       _KeyCode keyCode = keyInfo.GetKeyCode();
+
+       if (__pCheckButton->IsFocusModeStateEnabled() == true && keyCode == _KEY_ENTER)
+       {
+               if (__pCheckButton->GetCheckButtonStatus() != _CHECK_BUTTON_STATUS_DISABLED)
+               {
+                       __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
+               }
+       }
+
+       __pCheckButton->Draw();
+
        return false;
 }
 
@@ -2023,9 +2035,11 @@ _CheckButtonPresenter::OnKeyReleased(const _Control& source, const _KeyInfo& key
                        __ratio = 0;
                }
 
-               __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
+               __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
                __pCheckButton->Invalidate();
 
+               __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
+
                PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pCheckButton);
 
                __pCheckButton->FireActionEvent();
index 49a5edb..11838eb 100644 (file)
@@ -186,6 +186,8 @@ _Toolbar::_Toolbar(void)
                __isButtonTextColorSetByUser[i] = false;
        }
        __pAccessibilityListener = new (std::nothrow) FooterItemAccessibilityListener(this);
+
+       SetFocusNavigateEnabled(false);
 }
 
 _Toolbar::~_Toolbar(void)
@@ -374,7 +376,7 @@ _Toolbar::InitToolbarColor(void)
                        __itemTransBackgroundColor[_BUTTON_STATUS_NORMAL].SetAlpha(0x00);
                        __itemTransBackgroundColor[_BUTTON_STATUS_DISABLED].SetAlpha(0x00);
                        __itemTransBackgroundColor[_BUTTON_STATUS_PRESSED].SetAlpha(0x7F);
-                       __itemTransBackgroundColor[_BUTTON_STATUS_HIGHLIGHTED].SetAlpha(0x00);
+                       __itemTransBackgroundColor[_BUTTON_STATUS_HIGHLIGHTED].SetAlpha(0xFF);
                        __itemTransBackgroundColor[_BUTTON_STATUS_SELECTED].SetAlpha(0x00);
 
                        GET_COLOR_CONFIG(HEADER::BUTTON_TRANSLUCENT_BG_NORMAL, __buttonTransBackgroundColor[_BUTTON_STATUS_NORMAL]);
@@ -385,7 +387,7 @@ _Toolbar::InitToolbarColor(void)
                        __buttonTransBackgroundColor[_BUTTON_STATUS_NORMAL].SetAlpha(0x00);
                        __buttonTransBackgroundColor[_BUTTON_STATUS_DISABLED].SetAlpha(0x00);
                        __buttonTransBackgroundColor[_BUTTON_STATUS_PRESSED].SetAlpha(0x7F);
-                       __buttonTransBackgroundColor[_BUTTON_STATUS_HIGHLIGHTED].SetAlpha(0x00);
+                       __buttonTransBackgroundColor[_BUTTON_STATUS_HIGHLIGHTED].SetAlpha(0xFF);
 
                        GET_COLOR_CONFIG(HEADER::BUTTON_TRANSLUCENT_TEXT_NORMAL, __buttonTransTextColor[_BUTTON_STATUS_NORMAL]);
                        GET_COLOR_CONFIG(HEADER::BUTTON_TRANSLUCENT_TEXT_DISABLED, __buttonTransTextColor[_BUTTON_STATUS_DISABLED]);
@@ -615,7 +617,7 @@ _Toolbar::InitToolbarColor(void)
                        __itemTransBackgroundColor[_BUTTON_STATUS_NORMAL].SetAlpha(0x00);
                        __itemTransBackgroundColor[_BUTTON_STATUS_DISABLED].SetAlpha(0x00);
                        __itemTransBackgroundColor[_BUTTON_STATUS_PRESSED].SetAlpha(0x7F);
-                       __itemTransBackgroundColor[_BUTTON_STATUS_HIGHLIGHTED].SetAlpha(0x00);
+                       __itemTransBackgroundColor[_BUTTON_STATUS_HIGHLIGHTED].SetAlpha(0xFF);
                        __itemTransBackgroundColor[_BUTTON_STATUS_SELECTED].SetAlpha(0x00);
 
 
@@ -627,7 +629,7 @@ _Toolbar::InitToolbarColor(void)
                        __buttonTransBackgroundColor[_BUTTON_STATUS_NORMAL].SetAlpha(0x00);
                        __buttonTransBackgroundColor[_BUTTON_STATUS_DISABLED].SetAlpha(0x00);
                        __buttonTransBackgroundColor[_BUTTON_STATUS_PRESSED].SetAlpha(0x7F);
-                       __buttonTransBackgroundColor[_BUTTON_STATUS_HIGHLIGHTED].SetAlpha(0x00);
+                       __buttonTransBackgroundColor[_BUTTON_STATUS_HIGHLIGHTED].SetAlpha(0xFF);
 
                        GET_COLOR_CONFIG(FOOTER::BUTTON_TRANSLUCENT_TEXT_NORMAL, __buttonTransTextColor[_BUTTON_STATUS_NORMAL]);
                        GET_COLOR_CONFIG(FOOTER::BUTTON_TRANSLUCENT_TEXT_DISABLED, __buttonTransTextColor[_BUTTON_STATUS_DISABLED]);
@@ -866,6 +868,8 @@ _Toolbar::AddItem(_Button* pButton)
        __pItems.push_back(pButton);
        __itemCount++;
 
+       SetFocusNavigateEnabled(true);
+
        AttachChild(*pButton);
 
        ApplyUserGUI(TOOLBAR_ITEM, pButton);
@@ -1248,6 +1252,8 @@ _Toolbar::InsertItemAt(int itemIndex, _Button* pButton)
        __pItems.insert(__pItems.begin() + itemIndex, pButton);
        __itemCount++;
 
+       SetFocusNavigateEnabled(true);
+
        AttachChild(*pButton);
 
        ApplyUserGUI(TOOLBAR_ITEM, pButton);
@@ -1495,6 +1501,11 @@ _Toolbar::RemoveButtonAt(ToolbarButton position)
                __pButtonItems[position] = null;
        }
 
+       if (__itemCount == 0 && __pButtonItems[LEFT_BUTTON] == null && __pButtonItems[RIGHT_BUTTON] == null)
+       {
+               SetFocusNavigateEnabled(false);
+       }
+
        RearrangeItems();
 
        return E_SUCCESS;
@@ -1528,6 +1539,11 @@ _Toolbar::RemoveItemAt(int itemIndex)
 
        __itemCount--;
 
+       if (__itemCount == 0 && __pButtonItems[LEFT_BUTTON] == null && __pButtonItems[RIGHT_BUTTON] == null)
+       {
+               SetFocusNavigateEnabled(false);
+       }
+
        __pItems.erase(__pItems.begin() + itemIndex);
 
        RearrangeItems();
@@ -1675,6 +1691,8 @@ _Toolbar::SetButton(ToolbarButton position, _Button* pButton)
 
        AttachChild(*pButton);
 
+       SetFocusNavigateEnabled(true);
+
        if (__style != TOOLBAR_SOFTKEY)
        {
                ApplyUserGUI(TOOLBAR_BUTTON, __pButtonItems[position]);
@@ -2600,6 +2618,15 @@ _Toolbar::SetStyle(ToolbarStyle style)
                }
        }
 
+       if (__itemCount == 0 && __pButtonItems[LEFT_BUTTON] == null && __pButtonItems[RIGHT_BUTTON] == null)
+       {
+               SetFocusNavigateEnabled(false);
+       }
+       else
+       {
+               SetFocusNavigateEnabled(true);
+       }
+
        return E_SUCCESS;
 }
 
@@ -5186,6 +5213,9 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                                {
                                                        if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
                                                        {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+
                                                                __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
 
                                                                __lastHighlightedItemIndex = __highlightedItemIndex = __itemCount;
@@ -5199,6 +5229,9 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                                {
                                                        if (__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
                                                        {
+                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+
                                                                __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
 
                                                                __lastHighlightedItemIndex = __highlightedItemIndex = __itemCount + 1;
@@ -5236,6 +5269,9 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                                {
                                                        if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
                                                        {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+
                                                                __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
 
                                                                __lastHighlightedItemIndex = __highlightedItemIndex = __itemCount;
@@ -5276,6 +5312,9 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                                {
                                                        if (__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
                                                        {
+                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+
                                                                __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
 
                                                                __lastHighlightedItemIndex = __highlightedItemIndex = __itemCount;
@@ -5322,6 +5361,9 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                                {
                                                        if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
                                                        {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+
                                                                __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
 
                                                                __lastHighlightedItemIndex = __highlightedItemIndex = __itemCount;
@@ -5335,6 +5377,9 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                                {
                                                        if (__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
                                                        {
+                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+
                                                                __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
 
                                                                __lastHighlightedItemIndex = __highlightedItemIndex = __itemCount + 1;
@@ -5351,6 +5396,9 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                                {
                                                        if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
                                                        {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+
                                                                __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
 
                                                                __lastHighlightedItemIndex = __highlightedItemIndex = __itemCount;
@@ -5368,6 +5416,9 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                        {
                                                if (__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
                                                {
+                                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+
                                                        __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
 
                                                        __lastHighlightedItemIndex = __highlightedItemIndex = __itemCount;
@@ -5484,6 +5535,158 @@ _Toolbar::OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo)
 bool
 _Toolbar::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo)
 {
+       _KeyCode keyCode = keyInfo.GetKeyCode();
+
+       if (IsFocusModeStateEnabled() == true && keyCode == _KEY_ENTER)
+       {
+               if (__itemCount != 0)
+               {
+                       if (__pButtonItems[LEFT_BUTTON])
+                       {
+                               if (__pButtonItems[RIGHT_BUTTON]) // L  Item  R
+                               {
+                                       if (__highlightedItemIndex < __itemCount)
+                                       {
+                                               if (__pItems.at(__highlightedItemIndex)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_PRESSED);
+                                               }
+                                       }
+                                       else if (__highlightedItemIndex == __itemCount)
+                                       {
+                                               if (__pButtonItems[LEFT_BUTTON])
+                                               {
+                                                       if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_PRESSED);
+                                                       }
+                                               }
+                                       }
+                                       else if (__highlightedItemIndex == __itemCount + 1)
+                                       {
+                                               if (__pButtonItems[RIGHT_BUTTON])
+                                               {
+                                                       if (__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_PRESSED);
+                                                       }
+                                               }
+                                       }
+                               }
+                               else  // L  Item
+                               {
+                                       if (__highlightedItemIndex < __itemCount)
+                                       {
+                                               if (__pItems.at(__highlightedItemIndex)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_PRESSED);
+                                               }
+                                       }
+                                       else if (__highlightedItemIndex == __itemCount)
+                                       {
+                                               if (__pButtonItems[LEFT_BUTTON])
+                                               {
+                                                       if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_PRESSED);
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+                       else // L is null
+                       {
+                               if (__pButtonItems[RIGHT_BUTTON]) // Item  R
+                               {
+                                       if (__highlightedItemIndex < __itemCount)
+                                       {
+                                               if (__pItems.at(__highlightedItemIndex)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_PRESSED);
+                                               }
+                                       }
+                                       else if (__highlightedItemIndex == __itemCount)
+                                       {
+                                               if (__pButtonItems[RIGHT_BUTTON])
+                                               {
+                                                       if (__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_PRESSED);
+                                                       }
+                                               }
+                                       }
+                               }
+                               else // Item
+                               {
+                                       if (__highlightedItemIndex < __itemCount)
+                                       {
+                                               if (__pItems.at(__highlightedItemIndex)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_PRESSED);
+                                               }
+                                       }
+                               }
+                       }
+               }
+               else // __itemCount == 0
+               {
+                       if (__pButtonItems[LEFT_BUTTON])
+                       {
+                               if (__pButtonItems[RIGHT_BUTTON]) // L   R
+                               {
+                                       if (__highlightedItemIndex == 0)
+                                       {
+                                               if (__pButtonItems[LEFT_BUTTON])
+                                               {
+                                                       if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_PRESSED);
+                                                       }
+                                               }
+                                       }
+                                       else if (__highlightedItemIndex == 1)
+                                       {
+                                               if (__pButtonItems[RIGHT_BUTTON])
+                                               {
+                                                       if (__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_PRESSED);
+                                                       }
+                                               }
+                                       }
+                               }
+                               else  // L
+                               {
+                                       if (__highlightedItemIndex == 0)
+                                       {
+                                               if (__pButtonItems[LEFT_BUTTON])
+                                               {
+                                                       if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_PRESSED);
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+                       else // L is null
+                       {
+                               if (__pButtonItems[RIGHT_BUTTON]) //  R
+                               {
+                                       if (__highlightedItemIndex == 0)
+                                       {
+                                               if (__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_PRESSED);
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
+       Invalidate(true);
+
        return false;
 }