From 0867f0ae33ee2334381d105e27aadf51d6c6e162 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 27 Oct 2014 14:11:15 +0100 Subject: Add accessible actions for scrolling and page changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I5f6fd352e1022abbe3a94088598f460b17692fca Reviewed-by: Jan Arve Sæther --- src/gui/accessible/qaccessible.cpp | 83 +++++++++++++++++++++- src/gui/accessible/qaccessible.h | 6 ++ .../platforms/ios/quiaccessibilityelement.mm | 29 ++++++++ 3 files changed, 117 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/accessible/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp index 01827c807a..7abe40d30c 100644 --- a/src/gui/accessible/qaccessible.cpp +++ b/src/gui/accessible/qaccessible.cpp @@ -2611,7 +2611,14 @@ struct QAccessibleActionStrings decreaseAction(QStringLiteral(QT_TRANSLATE_NOOP("QAccessibleActionInterface", "Decrease"))), showMenuAction(QStringLiteral(QT_TRANSLATE_NOOP("QAccessibleActionInterface", "ShowMenu"))), setFocusAction(QStringLiteral(QT_TRANSLATE_NOOP("QAccessibleActionInterface", "SetFocus"))), - toggleAction(QStringLiteral(QT_TRANSLATE_NOOP("QAccessibleActionInterface", "Toggle"))) {} + toggleAction(QStringLiteral(QT_TRANSLATE_NOOP("QAccessibleActionInterface", "Toggle"))), + scrollLeftAction(QStringLiteral(QT_TRANSLATE_NOOP("QAccessibleActionInterface", "Scroll Left"))), + scrollRightAction(QStringLiteral(QT_TRANSLATE_NOOP("QAccessibleActionInterface", "Scroll Right"))), + scrollUpAction(QStringLiteral(QT_TRANSLATE_NOOP("QAccessibleActionInterface", "Scroll Up"))), + scrollDownAction(QStringLiteral(QT_TRANSLATE_NOOP("QAccessibleActionInterface", "Scroll Down"))), + previousPageAction(QStringLiteral(QT_TRANSLATE_NOOP("QAccessibleActionInterface", "Previous Page"))), + nextPageAction(QStringLiteral(QT_TRANSLATE_NOOP("QAccessibleActionInterface", "Next Page"))) + {} const QString pressAction; const QString increaseAction; @@ -2619,6 +2626,12 @@ struct QAccessibleActionStrings const QString showMenuAction; const QString setFocusAction; const QString toggleAction; + const QString scrollLeftAction; + const QString scrollRightAction; + const QString scrollUpAction; + const QString scrollDownAction; + const QString previousPageAction; + const QString nextPageAction; QString localizedDescription(const QString &actionName) { @@ -2634,6 +2647,20 @@ struct QAccessibleActionStrings return QAccessibleActionInterface::tr("Sets the focus"); else if (actionName == toggleAction) return QAccessibleActionInterface::tr("Toggles the state"); + else if (actionName == scrollLeftAction) + return QAccessibleActionInterface::tr("Scrolls to the left"); + else if (actionName == scrollRightAction) + return QAccessibleActionInterface::tr("Scrolls to the right"); + else if (actionName == scrollUpAction) + return QAccessibleActionInterface::tr("Scrolls up"); + else if (actionName == scrollDownAction) + return QAccessibleActionInterface::tr("Scrolls down"); + else if (actionName == previousPageAction) + return QAccessibleActionInterface::tr("Goes back a page"); + else if (actionName == nextPageAction) + return QAccessibleActionInterface::tr("Goes to the next page"); + + return QString(); } }; @@ -2704,6 +2731,60 @@ const QString &QAccessibleActionInterface::toggleAction() return accessibleActionStrings()->toggleAction; } +/*! + Returns the name of the scroll left default action. + \sa actionNames(), localizedActionName() + */ +const QString &QAccessibleActionInterface::scrollLeftAction() +{ + return accessibleActionStrings()->scrollLeftAction; +} + +/*! + Returns the name of the scroll right default action. + \sa actionNames(), localizedActionName() + */ +const QString &QAccessibleActionInterface::scrollRightAction() +{ + return accessibleActionStrings()->scrollRightAction; +} + +/*! + Returns the name of the scroll up default action. + \sa actionNames(), localizedActionName() + */ +const QString &QAccessibleActionInterface::scrollUpAction() +{ + return accessibleActionStrings()->scrollUpAction; +} + +/*! + Returns the name of the scroll down default action. + \sa actionNames(), localizedActionName() + */ +const QString &QAccessibleActionInterface::scrollDownAction() +{ + return accessibleActionStrings()->scrollDownAction; +} + +/*! + Returns the name of the previous page default action. + \sa actionNames(), localizedActionName() + */ +const QString &QAccessibleActionInterface::previousPageAction() +{ + return accessibleActionStrings()->previousPageAction; +} + +/*! + Returns the name of the next page default action. + \sa actionNames(), localizedActionName() + */ +const QString &QAccessibleActionInterface::nextPageAction() +{ + return accessibleActionStrings()->nextPageAction; +} + /*! \internal */ QString qAccessibleLocalizedActionDescription(const QString &actionName) { diff --git a/src/gui/accessible/qaccessible.h b/src/gui/accessible/qaccessible.h index 7b5d7a1bfd..1d935cbf2d 100644 --- a/src/gui/accessible/qaccessible.h +++ b/src/gui/accessible/qaccessible.h @@ -635,6 +635,12 @@ public: static const QString &showMenuAction(); static const QString &setFocusAction(); static const QString &toggleAction(); + static const QString &scrollLeftAction(); + static const QString &scrollRightAction(); + static const QString &scrollUpAction(); + static const QString &scrollDownAction(); + static const QString &nextPageAction(); + static const QString &previousPageAction(); }; class Q_GUI_EXPORT QAccessibleImageInterface diff --git a/src/plugins/platforms/ios/quiaccessibilityelement.mm b/src/plugins/platforms/ios/quiaccessibilityelement.mm index 63b6827ad3..3dff271d00 100644 --- a/src/plugins/platforms/ios/quiaccessibilityelement.mm +++ b/src/plugins/platforms/ios/quiaccessibilityelement.mm @@ -193,4 +193,33 @@ action->doAction(QAccessibleActionInterface::decreaseAction()); } +- (BOOL) accessibilityScroll : (UIAccessibilityScrollDirection) direction +{ + QAccessibleInterface *iface = QAccessible::accessibleInterface(self.axid); + QAccessibleActionInterface *action = iface->actionInterface(); + if (!action) + return NO; + switch (direction) { + case UIAccessibilityScrollDirectionRight: + action->doAction(QAccessibleActionInterface::scrollRightAction()); + return YES; + case UIAccessibilityScrollDirectionLeft: + action->doAction(QAccessibleActionInterface::scrollLeftAction()); + return YES; + case UIAccessibilityScrollDirectionUp: + action->doAction(QAccessibleActionInterface::scrollUpAction()); + return YES; + case UIAccessibilityScrollDirectionDown: + action->doAction(QAccessibleActionInterface::scrollDownAction()); + return YES; + case UIAccessibilityScrollDirectionNext: + action->doAction(QAccessibleActionInterface::nextPageAction()); + return YES; + case UIAccessibilityScrollDirectionPrevious: + action->doAction(QAccessibleActionInterface::previousPageAction()); + return YES; + } + return NO; +} + @end -- cgit v1.2.3