\sa actionNames()
*/
-const QString QAccessibleActionInterface::PressAction = QStringLiteral("Press");
-const QString QAccessibleActionInterface::IncreaseAction = QStringLiteral("Increase");
-const QString QAccessibleActionInterface::DecreaseAction = QStringLiteral("Decrease");
-const QString QAccessibleActionInterface::ShowMenuAction = QStringLiteral("ShowMenu");
-const QString QAccessibleActionInterface::SetFocusAction = QStringLiteral("SetFocus");
-const QString QAccessibleActionInterface::CheckAction = QStringLiteral("Check");
-const QString QAccessibleActionInterface::UncheckAction = QStringLiteral("Uncheck");
+const QString QAccessibleActionInterface::PressAction = QStringLiteral(QT_TR_NOOP("Press"));
+const QString QAccessibleActionInterface::IncreaseAction = QStringLiteral(QT_TR_NOOP("Increase"));
+const QString QAccessibleActionInterface::DecreaseAction = QStringLiteral(QT_TR_NOOP("Decrease"));
+const QString QAccessibleActionInterface::ShowMenuAction = QStringLiteral(QT_TR_NOOP("ShowMenu"));
+const QString QAccessibleActionInterface::SetFocusAction = QStringLiteral(QT_TR_NOOP("SetFocus"));
+const QString QAccessibleActionInterface::CheckAction = QStringLiteral(QT_TR_NOOP("Check"));
+const QString QAccessibleActionInterface::UncheckAction = QStringLiteral(QT_TR_NOOP("Uncheck"));
QString QAccessibleActionInterface::localizedActionName(const QString &actionName) const
{
- if (actionName == PressAction)
- return QCoreApplication::translate("QAccessibleActionInterface", "Press");
- else if (actionName == IncreaseAction)
- return QCoreApplication::translate("QAccessibleActionInterface", "Increase");
- else if (actionName == DecreaseAction)
- return QCoreApplication::translate("QAccessibleActionInterface", "Decrease");
- else if (actionName == ShowMenuAction)
- return QCoreApplication::translate("QAccessibleActionInterface", "ShowMenu");
- else if (actionName == SetFocusAction)
- return QCoreApplication::translate("QAccessibleActionInterface", "SetFocus");
- else if (actionName == CheckAction)
- return QCoreApplication::translate("QAccessibleActionInterface", "Check");
- else if (actionName == UncheckAction)
- return QCoreApplication::translate("QAccessibleActionInterface", "Uncheck");
-
- return QString();
+ return QAccessibleActionInterface::tr(qPrintable(actionName));
}
QString QAccessibleActionInterface::localizedActionDescription(const QString &actionName) const
void accessibleName();
void labelTest();
void accelerators();
+
+protected slots:
+ void onClicked();
+private:
+ int click_count;
};
const double Q_PI = 3.14159265358979323846;
tst_QAccessibility::tst_QAccessibility()
{
+ click_count = 0;
}
tst_QAccessibility::~tst_QAccessibility()
{
}
+void tst_QAccessibility::onClicked()
+{
+ click_count++;
+}
+
void tst_QAccessibility::initTestCase()
{
QTestAccessibility::initialize();
void tst_QAccessibility::actionTest()
{
+ {
QCOMPARE(QAccessibleActionInterface::PressAction, QString("Press"));
QWidget *widget = new QWidget;
+ widget->setFocusPolicy(Qt::NoFocus);
widget->show();
- QAccessibleInterface *test = QAccessible::queryAccessibleInterface(widget);
- QVERIFY(test);
- QVERIFY(test->isValid());
-
-// QCOMPARE(test->actionText(1, QAccessible::Name, 0), QString());
-// QCOMPARE(test->actionText(0, QAccessible::Name, 1), QString());
-// QCOMPARE(test->actionText(1, QAccessible::Name, 1), QString());
-// QCOMPARE(test->actionText(QAccessible::SetFocus, QAccessible::Name, -1), QString());
+ QAccessibleInterface *interface = QAccessible::queryAccessibleInterface(widget);
+ QVERIFY(interface);
+ QVERIFY(interface->isValid());
+ QAccessibleActionInterface *actions = interface->actionInterface();
+ QVERIFY(actions);
-// QCOMPARE(test->actionText(QAccessible::DefaultAction, QAccessible::Name, 0), QString("SetFocus"));
-// QCOMPARE(test->actionText(QAccessible::SetFocus, QAccessible::Name, 0), QString("SetFocus"));
+ // no actions by default, except when focusable
+ QCOMPARE(actions->actionNames(), QStringList());
+ widget->setFocusPolicy(Qt::StrongFocus);
+ QCOMPARE(actions->actionNames(), QStringList() << QAccessibleActionInterface::SetFocusAction);
- delete test;
+ delete interface;
delete widget;
+ }
+ QTestAccessibility::clearEvents();
+ {
+ QPushButton *button = new QPushButton;
+ button->show();
+ QCOMPARE(button->hasFocus(), false);
+ QAccessibleInterface *interface = QAccessible::queryAccessibleInterface(button);
+ QAccessibleActionInterface *actions = interface->actionInterface();
+ QVERIFY(actions);
+
+ // Make sure the "primary action" press comes first!
+ QCOMPARE(actions->actionNames(), QStringList() << QAccessibleActionInterface::PressAction << QAccessibleActionInterface::SetFocusAction);
+
+ actions->doAction(QAccessibleActionInterface::SetFocusAction);
+ QTest::qWait(500);
+ QCOMPARE(button->hasFocus(), true);
+
+ connect(button, SIGNAL(clicked()), this, SLOT(onClicked()));
+ QCOMPARE(click_count, 0);
+ actions->doAction(QAccessibleActionInterface::PressAction);
+ QTest::qWait(500);
+ QCOMPARE(click_count, 1);
+
+ delete interface;
+ delete button;
+ }
QTestAccessibility::clearEvents();
}
QVERIFY(actionInterface != 0);
QCOMPARE(interface->role(), QAccessible::PushButton);
- // currently our buttons only have click as action, press and release are missing
- QCOMPARE(actionInterface->actionNames().size(), 1);
- QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::PressAction);
+ // buttons only have a click action
+ QCOMPARE(actionInterface->actionNames().size(), 2);
+ QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::PressAction << QAccessibleActionInterface::SetFocusAction);
QCOMPARE(pushButton.clickCount, 0);
actionInterface->doAction(QAccessibleActionInterface::PressAction);
QTest::qWait(500);
interface = QAccessible::queryAccessibleInterface(&toggleButton);
actionInterface = interface->actionInterface();
QCOMPARE(interface->role(), QAccessible::CheckBox);
- QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::CheckAction);
+ QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::CheckAction << QAccessibleActionInterface::SetFocusAction);
QCOMPARE(actionInterface->localizedActionDescription(QAccessibleActionInterface::CheckAction), QString("Checks the checkbox"));
QVERIFY(!toggleButton.isChecked());
QVERIFY((interface->state() & QAccessible::Checked) == 0);
QAccessibleInterface *interface = QAccessible::queryAccessibleInterface(&menuButton);
QCOMPARE(interface->role(), QAccessible::ButtonMenu);
QVERIFY(interface->state() & QAccessible::HasPopup);
- QCOMPARE(interface->actionInterface()->actionNames(), QStringList() << QAccessibleActionInterface::ShowMenuAction);
+ QCOMPARE(interface->actionInterface()->actionNames(), QStringList() << QAccessibleActionInterface::ShowMenuAction << QAccessibleActionInterface::SetFocusAction);
// showing the menu enters a new event loop...
// interface->actionInterface()->doAction(QAccessibleActionInterface::ShowMenuAction);
// QTest::qWait(500);
interface = QAccessible::queryAccessibleInterface(&checkBox);
actionInterface = interface->actionInterface();
QCOMPARE(interface->role(), QAccessible::CheckBox);
- QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::CheckAction);
+ QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::CheckAction << QAccessibleActionInterface::SetFocusAction);
QVERIFY((interface->state() & QAccessible::Checked) == 0);
actionInterface->doAction(QAccessibleActionInterface::CheckAction);
QTest::qWait(500);
- QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::UncheckAction);
+ QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::UncheckAction << QAccessibleActionInterface::SetFocusAction);
QVERIFY(interface->state() & QAccessible::Checked);
QVERIFY(checkBox.isChecked());
delete interface;
interface = QAccessible::queryAccessibleInterface(&radio);
actionInterface = interface->actionInterface();
QCOMPARE(interface->role(), QAccessible::RadioButton);
- QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::CheckAction);
+ QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::CheckAction << QAccessibleActionInterface::SetFocusAction);
QVERIFY((interface->state() & QAccessible::Checked) == 0);
actionInterface->doAction(QAccessibleActionInterface::CheckAction);
QTest::qWait(500);
- QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::CheckAction);
+ QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::CheckAction << QAccessibleActionInterface::SetFocusAction);
QVERIFY(interface->state() & QAccessible::Checked);
QVERIFY(checkBox.isChecked());
delete interface;
QTest::qWait(menuFadeDelay);
QVERIFY(!file->isVisible() && !edit->isVisible() && !help->isVisible());
- QVERIFY(!interface->actionInterface());
+ QVERIFY(interface->actionInterface());
+ QCOMPARE(interface->actionInterface()->actionNames(), QStringList());
delete interface;
interface = QAccessible::queryAccessibleInterface(file);
QCOMPARE(interface->childCount(), 5);