X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-KeyboardFocusManager.cpp;h=1ca7bd43e1be301c8a7bb818262676bf2f1abd95;hb=db765297ffcb69bff573cf14d138835b37afb697;hp=785b5098752ce7d15d93c8ebc7240915bb81f8dc;hpb=5cc17218a4b6d4b459e76623969ac9b927991e6e;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp b/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp index 785b509..1ca7bd4 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp @@ -55,11 +55,12 @@ public: : mInterfaceVerified(interfaceVerified), mCurrentFocusedActor(), mProposedActorToFocus(), - mDirection(Control::KeyboardFocus::LEFT) + mDirection(Control::KeyboardFocus::LEFT), + mDeviceName("") { } - Actor GetNextFocusableActor(Actor currentFocusedActor, Actor proposedActorToFocus, Control::KeyboardFocus::Direction direction) + Actor GetNextFocusableActor(Actor currentFocusedActor, Actor proposedActorToFocus, Control::KeyboardFocus::Direction direction, const std::string& deviceName) { tet_infoline("Verifying CustomAlgorithm()"); @@ -68,6 +69,7 @@ public: mCurrentFocusedActor = currentFocusedActor; mProposedActorToFocus = proposedActorToFocus; mDirection = direction; + mDeviceName = deviceName; return mProposedActorToFocus; } @@ -78,12 +80,14 @@ public: mCurrentFocusedActor = Actor(); mProposedActorToFocus = Actor(); mDirection = Control::KeyboardFocus::LEFT; + mDeviceName = ""; } bool& mInterfaceVerified; Actor mCurrentFocusedActor; Actor mProposedActorToFocus; Control::KeyboardFocus::Direction mDirection; + std::string mDeviceName; }; // Functors to test whether PreFocusChange signal is emitted when the keyboard focus is about to change @@ -578,17 +582,19 @@ int UtcDaliKeyboardFocusManagerCustomAlgorithmMoveFocus(void) preFocusChangeCallback.Reset(); bool customAlgorithmInterfaceVerified = false; + std::string deviceName = "deviceName"; CustomAlgorithm customAlgorithm(customAlgorithmInterfaceVerified); Toolkit::DevelKeyboardFocusManager::SetCustomAlgorithm(manager, customAlgorithm); // Move the focus towards right - DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == false); + DALI_TEST_CHECK(Toolkit::DevelKeyboardFocusManager::MoveFocus(manager, Control::KeyboardFocus::RIGHT, deviceName) == false); // Because no layout control in the stage and the first actor is focused, it should invoke CustomAlgorithm DALI_TEST_CHECK(customAlgorithm.mInterfaceVerified); DALI_TEST_CHECK(customAlgorithm.mCurrentFocusedActor == Actor()); DALI_TEST_CHECK(customAlgorithm.mProposedActorToFocus == Actor()); DALI_TEST_CHECK(customAlgorithm.mDirection == Control::KeyboardFocus::RIGHT); + DALI_TEST_EQUALS(customAlgorithm.mDeviceName, deviceName, TEST_LOCATION ); customAlgorithm.Reset(); // Check that the focus is set on the first actor @@ -600,13 +606,14 @@ int UtcDaliKeyboardFocusManagerCustomAlgorithmMoveFocus(void) focusChangedCallback.Reset(); // Move the focus towards right - DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == false); + DALI_TEST_CHECK(Toolkit::DevelKeyboardFocusManager::MoveFocus(manager, Control::KeyboardFocus::RIGHT, deviceName) == false); // Because no layout control in the stage and the first actor is focused, it should invoke CustomAlgorithm DALI_TEST_CHECK(customAlgorithm.mInterfaceVerified); DALI_TEST_CHECK(customAlgorithm.mCurrentFocusedActor == first); DALI_TEST_CHECK(customAlgorithm.mProposedActorToFocus == Actor()); DALI_TEST_CHECK(customAlgorithm.mDirection == Control::KeyboardFocus::RIGHT); + DALI_TEST_EQUALS(customAlgorithm.mDeviceName, deviceName, TEST_LOCATION ); customAlgorithm.Reset(); // Check that the focus is set on the second actor @@ -618,13 +625,14 @@ int UtcDaliKeyboardFocusManagerCustomAlgorithmMoveFocus(void) focusChangedCallback.Reset(); // Move the focus towards up - DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::UP) == false); + DALI_TEST_CHECK(Toolkit::DevelKeyboardFocusManager::MoveFocus(manager, Control::KeyboardFocus::UP, deviceName) == false); // Because no layout control in the stage and no actor is focused, it should invoke CustomAlgorithm DALI_TEST_CHECK(customAlgorithm.mInterfaceVerified); DALI_TEST_CHECK(customAlgorithm.mCurrentFocusedActor == second); DALI_TEST_CHECK(customAlgorithm.mProposedActorToFocus == Actor()); DALI_TEST_CHECK(customAlgorithm.mDirection == Control::KeyboardFocus::UP); + DALI_TEST_EQUALS(customAlgorithm.mDeviceName, deviceName, TEST_LOCATION ); customAlgorithm.Reset(); DALI_TEST_CHECK(!focusChangedCallback.mSignalVerified); @@ -670,12 +678,16 @@ int UtcDaliKeyboardFocusManagerFocusablePropertiesMoveFocus(void) button1.SetProperty(Toolkit::DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID, Property::Value((int)button2.GetProperty(Actor::Property::ID))); button1.SetProperty(Toolkit::DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, Property::Value((int)button2.GetProperty(Actor::Property::ID))); button1.SetProperty(Toolkit::DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID, Property::Value((int)button2.GetProperty(Actor::Property::ID))); + button1.SetProperty(Toolkit::DevelControl::Property::CLOCKWISE_FOCUSABLE_ACTOR_ID, Property::Value((int)button2.GetProperty< int >( Actor::Property::ID))); + button1.SetProperty(Toolkit::DevelControl::Property::COUNTER_CLOCKWISE_FOCUSABLE_ACTOR_ID, Property::Value((int)button2.GetProperty< int >( Actor::Property::ID))); // set the navigation properties of button2 button2.SetProperty(Toolkit::DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, Property::Value((int)button1.GetProperty(Actor::Property::ID))); button2.SetProperty(Toolkit::DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID, Property::Value((int)button1.GetProperty(Actor::Property::ID))); button2.SetProperty(Toolkit::DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, Property::Value((int)button1.GetProperty(Actor::Property::ID))); button2.SetProperty(Toolkit::DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID, Property::Value((int)button1.GetProperty(Actor::Property::ID))); + button2.SetProperty(Toolkit::DevelControl::Property::CLOCKWISE_FOCUSABLE_ACTOR_ID, Property::Value((int)button1.GetProperty< int >( Actor::Property::ID))); + button2.SetProperty(Toolkit::DevelControl::Property::COUNTER_CLOCKWISE_FOCUSABLE_ACTOR_ID, Property::Value((int)button1.GetProperty< int >( Actor::Property::ID))); // Move the focus towards left DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::LEFT) == true); @@ -717,6 +729,26 @@ int UtcDaliKeyboardFocusManagerFocusablePropertiesMoveFocus(void) DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == button1); focusChangedCallback.Reset(); + // Move the focus towards clockwise + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::CLOCKWISE) == true); + + // Confirm whether focus is moved to button2 + DALI_TEST_EQUALS(button2.GetProperty(DevelControl::Property::STATE), (int)DevelControl::FOCUSED, TEST_LOCATION ); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == button1); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == button2); + focusChangedCallback.Reset(); + + // Move the focus towards clockwise + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::COUNTER_CLOCKWISE) == true); + + // Confirm whether focus is moved to button1 + DALI_TEST_EQUALS(button1.GetProperty(DevelControl::Property::STATE), (int)DevelControl::FOCUSED, TEST_LOCATION ); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == button2); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == button1); + focusChangedCallback.Reset(); + // Create a 1x1 table view and try to move focus inside it TableView tableView = TableView::New(1, 1); application.GetScene().Add(tableView); @@ -1904,8 +1936,8 @@ int UtcDaliKeyboardFocusManagerSetAndGetCurrentFocusActorInTouchMode(void) application.SendNotification(); application.Render(); - // Check that the focus is successfully to clear - DALI_TEST_CHECK(manager.GetCurrentFocusActor() == Actor()); + // Since no focus has been moved, the current focus actor is the same. + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first); // Make the second actor focusableInTouchMode second.SetProperty(DevelActor::Property::TOUCH_FOCUSABLE, true); @@ -2117,3 +2149,107 @@ int UtcDaliKeyboardFocusManagerCheckWheelEvent(void) END_TEST; } + +int UtcDaliKeyboardFocusManagerChangeFocusDirectionByCustomWheelEvent(void) +{ + ToolkitTestApplication application; + + tet_infoline(" UtcDaliKeyboardFocusManagerChangeFocusDirectionByCustomWheelEvent"); + Dali::Integration::Scene scene = application.GetScene(); + + KeyboardFocusManager manager = KeyboardFocusManager::Get(); + DALI_TEST_CHECK(manager); + + bool focusChangedSignalVerified = false; + FocusChangedCallback focusChangedCallback(focusChangedSignalVerified); + manager.FocusChangedSignal().Connect( &focusChangedCallback, &FocusChangedCallback::Callback ); + + Integration::WheelEvent clockwiseEvent(Integration::WheelEvent::CUSTOM_WHEEL, 0, 0u, Vector2(0.0f, 0.0f), 1, 1000u); + Integration::WheelEvent counterClockwiseEvent(Integration::WheelEvent::CUSTOM_WHEEL, 0, 0u, Vector2(0.0f, 0.0f), -1, 1100u); + + // Create the first button + PushButton first = PushButton::New(); + first.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + scene.Add(first); + + // Create the second button + PushButton second = PushButton::New(); + second.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + scene.Add(second); + + // set the navigation properties + first.SetProperty(Toolkit::DevelControl::Property::CLOCKWISE_FOCUSABLE_ACTOR_ID, Property::Value((int)second.GetProperty< int >( Actor::Property::ID ))); + second.SetProperty(Toolkit::DevelControl::Property::COUNTER_CLOCKWISE_FOCUSABLE_ACTOR_ID, Property::Value((int)first.GetProperty< int >( Actor::Property::ID ))); + + // Set the focus to the first actor + DALI_TEST_CHECK(manager.SetCurrentFocusActor(first) == true); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == Actor()); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == first); + focusChangedCallback.Reset(); + + // Send the clockwise wheel event to move the focus towards clockwise + application.ProcessEvent(clockwiseEvent); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == second); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == first); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == second); + focusChangedCallback.Reset(); + + // Send the counter clockwise wheel event to move the focus towards count clockwise + application.ProcessEvent(counterClockwiseEvent); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == second); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == first); + focusChangedCallback.Reset(); + + // Clear the focus + manager.ClearFocus(); + + END_TEST; +} + +int UtcDaliKeyboardFocusManagerWithUserInteractionEnabled(void) +{ + ToolkitTestApplication application; + + tet_infoline(" UtcDaliKeyboardFocusManagerWithUserInteractionEnabled"); + + KeyboardFocusManager manager = KeyboardFocusManager::Get(); + DALI_TEST_CHECK(manager); + + // Create the first actor and add it to the stage + Actor first = Actor::New(); + first.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true); + application.GetScene().Add(first); + + // Create the second actor and add it to the first actor. + Actor second = Actor::New(); + second.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true); + first.Add(second); + + // Check that no actor is being focused yet. + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == Actor()); + + // Check that the focus is set on the first actor + DALI_TEST_CHECK(manager.SetCurrentFocusActor(first) == true); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first); + + // Set USER_INTERACTION_ENABLED false. + second.SetProperty(DevelActor::Property::USER_INTERACTION_ENABLED, false); + + // Check that it will fail to set focus on the second actor as it's not userInteractionEnabled + DALI_TEST_CHECK(manager.SetCurrentFocusActor(second) == false); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first); + + // Set KeyboardFocusableChildren true. + second.SetProperty(DevelActor::Property::USER_INTERACTION_ENABLED, true); + + // Check that the focus is set on the second actor + DALI_TEST_CHECK(manager.SetCurrentFocusActor(second) == true); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == second); + + END_TEST; +} \ No newline at end of file