summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@nokia.com>2011-10-11 16:20:47 +0200
committerQt by Nokia <qt-info@nokia.com>2011-10-27 11:12:38 +0200
commit5aa14793c422dc77f3b464c27091dcd1b2ed1c72 (patch)
tree8a167a67e5d1456a774e176db31a627d0a89cd33 /src
parent8f912c5c0f3f89e6f3042c0a948ccd155e57e216 (diff)
Add default actions to QAccessibleWidget.
Change-Id: I9f251aad663fd0b8db2ef068c6581241d91c090d Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/gui/accessible/qaccessible2.cpp31
-rw-r--r--src/gui/accessible/qaccessible2.h2
-rw-r--r--src/plugins/accessible/widgets/complexwidgets.h2
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.cpp24
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.h2
-rw-r--r--src/widgets/accessible/qaccessiblewidget.cpp27
-rw-r--r--src/widgets/accessible/qaccessiblewidget.h8
7 files changed, 59 insertions, 37 deletions
diff --git a/src/gui/accessible/qaccessible2.cpp b/src/gui/accessible/qaccessible2.cpp
index b33d9755c5..b3ad00cbce 100644
--- a/src/gui/accessible/qaccessible2.cpp
+++ b/src/gui/accessible/qaccessible2.cpp
@@ -198,32 +198,17 @@ QT_BEGIN_NAMESPACE
\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
diff --git a/src/gui/accessible/qaccessible2.h b/src/gui/accessible/qaccessible2.h
index 65e63b4fbf..d3777d6561 100644
--- a/src/gui/accessible/qaccessible2.h
+++ b/src/gui/accessible/qaccessible2.h
@@ -43,6 +43,7 @@
#define QACCESSIBLE2_H
#include <QtGui/qaccessible.h>
+#include <QtCore/qcoreapplication.h>
QT_BEGIN_HEADER
@@ -328,6 +329,7 @@ friend class QAbstractItemViewPrivate;
class Q_GUI_EXPORT QAccessibleActionInterface: public QAccessible2Interface
{
+ Q_DECLARE_TR_FUNCTIONS(QAccessibleActionInterface)
public:
inline QAccessible2Interface *qAccessibleActionCastHelper() { return this; }
diff --git a/src/plugins/accessible/widgets/complexwidgets.h b/src/plugins/accessible/widgets/complexwidgets.h
index 980eee2502..13fe9beb9f 100644
--- a/src/plugins/accessible/widgets/complexwidgets.h
+++ b/src/plugins/accessible/widgets/complexwidgets.h
@@ -250,7 +250,7 @@ protected:
#endif // QT_NO_TABBAR
#ifndef QT_NO_COMBOBOX
-class QAccessibleComboBox : public QAccessibleWidget, public QAccessibleActionInterface
+class QAccessibleComboBox : public QAccessibleWidget
{
Q_ACCESSIBLE_OBJECT
public:
diff --git a/src/plugins/accessible/widgets/simplewidgets.cpp b/src/plugins/accessible/widgets/simplewidgets.cpp
index 4771d93980..d2c5256b19 100644
--- a/src/plugins/accessible/widgets/simplewidgets.cpp
+++ b/src/plugins/accessible/widgets/simplewidgets.cpp
@@ -187,6 +187,7 @@ QStringList QAccessibleButton::actionNames() const
break;
}
}
+ names << QAccessibleWidget::actionNames();
return names;
}
@@ -203,12 +204,13 @@ void QAccessibleButton::doAction(const QString &actionName)
else
#endif
button()->animateClick();
- }
-
- if (actionName == CheckAction)
+ } else if (actionName == CheckAction) {
button()->setChecked(true);
- if (actionName == UncheckAction)
+ } else if (actionName == UncheckAction) {
button()->setChecked(false);
+ } else {
+ QAccessibleWidget::doAction(actionName);
+ }
}
QStringList QAccessibleButton::keyBindingsForAction(const QString &actionName) const
@@ -456,10 +458,10 @@ QAccessible::Relation QAccessibleDisplay::relationTo(int child, const QAccessibl
#endif
#ifndef QT_NO_GROUPBOX
} else {
- QGroupBox *groupbox = qobject_cast<QGroupBox*>(object());
- if (groupbox && !groupbox->title().isEmpty())
- if (groupbox->children().contains(o))
- relation |= Label;
+ QGroupBox *groupbox = qobject_cast<QGroupBox*>(object());
+ if (groupbox && !groupbox->title().isEmpty())
+ if (groupbox->children().contains(o))
+ relation |= Label;
#endif
}
return relation;
@@ -478,9 +480,9 @@ int QAccessibleDisplay::navigate(RelationFlag rel, int entry, QAccessibleInterfa
#endif
#ifndef QT_NO_GROUPBOX
} else {
- QGroupBox *groupbox = qobject_cast<QGroupBox*>(object());
- if (groupbox && !groupbox->title().isEmpty())
- rel = Child;
+ QGroupBox *groupbox = qobject_cast<QGroupBox*>(object());
+ if (groupbox && !groupbox->title().isEmpty())
+ rel = Child;
#endif
}
*target = QAccessible::queryAccessibleInterface(targetObject);
diff --git a/src/plugins/accessible/widgets/simplewidgets.h b/src/plugins/accessible/widgets/simplewidgets.h
index 252d994d1b..8642f8d9b9 100644
--- a/src/plugins/accessible/widgets/simplewidgets.h
+++ b/src/plugins/accessible/widgets/simplewidgets.h
@@ -55,7 +55,7 @@ class QLineEdit;
class QToolButton;
class QProgressBar;
-class QAccessibleButton : public QAccessibleWidget, public QAccessibleActionInterface
+class QAccessibleButton : public QAccessibleWidget
{
Q_ACCESSIBLE_OBJECT
Q_DECLARE_TR_FUNCTIONS(QAccessibleButton)
diff --git a/src/widgets/accessible/qaccessiblewidget.cpp b/src/widgets/accessible/qaccessiblewidget.cpp
index 9e11ab88c6..b4613a6eb8 100644
--- a/src/widgets/accessible/qaccessiblewidget.cpp
+++ b/src/widgets/accessible/qaccessiblewidget.cpp
@@ -819,6 +819,33 @@ QString QAccessibleWidget::text(Text t, int child) const
return str;
}
+QStringList QAccessibleWidget::actionNames() const
+{
+ QStringList names;
+ if (widget()->isEnabled()) {
+ if (widget()->focusPolicy() != Qt::NoFocus)
+ names << SetFocusAction;
+ }
+ return names;
+}
+
+void QAccessibleWidget::doAction(const QString &actionName)
+{
+ if (!widget()->isEnabled())
+ return;
+
+ if (actionName == SetFocusAction) {
+ if (widget()->isWindow())
+ widget()->activateWindow();
+ widget()->setFocus();
+ }
+}
+
+QStringList QAccessibleWidget::keyBindingsForAction(const QString &actionName) const
+{
+ return QStringList();
+}
+
/*! \reimp */
QAccessible::Role QAccessibleWidget::role(int child) const
{
diff --git a/src/widgets/accessible/qaccessiblewidget.h b/src/widgets/accessible/qaccessiblewidget.h
index 9a6dae69e7..e3b5a86356 100644
--- a/src/widgets/accessible/qaccessiblewidget.h
+++ b/src/widgets/accessible/qaccessiblewidget.h
@@ -54,8 +54,9 @@ QT_MODULE(Gui)
class QAccessibleWidgetPrivate;
-class Q_WIDGETS_EXPORT QAccessibleWidget : public QAccessibleObject
+class Q_WIDGETS_EXPORT QAccessibleWidget : public QAccessibleObject, public QAccessibleActionInterface
{
+ Q_ACCESSIBLE_OBJECT
public:
explicit QAccessibleWidget(QWidget *o, Role r = Client, const QString& name = QString());
@@ -80,6 +81,11 @@ public:
QVariant invokeMethod(Method method, int child, const QVariantList &params);
+ // QAccessibleActionInterface
+ QStringList actionNames() const;
+ void doAction(const QString &actionName);
+ QStringList keyBindingsForAction(const QString &actionName) const;
+
protected:
~QAccessibleWidget();
QWidget *widget() const;