vcl/inc/qt5/Qt5AccessibleWidget.hxx | 9 ++--- vcl/qt5/Qt5AccessibleWidget.cxx | 61 +++++++++++++++++++++++------------- 2 files changed, 45 insertions(+), 25 deletions(-)
New commits: commit 570d99b7776ccbee031737a9c32c5c9af11649ed Author: Samuel Mehrbrodt <samuel.mehrbr...@cib.de> AuthorDate: Mon Oct 1 09:55:19 2018 +0200 Commit: Samuel Mehrbrodt <samuel.mehrbr...@cib.de> CommitDate: Tue Oct 2 15:05:13 2018 +0200 Qt5AccessibleWidget: Implement QAccessibleActionInterface shows available action and allows to execute them Change-Id: I944e4eccaac7c458af77b471c1d6e10650b1e798 Reviewed-on: https://gerrit.libreoffice.org/61183 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@cib.de> diff --git a/vcl/inc/qt5/Qt5AccessibleWidget.hxx b/vcl/inc/qt5/Qt5AccessibleWidget.hxx index c77104931eb6..d1008f992ab9 100644 --- a/vcl/inc/qt5/Qt5AccessibleWidget.hxx +++ b/vcl/inc/qt5/Qt5AccessibleWidget.hxx @@ -27,8 +27,9 @@ class Qt5Frame; class Qt5Widget; -class VCLPLUG_QT5_PUBLIC Qt5AccessibleWidget : public QObject, public QAccessibleInterface -//public QAccessibleActionInterface +class VCLPLUG_QT5_PUBLIC Qt5AccessibleWidget : public QObject, + public QAccessibleInterface, + public QAccessibleActionInterface { Q_OBJECT @@ -61,9 +62,9 @@ public: void* interface_cast(QAccessible::InterfaceType t) override; // QAccessibleActionInterface - /* QStringList actionNames() const override; + QStringList actionNames() const override; void doAction(const QString& actionName) override; - QStringList keyBindingsForAction(const QString& actionName) const override; */ + QStringList keyBindingsForAction(const QString& actionName) const override; // Factory static QAccessibleInterface* customFactory(const QString& classname, QObject* object); diff --git a/vcl/qt5/Qt5AccessibleWidget.cxx b/vcl/qt5/Qt5AccessibleWidget.cxx index 4025ed223a7f..2d691a2d112c 100644 --- a/vcl/qt5/Qt5AccessibleWidget.cxx +++ b/vcl/qt5/Qt5AccessibleWidget.cxx @@ -24,13 +24,15 @@ #include <Qt5Frame.hxx> #include <Qt5Tools.hxx> -#include <Qt5XAccessible.hxx> #include <Qt5Widget.hxx> +#include <Qt5XAccessible.hxx> #include <com/sun/star/accessibility/AccessibleRole.hpp> #include <com/sun/star/accessibility/AccessibleStateType.hpp> #include <com/sun/star/accessibility/XAccessible.hpp> +#include <com/sun/star/accessibility/XAccessibleAction.hpp> #include <com/sun/star/accessibility/XAccessibleComponent.hpp> +#include <com/sun/star/accessibility/XAccessibleKeyBinding.hpp> #include <com/sun/star/accessibility/XAccessibleStateSet.hpp> #include <sal/log.hxx> @@ -512,30 +514,13 @@ QColor Qt5AccessibleWidget::backgroundColor() const return toQColor(xAccessibleComponent->getBackground()); } -void* Qt5AccessibleWidget::interface_cast(QAccessible::InterfaceType /* t */) +void* Qt5AccessibleWidget::interface_cast(QAccessible::InterfaceType t) { - /* if (t == QAccessible::ActionInterface) - return static_cast<QAccessibleActionInterface*>(this); */ + if (t == QAccessible::ActionInterface) + return static_cast<QAccessibleActionInterface*>(this); return nullptr; } -// QAccessibleActionInterface -/* QStringList Qt5AccessibleWidget::actionNames() const -{ - qDebug("Qt5AccessibleWidget::actionNames"); - QStringList actionNames; - return actionNames; -} -void Qt5AccessibleWidget::doAction(const QString& actionName) -{ - qDebug("Qt5AccessibleWidget::doAction"); -} -QStringList Qt5AccessibleWidget::keyBindingsForAction(const QString& actionName) const -{ - qDebug("Qt5AccessibleWidget::keyBindingsForAction"); - return QStringList(); -} */ - bool Qt5AccessibleWidget::isValid() const { return m_xAccessible.is() && m_xAccessible->getAccessibleContext().is(); @@ -570,4 +555,38 @@ QAccessibleInterface* Qt5AccessibleWidget::customFactory(const QString& classnam return nullptr; } +// QAccessibleActionInterface +QStringList Qt5AccessibleWidget::actionNames() const +{ + QStringList actionNames; + Reference<XAccessibleAction> xAccessibleAction(m_xAccessible, UNO_QUERY); + if (!xAccessibleAction.is()) + return actionNames; + + int count = xAccessibleAction->getAccessibleActionCount(); + for (int i = 0; i < count; i++) + { + OUString desc = xAccessibleAction->getAccessibleActionDescription(i); + actionNames.append(toQString(desc)); + } + return actionNames; +} + +void Qt5AccessibleWidget::doAction(const QString& actionName) +{ + Reference<XAccessibleAction> xAccessibleAction(m_xAccessible, UNO_QUERY); + if (!xAccessibleAction.is()) + return; + + int index = actionNames().indexOf(actionName); + if (index == -1) + return; + xAccessibleAction->doAccessibleAction(index); +} + +QStringList Qt5AccessibleWidget::keyBindingsForAction(const QString& /* actionName */) const +{ + return QStringList(); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits