+ TableView tableView = TableView::New(4, 4);
+ tableView.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true);
+ tableView.SetProperty(Dali::Actor::Property::NAME, "TableView");
+
+ for(int row = 0; row < 4; ++row)
+ {
+ for(int col = 0; col < 4; ++col)
+ {
+ Control control = Control::New();
+ std::ostringstream str;
+ str << row << "-" << col;
+ control.SetProperty(Dali::Actor::Property::NAME, str.str());
+ control.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true);
+ tableView.AddChild(control, TableView::CellPosition(row, col));
+ }
+ }
+
+ application.GetScene().Add(tableView);
+
+ application.SendNotification();
+ application.Render();
+
+ Actor firstFocusActor = Toolkit::Internal::GetImplementation(tableView).GetNextKeyboardFocusableActor(Actor(), Control::KeyboardFocus::RIGHT, true);
+ DALI_TEST_CHECK(firstFocusActor);
+ DALI_TEST_CHECK(firstFocusActor.GetProperty<std::string>(Dali::Actor::Property::NAME) == "0-0");
+
+ KeyboardFocusManager manager = KeyboardFocusManager::Get();
+ manager.SetFocusGroupLoop(true);
+ manager.SetCurrentFocusActor(firstFocusActor);
+
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "0-0");
+ manager.MoveFocus(Control::KeyboardFocus::RIGHT);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "0-1");
+ manager.MoveFocus(Control::KeyboardFocus::RIGHT);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "0-2");
+ manager.MoveFocus(Control::KeyboardFocus::RIGHT);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "0-3");
+ manager.MoveFocus(Control::KeyboardFocus::RIGHT);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "1-0");
+
+ manager.MoveFocus(Control::KeyboardFocus::LEFT);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "0-3");
+ manager.MoveFocus(Control::KeyboardFocus::LEFT);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "0-2");
+ manager.MoveFocus(Control::KeyboardFocus::LEFT);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "0-1");
+ manager.MoveFocus(Control::KeyboardFocus::LEFT);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "0-0");
+ manager.MoveFocus(Control::KeyboardFocus::LEFT);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "3-3");
+
+ manager.MoveFocus(Control::KeyboardFocus::RIGHT);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "0-0");
+ manager.MoveFocus(Control::KeyboardFocus::RIGHT);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "0-1");
+
+ manager.MoveFocus(Control::KeyboardFocus::DOWN);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "1-1");
+ manager.MoveFocus(Control::KeyboardFocus::DOWN);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "2-1");
+ manager.MoveFocus(Control::KeyboardFocus::DOWN);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "3-1");
+ manager.MoveFocus(Control::KeyboardFocus::DOWN);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "0-1");
+
+ manager.MoveFocus(Control::KeyboardFocus::UP);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "3-1");
+ manager.MoveFocus(Control::KeyboardFocus::UP);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "2-1");
+ manager.MoveFocus(Control::KeyboardFocus::UP);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "1-1");
+ manager.MoveFocus(Control::KeyboardFocus::UP);
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor().GetProperty<std::string>(Dali::Actor::Property::NAME) == "0-1");
+
+ END_TEST;
+}
+
+int UtcDaliTableViewKeyboardFocusInNestedTableView(void)
+{
+ ToolkitTestApplication application;
+
+ TableView tableView = TableView::New(3, 3);
+ tableView.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true);
+ tableView.SetProperty(Dali::Actor::Property::NAME, "TableView");