X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-KeyboardFocusManager.cpp;h=6d0e8af630bfa91f0df7fb4de28c087ecc10580f;hp=a759616a055e2d8ac16e77335c2eb66c289c2e55;hb=5a80f5b0c8814d86156be28bdcdafcfcd8486b49;hpb=c554768b59fa4b5becd9b809a583e9b3e9c56237 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp b/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp old mode 100755 new mode 100644 index a759616..6d0e8af --- a/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,12 +20,14 @@ // Need to override adaptor classes for toolkit test harness, so include // test harness headers before dali headers. +#include +#include +#include #include - #include -#include #include #include +#include using namespace Dali; using namespace Dali::Toolkit; @@ -296,13 +298,13 @@ int UtcDaliKeyboardFocusManagerSetAndGetCurrentFocusActor(void) // Create the first actor and add it to the stage Actor first = Actor::New(); - first.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(first); + first.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(first); // Create the second actor and add it to the stage Actor second = Actor::New(); - second.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(second); + second.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(second); // Create the third actor but don't add it to the stage Actor third = Actor::New(); @@ -326,14 +328,14 @@ int UtcDaliKeyboardFocusManagerSetAndGetCurrentFocusActor(void) DALI_TEST_CHECK(manager.GetCurrentFocusActor() == second); // Add the third actor to the stage - Stage::GetCurrent().Add(third); + application.GetScene().Add(third); // Check that it will fail to set focus on the third actor as it's not focusable DALI_TEST_CHECK(manager.SetCurrentFocusActor(third) == false); DALI_TEST_CHECK(manager.GetCurrentFocusActor() == second); // Make the third actor focusable - third.SetKeyboardFocusable(true); + third.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); // Check that the focus is successfully moved to the third actor DALI_TEST_CHECK(manager.SetCurrentFocusActor(third) == true); @@ -367,13 +369,13 @@ int UtcDaliKeyboardFocusManagerMoveFocus(void) // Create the first actor and add it to the stage Actor first = Actor::New(); - first.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(first); + first.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(first); // Create the second actor and add it to the stage Actor second = Actor::New(); - second.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(second); + second.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(second); // Move the focus to the right DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == false); @@ -424,15 +426,15 @@ int UtcDaliKeyboardFocusManagerMoveFocus(void) // Create a 2x2 table view and try to move focus inside it TableView tableView = TableView::New( 2, 2 ); - Stage::GetCurrent().Add(tableView); + application.GetScene().Add(tableView); // Create the third actor Actor third = Actor::New(); - third.SetKeyboardFocusable(true); + third.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); // Create the fourth actor Actor fourth = Actor::New(); - fourth.SetKeyboardFocusable(true); + fourth.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); // Add the four children to table view tableView.AddChild(first, TableView::CellPosition(0, 0)); @@ -530,13 +532,13 @@ int UtcDaliKeyboardFocusManagerCustomAlgorithmMoveFocus(void) // Create the first actor and add it to the stage Actor first = Actor::New(); - first.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(first); + first.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(first); // Create the second actor and add it to the stage Actor second = Actor::New(); - second.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(second); + second.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(second); // Move the focus to the right DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == false); @@ -623,10 +625,10 @@ int UtcDaliKeyboardFocusManagerFocusablePropertiesMoveFocus(void) PushButton button1 = PushButton::New(); PushButton button2 = PushButton::New(); - button1.SetKeyboardFocusable(true); - button2.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(button1); - Stage::GetCurrent().Add(button2); + button1.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + button2.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(button1); + application.GetScene().Add(button2); // Set the focus to the button1 DALI_TEST_CHECK(manager.SetCurrentFocusActor(button1) == true); @@ -637,16 +639,16 @@ int UtcDaliKeyboardFocusManagerFocusablePropertiesMoveFocus(void) focusChangedCallback.Reset(); // set the navigation properties of button1 - button1.SetProperty(Toolkit::DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, Property::Value((int)button2.GetId())); - button1.SetProperty(Toolkit::DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID, Property::Value((int)button2.GetId())); - button1.SetProperty(Toolkit::DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, Property::Value((int)button2.GetId())); - button1.SetProperty(Toolkit::DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID, Property::Value((int)button2.GetId())); + button1.SetProperty(Toolkit::DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, Property::Value((int)button2.GetProperty< int >( Actor::Property::ID ))); + button1.SetProperty(Toolkit::DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID, Property::Value((int)button2.GetProperty< int >( Actor::Property::ID ))); + button1.SetProperty(Toolkit::DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, Property::Value((int)button2.GetProperty< int >( Actor::Property::ID ))); + button1.SetProperty(Toolkit::DevelControl::Property::DOWN_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.GetId())); - button2.SetProperty(Toolkit::DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID, Property::Value((int)button1.GetId())); - button2.SetProperty(Toolkit::DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, Property::Value((int)button1.GetId())); - button2.SetProperty(Toolkit::DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID, Property::Value((int)button1.GetId())); + button2.SetProperty(Toolkit::DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, Property::Value((int)button1.GetProperty< int >( Actor::Property::ID ))); + button2.SetProperty(Toolkit::DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID, Property::Value((int)button1.GetProperty< int >( Actor::Property::ID ))); + button2.SetProperty(Toolkit::DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, Property::Value((int)button1.GetProperty< int >( Actor::Property::ID ))); + button2.SetProperty(Toolkit::DevelControl::Property::DOWN_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); @@ -690,14 +692,14 @@ int UtcDaliKeyboardFocusManagerFocusablePropertiesMoveFocus(void) // Create a 1x1 table view and try to move focus inside it TableView tableView = TableView::New( 1, 1 ); - Stage::GetCurrent().Add(tableView); + application.GetScene().Add(tableView); PushButton button = PushButton::New(); - button.SetKeyboardFocusable(true); + button.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); tableView.AddChild(button, TableView::CellPosition(0, 0)); // set the navigation properties of button3 - button.SetProperty(Toolkit::DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, Property::Value((int)button1.GetId())); + button.SetProperty(Toolkit::DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, Property::Value((int)button1.GetProperty< int >( Actor::Property::ID ))); // Set the focus to the button DALI_TEST_CHECK(manager.SetCurrentFocusActor(button) == true); @@ -731,13 +733,13 @@ int UtcDaliKeyboardFocusManagerClearFocus(void) // Create the first actor and add it to the stage Actor first = Actor::New(); - first.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(first); + first.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(first); // Create the second actor and add it to the stage Actor second = Actor::New(); - second.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(second); + second.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(second); // Check that the focus is set on the first actor DALI_TEST_CHECK(manager.SetCurrentFocusActor(first) == true); @@ -819,7 +821,7 @@ int UtcDaliKeyboardFocusManagerGetFocusGroup(void) Actor parent = Actor::New(); Actor child = Actor::New(); parent.Add(child); - Stage::GetCurrent().Add(parent); + application.GetScene().Add(parent); // Create three actors and add them as the children of the first child actor Actor grandChild = Actor::New(); @@ -893,7 +895,7 @@ int UtcDaliKeyboardFocusManagerSignalFocusedActorActivated(void) FocusedActorActivatedCallback focusedActorActivatedCallback(focusedActorActivatedSignalVerified); manager.FocusedActorEnterKeySignal().Connect( &focusedActorActivatedCallback, &FocusedActorActivatedCallback::Callback ); - Integration::KeyEvent returnEvent( "Return", "", "", 0, 0, 0, Integration::KeyEvent::Up, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent returnEvent( "Return", "", "", 0, 0, 0, Integration::KeyEvent::UP, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); // Press Any key to notice physical keyboard event is comming to KeyboardFocusManager // It makes mIsFocusIndicatorEnabled true @@ -901,13 +903,13 @@ int UtcDaliKeyboardFocusManagerSignalFocusedActorActivated(void) // Create the first button and add it to the stage PushButton firstPushButton = PushButton::New(); - firstPushButton.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(firstPushButton); + firstPushButton.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(firstPushButton); // Create the second button and add it to the stage PushButton secondPushButton = PushButton::New(); - secondPushButton.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(secondPushButton); + secondPushButton.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(secondPushButton); // Check that the focus is set on the first button DALI_TEST_CHECK(manager.SetCurrentFocusActor(firstPushButton) == true); @@ -951,8 +953,8 @@ int UtcDaliKeyboardFocusManagerSignalFocusGroupChanged(void) FocusGroupChangedCallback focusGroupChangedCallback(focusGroupChangedSignalVerified); manager.FocusGroupChangedSignal().Connect( &focusGroupChangedCallback, &FocusGroupChangedCallback::Callback ); - Integration::KeyEvent tabEvent( "Tab", "", "", 0, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); - Integration::KeyEvent shiftTabEvent( "Tab", "", "", 0, 1, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent tabEvent( "Tab", "", "", 0, 0, 0, Integration::KeyEvent::DOWN, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent shiftTabEvent( "Tab", "", "", 0, 1, 0, Integration::KeyEvent::DOWN, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); // Press Any key to notice physical keyboard event is comming to KeyboardFocusManager // It makes mIsFocusIndicatorEnabled true @@ -1001,23 +1003,23 @@ int UtcDaliKeyboardFocusManagerMoveFocusBackward(void) // Create the first actor and add it to the stage Actor first = Actor::New(); - first.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(first); + first.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(first); // Create the second actor and add it to the stage Actor second = Actor::New(); - second.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(second); + second.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(second); // Create the third actor and add it to the stage Actor third = Actor::New(); - third.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(third); + third.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(third); // Create the fourth actor and add it to the stage Actor fourth = Actor::New(); - fourth.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(fourth); + fourth.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(fourth); // Check that the focus is set on the second actor DALI_TEST_CHECK(manager.SetCurrentFocusActor(first) == true); @@ -1058,8 +1060,8 @@ int UtcDaliKeyboardFocusManagerMoveFocusBackward(void) for(int i = 0 ; i < 31 ; i ++) { Actor actor = Actor::New(); - actor.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(actor); + actor.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(actor); manager.SetCurrentFocusActor(actor); } @@ -1091,12 +1093,12 @@ int UtcDaliKeyboardFocusManagerChangeFocusDirectionByKeyEvents(void) FocusChangedCallback focusChangedCallback(focusChangedSignalVerified); manager.FocusChangedSignal().Connect( &focusChangedCallback, &FocusChangedCallback::Callback ); - Integration::KeyEvent leftEvent( "Left", "", "", 0, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); - Integration::KeyEvent rightEvent( "Right", "", "", 0, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); - Integration::KeyEvent upEvent( "Up", "", "", 0, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); - Integration::KeyEvent downEvent( "Down", "", "", 0, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); - Integration::KeyEvent pageUpEvent( "Prior", "", "", 0, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); - Integration::KeyEvent pageDownEvent( "Next", "", "", 0, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent leftEvent( "Left", "", "", 0, 0, 0, Integration::KeyEvent::DOWN, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent rightEvent( "Right", "", "", 0, 0, 0, Integration::KeyEvent::DOWN, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent upEvent( "Up", "", "", 0, 0, 0, Integration::KeyEvent::DOWN, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent downEvent( "Down", "", "", 0, 0, 0, Integration::KeyEvent::DOWN, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent pageUpEvent( "Prior", "", "", 0, 0, 0, Integration::KeyEvent::DOWN, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent pageDownEvent( "Next", "", "", 0, 0, 0, Integration::KeyEvent::DOWN, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); // Press Any key to notice physical keyboard event is comming to KeyboardFocusManager // It makes mIsFocusIndicatorEnabled true @@ -1104,23 +1106,23 @@ int UtcDaliKeyboardFocusManagerChangeFocusDirectionByKeyEvents(void) // Create a 2x2 table view and try to move focus inside it TableView tableView = TableView::New( 2, 2 ); - Stage::GetCurrent().Add(tableView); + application.GetScene().Add(tableView); // Create the first actor Actor first = Actor::New(); - first.SetKeyboardFocusable(true); + first.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); // Create the second actor Actor second = Actor::New(); - second.SetKeyboardFocusable(true); + second.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); // Create the third actor Actor third = Actor::New(); - third.SetKeyboardFocusable(true); + third.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); // Create the fourth actor Actor fourth = Actor::New(); - fourth.SetKeyboardFocusable(true); + fourth.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); // Add the four children to table view tableView.AddChild(first, TableView::CellPosition(0, 0)); @@ -1248,7 +1250,7 @@ int UtcDaliKeyboardFocusManagerSignalChangedBySpaceKeyEvent(void) PreFocusChangeCallback preFocusChangeCallback(preFocusChangeSignalVerified); manager.PreFocusChangeSignal().Connect( &preFocusChangeCallback, &PreFocusChangeCallback::Callback ); - Integration::KeyEvent spaceEvent( "space", "", "", 0, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent spaceEvent( "space", "", "", 0, 0, 0, Integration::KeyEvent::DOWN, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); // Press Any key to notice physical keyboard event is comming to KeyboardFocusManager // It makes mIsFocusIndicatorEnabled true @@ -1301,13 +1303,13 @@ int UtcDaliKeyboardFocusManagerMoveFocusTestStateChange(void) // Create the first actor and add it to the stage Control first = Control::New(); - first.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(first); + first.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(first); // Create the second actor and add it to the stage Control second = Control::New(); - second.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(second); + second.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(second); // Move the focus to the right DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == false); @@ -1361,15 +1363,15 @@ int UtcDaliKeyboardFocusManagerMoveFocusTestStateChange(void) // Create a 2x2 table view and try to move focus inside it TableView tableView = TableView::New( 2, 2 ); - Stage::GetCurrent().Add(tableView); + application.GetScene().Add(tableView); // Create the third actor Control third = Control::New(); - third.SetKeyboardFocusable(true); + third.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); // Create the fourth actor Control fourth = Control::New(); - fourth.SetKeyboardFocusable(true); + fourth.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); // Add the four children to table view tableView.AddChild(first, TableView::CellPosition(0, 0)); @@ -1494,14 +1496,14 @@ int UtcDaliKeyboardFocusManagerFocusedActorUnstaged(void) DALI_TEST_CHECK( ! manager.GetCurrentFocusActor() ); Actor actor = Actor::New(); - actor.SetKeyboardFocusable( true ); + actor.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE, true ); tet_infoline( "Attempt to set unstaged actor, no actor should be returned from KeyboardFocusManager" ); manager.SetCurrentFocusActor( actor ); DALI_TEST_CHECK( ! manager.GetCurrentFocusActor() ); tet_infoline( "Add actor to stage and attempt to set, our actor should be returned from KeyboardFocusManager" ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); manager.SetCurrentFocusActor( actor ); DALI_TEST_CHECK( manager.GetCurrentFocusActor() == actor ); @@ -1522,13 +1524,13 @@ int UtcDaliKeyboardFocusManagerEnableFocusIndicator(void) DALI_TEST_CHECK( ! manager.GetCurrentFocusActor() ); Actor actor = Actor::New(); - actor.SetKeyboardFocusable( true ); - Stage::GetCurrent().Add( actor ); + actor.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE, true ); + application.GetScene().Add( actor ); manager.SetCurrentFocusActor( actor ); // Press Any key to notice physical keyboard event is comming to KeyboardFocusManager // It makes mIsFocusIndicatorEnabled true and add focus indicator to focused actor. - Integration::KeyEvent rightEvent( "Right", "", "", 0, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent rightEvent( "Right", "", "", 0, 0, 0, Integration::KeyEvent::DOWN, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); application.ProcessEvent(rightEvent); Actor indicatorActor = manager.GetFocusIndicatorActor(); @@ -1557,7 +1559,7 @@ int UtcDaliKeyboardFocusManagerCheckConsumedKeyEvent(void) // Create the first actor and add it to the stage Control control = Control::New(); - control.SetKeyboardFocusable(true); + control.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); scene.Add(control); KeyEventCallback controlCallback( true ); @@ -1570,7 +1572,7 @@ int UtcDaliKeyboardFocusManagerCheckConsumedKeyEvent(void) // Press Any key to notice physical keyboard event is comming to KeyboardFocusManager // It makes mIsFocusIndicatorEnabled true and add focus indicator to focused actor. - Integration::KeyEvent event1( "Right", "", "", 0, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent event1( "Right", "", "", 0, 0, 0, Integration::KeyEvent::DOWN, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); application.ProcessEvent(event1); DALI_TEST_CHECK( controlCallback.mIsCalled ); @@ -1590,13 +1592,13 @@ int UtcDaliKeyboardFocusManagerFocusPerWindow(void) Window firstWindow = Window::New(PositionSize(0,0,300,500) ,"", false); DALI_TEST_CHECK( firstWindow ); Control first = Control::New(); - first.SetKeyboardFocusable(true); + first.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); firstWindow.Add(first); Window secondWindow = Window::New(PositionSize(0,0,400,600) ,"", false); DALI_TEST_CHECK( secondWindow ); Control second = Control::New(); - second.SetKeyboardFocusable(true); + second.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); secondWindow.Add( second ); DALI_TEST_CHECK(manager.SetCurrentFocusActor(first) == true); @@ -1615,4 +1617,423 @@ int UtcDaliKeyboardFocusManagerFocusPerWindow(void) END_TEST; } +int UtcDaliKeyboardFocusManagerWithoutFocusablePropertiesMoveFocus(void) +{ + ToolkitTestApplication application; + + tet_infoline(" UtcDaliKeyboardFocusManagerWithoutFocusablePropertiesMoveFocus"); + + // Register Type + TypeInfo type; + type = TypeRegistry::Get().GetTypeInfo( "KeyboardFocusManager" ); + DALI_TEST_CHECK( type ); + BaseHandle handle = type.CreateInstance(); + DALI_TEST_CHECK( handle ); + + KeyboardFocusManager manager = KeyboardFocusManager::Get(); + DALI_TEST_CHECK(manager); + + bool focusChangedSignalVerified = false; + FocusChangedCallback focusChangedCallback(focusChangedSignalVerified); + manager.FocusChangedSignal().Connect( &focusChangedCallback, &FocusChangedCallback::Callback ); + + PushButton button1 = PushButton::New(); + PushButton button2 = PushButton::New(); + PushButton button3 = PushButton::New(); + PushButton button4 = PushButton::New(); + PushButton button5 = PushButton::New(); + + button1.SetProperty(Actor::Property::SIZE, Vector2(50, 50)); + button2.SetProperty(Actor::Property::SIZE, Vector2(50, 50)); + button3.SetProperty(Actor::Property::SIZE, Vector2(50, 50)); + button4.SetProperty(Actor::Property::SIZE, Vector2(50, 50)); + button5.SetProperty(Actor::Property::SIZE, Vector2(50, 50)); + + button1.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE,true); + button2.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE,true); + button3.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE,true); + button4.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE,true); + button5.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE,true); + + application.GetScene().Add(button1); + application.GetScene().Add(button2); + application.GetScene().Add(button3); + button5.Add(button4); + application.GetScene().Add(button5); + + // set position + // button1 -- button2 + // | | + // | button5| + // button3 -- button4 + button1.SetProperty(Actor::Property::POSITION, Vector2(0.0f, 0.0f)); + button2.SetProperty(Actor::Property::POSITION, Vector2(100.0f, 0.0f)); + button3.SetProperty(Actor::Property::POSITION, Vector2(0.0f, 100.0f)); + button4.SetProperty(Actor::Property::POSITION, Vector2(40.0f, 40.0f)); + button5.SetProperty(Actor::Property::POSITION, Vector2(60.0f, 60.0f)); + + // flush the queue and render once + application.SendNotification(); + application.Render(); + + // Set the focus to the button1 + // [button1] -- button2 + // | | + // | button5| + // button3 -- button4 + DALI_TEST_CHECK(manager.SetCurrentFocusActor(button1) == true); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == button1); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == Actor()); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == button1); + focusChangedCallback.Reset(); + + // without set the navigation properties, but we can focus move + // enable the default algorithm + Dali::Toolkit::DevelKeyboardFocusManager::EnableDefaultAlgorithm(manager, true); + DALI_TEST_CHECK( Dali::Toolkit::DevelKeyboardFocusManager::IsDefaultAlgorithmEnabled(manager) ); + + // Move the focus towards right + // button1 -- [button2] + // | | + // | button5| + // button3 -- button4 + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == 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 down + // button1 -- button2 + // | | + // | [button5]| + // button3 -- button4 + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::DOWN) == true); + + // Confirm whether focus is moved to button5 + DALI_TEST_EQUALS(button5.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 == button5); + focusChangedCallback.Reset(); + + // Move the focus towards right + // button1 -- button2 + // | | + // | button5| + // button3 -- [button4] + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == true); + + // Confirm whether focus is moved to button4 + DALI_TEST_EQUALS(button4.GetProperty(DevelControl::Property::STATE), (int)DevelControl::FOCUSED, TEST_LOCATION); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == button5); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == button4); + focusChangedCallback.Reset(); + + // Move the focus towards left + // button1 -- button2 + // | | + // | [button5]| + // button3 -- button4 + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::LEFT) == true); + + // Confirm whether focus is moved to button5 + DALI_TEST_EQUALS(button5.GetProperty(DevelControl::Property::STATE), (int)DevelControl::FOCUSED, TEST_LOCATION); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == button4); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == button5); + focusChangedCallback.Reset(); + + // Move the focus towards left + // button1 -- button2 + // | | + // | button5| + //[button3] -- button4 + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::LEFT) == true); + + // Confirm whether focus is moved to button3 + DALI_TEST_EQUALS(button3.GetProperty(DevelControl::Property::STATE), (int)DevelControl::FOCUSED, TEST_LOCATION); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == button5); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == button3); + focusChangedCallback.Reset(); + + // Move the focus towards right + // button1 -- button2 + // | | + // | [button5]| + // button3 -- button4 + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == true); + + // Confirm whether focus is moved to button5 + DALI_TEST_EQUALS(button5.GetProperty(DevelControl::Property::STATE), (int)DevelControl::FOCUSED, TEST_LOCATION); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == button3); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == button5); + focusChangedCallback.Reset(); + + // Move the focus towards left + // button1 -- button2 + // | | + // | button5| + //[button3] -- button4 + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::LEFT) == true); + + // Confirm whether focus is moved to button3 + DALI_TEST_EQUALS(button3.GetProperty(DevelControl::Property::STATE), (int)DevelControl::FOCUSED, TEST_LOCATION); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == button5); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == button3); + focusChangedCallback.Reset(); + + // Move the focus towards up + //[button1]-- button2 + // | | + // | button5| + // button3 -- button4 + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::UP) == 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 == button3); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == button1); + focusChangedCallback.Reset(); + + + // Move the focus towards left. The focus move will fail as no way to move it upwards + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::LEFT) == false); + + // Move the focus toward page up/down. The focus move will fail as invalid direction. + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::PAGE_UP) == false); + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::PAGE_DOWN) == false); + focusChangedCallback.Reset(); + + END_TEST; +} + + +int UtcDaliKeyboardFocusManagerSetAndGetCurrentFocusActorInTouchMode(void) +{ + ToolkitTestApplication application; + + tet_infoline(" UtcDaliKeyboardFocusManagerSetAndGetCurrentFocusActorInTouchMode"); + + 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::SIZE, Vector2( 50, 50 )); + first.SetProperty(Actor::Property::POSITION, Vector2(0.0f, 0.0f)); + first.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + first.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE,true); + first.SetProperty(DevelActor::Property::TOUCH_FOCUSABLE,true); + application.GetScene().Add(first); + + // Create the second actor and add it to the stage + Actor second = Actor::New(); + second.SetProperty(Actor::Property::SIZE, Vector2( 50, 50 )); + second.SetProperty(Actor::Property::POSITION, Vector2(100.0f, 0.0f)); + second.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + second.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE,true); + application.GetScene().Add(second); + + // flush the queue and render once + application.SendNotification(); + application.Render(); + + // Check that no actor is being focused yet. + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == Actor()); + + // Check that it will fail to set focus on an invalid actor + DALI_TEST_CHECK(manager.SetCurrentFocusActor(Actor()) == false); + + + Dali::Integration::TouchEvent event1 = Dali::Integration::TouchEvent(); + Dali::Integration::Point pointDown1; + pointDown1.SetState( PointState::DOWN ); + pointDown1.SetDeviceId(1); + // touch first actor + pointDown1.SetScreenPosition( Vector2( 10.0f, 10.0f ) ); + event1.AddPoint(pointDown1); + application.ProcessEvent( event1 ); + + // flush the queue and render once + application.SendNotification(); + application.Render(); + + // Check that the focus is successfully to the first actor + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first); + + Dali::Integration::TouchEvent event2 = Dali::Integration::TouchEvent(); + Dali::Integration::Point pointDown2; + pointDown2.SetState( PointState::DOWN ); + pointDown2.SetDeviceId(1); + // touch second actor + pointDown2.SetScreenPosition( Vector2( 110.0f, 10.0f ) ); + event2.AddPoint(pointDown2); + application.ProcessEvent( event2 ); + + // flush the queue and render once + application.SendNotification(); + application.Render(); + + // Check that the focus is successfully to clear + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == Actor()); + + // Make the second actor focusableInTouchMode + second.SetProperty( DevelActor::Property::TOUCH_FOCUSABLE,true); + + // touch second actor + application.ProcessEvent( event2 ); + + // flush the queue and render once + application.SendNotification(); + application.Render(); + + // Check that the focus is successfully to the second actor + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == second); + + END_TEST; +} + +int UtcDaliKeyboardFocusManagerEnableDefaultAlgorithm(void) +{ + ToolkitTestApplication application; + + tet_infoline(" UtcDaliKeyboardFocusManagerEnableDefaultAlgorithm"); + + // Register Type + TypeInfo type; + type = TypeRegistry::Get().GetTypeInfo( "KeyboardFocusManager" ); + DALI_TEST_CHECK( type ); + BaseHandle handle = type.CreateInstance(); + DALI_TEST_CHECK( handle ); + + KeyboardFocusManager manager = KeyboardFocusManager::Get(); + DALI_TEST_CHECK(manager); + + bool focusChangedSignalVerified = false; + FocusChangedCallback focusChangedCallback(focusChangedSignalVerified); + manager.FocusChangedSignal().Connect( &focusChangedCallback, &FocusChangedCallback::Callback ); + + PushButton button1 = PushButton::New(); + PushButton button2 = PushButton::New(); + + button1.SetProperty(Actor::Property::SIZE, Vector2(50, 50)); + button2.SetProperty(Actor::Property::SIZE, Vector2(50, 50)); + + button1.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE,true); + button2.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE,true); + + application.GetScene().Add(button1); + application.GetScene().Add(button2); + + // set position + // button1 -- button2 + button1.SetProperty(Actor::Property::POSITION, Vector2(0.0f, 0.0f)); + button2.SetProperty(Actor::Property::POSITION, Vector2(100.0f, 0.0f)); + + // flush the queue and render once + application.SendNotification(); + application.Render(); + + // Set the focus to the button1 + // [button1] -- button2 + DALI_TEST_CHECK(manager.SetCurrentFocusActor(button1) == true); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == button1); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == Actor()); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == button1); + focusChangedCallback.Reset(); + + // without set the navigation properties, but we can focus move + // enable the default algorithm + Dali::Toolkit::DevelKeyboardFocusManager::EnableDefaultAlgorithm(manager, true); + DALI_TEST_CHECK( Dali::Toolkit::DevelKeyboardFocusManager::IsDefaultAlgorithmEnabled(manager) ); + + // Move the focus towards right + // button1 -- [button2] + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == 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(); + + // disable the default algorithm + Dali::Toolkit::DevelKeyboardFocusManager::EnableDefaultAlgorithm(manager, false); + DALI_TEST_CHECK( !Dali::Toolkit::DevelKeyboardFocusManager::IsDefaultAlgorithmEnabled(manager) ); + + // Move the focus towards left, The focus move will fail because the default algorithm is disabled. + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::LEFT) == false); + + // enable the default algorithm + Dali::Toolkit::DevelKeyboardFocusManager::EnableDefaultAlgorithm(manager, true); + DALI_TEST_CHECK( Dali::Toolkit::DevelKeyboardFocusManager::IsDefaultAlgorithmEnabled(manager) ); + + // Move the focus towards left, The focus move will success because the default algorithm is enabled. + // [button1] -- button2 + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::LEFT) == true); + // Confirm whether focus is moved to button2 + 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(); + + + END_TEST; +} + + +int UtcDaliKeyboardFocusManagerWithKeyboardFocusableChildren(void) +{ + ToolkitTestApplication application; + + tet_infoline(" UtcDaliKeyboardFocusManagerWithKeyboardFocusableChildren"); + + 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 KeyboardFocusableChildren false. + first.SetProperty( DevelActor::Property::KEYBOARD_FOCUSABLE_CHILDREN, false); + + // Check that it will fail to set focus on the second actor as it's not focusable + DALI_TEST_CHECK(manager.SetCurrentFocusActor(second) == false); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first); + + // Set KeyboardFocusableChildren true. + first.SetProperty( DevelActor::Property::KEYBOARD_FOCUSABLE_CHILDREN, 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