From aca430292fc287e110fe3a7a91c6a61371ab8689 Mon Sep 17 00:00:00 2001 From: Samuel Mehrbrodt Date: Tue, 30 Oct 2018 20:58:01 +0100 Subject: qt5 a11y: Implement QAccessibleTableInterface Change-Id: Ic632a2253afb960cda43f84905dd519e9052c0eb Reviewed-on: https://gerrit.libreoffice.org/62668 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt --- vcl/qt5/Qt5AccessibleWidget.cxx | 139 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) (limited to 'vcl/qt5') diff --git a/vcl/qt5/Qt5AccessibleWidget.cxx b/vcl/qt5/Qt5AccessibleWidget.cxx index b75cda8cc454..bf066f96df54 100644 --- a/vcl/qt5/Qt5AccessibleWidget.cxx +++ b/vcl/qt5/Qt5AccessibleWidget.cxx @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -624,6 +625,8 @@ void* Qt5AccessibleWidget::interface_cast(QAccessible::InterfaceType t) return static_cast(this); if (t == QAccessible::ValueInterface) return static_cast(this); + if (t == QAccessible::TableInterface) + return static_cast(this); return nullptr; } @@ -638,6 +641,8 @@ void Qt5AccessibleWidget::setText(QAccessible::Text /* t */, const QString& /* t QAccessibleInterface* Qt5AccessibleWidget::childAt(int x, int y) const { + if (!m_xAccessible.is()) + return nullptr; Reference xAccessibleComponent(m_xAccessible->getAccessibleContext(), UNO_QUERY); return QAccessible::queryAccessibleInterface( @@ -924,4 +929,138 @@ void Qt5AccessibleWidget::setCurrentValue(const QVariant& value) xValue->setCurrentValue(Any(value.toDouble())); } +// QAccessibleTable +QAccessibleInterface* Qt5AccessibleWidget::caption() const +{ + Reference xTable(m_xAccessible->getAccessibleContext(), UNO_QUERY); + if (!xTable.is()) + return nullptr; + return QAccessible::queryAccessibleInterface( + new Qt5XAccessible(xTable->getAccessibleCaption())); +} + +QAccessibleInterface* Qt5AccessibleWidget::cellAt(int row, int column) const +{ + Reference xTable(m_xAccessible->getAccessibleContext(), UNO_QUERY); + if (!xTable.is()) + return nullptr; + return QAccessible::queryAccessibleInterface( + new Qt5XAccessible(xTable->getAccessibleCellAt(row, column))); +} + +int Qt5AccessibleWidget::columnCount() const +{ + Reference xTable(m_xAccessible->getAccessibleContext(), UNO_QUERY); + if (!xTable.is()) + return 0; + return xTable->getAccessibleColumnCount(); +} + +QString Qt5AccessibleWidget::columnDescription(int column) const +{ + Reference xTable(m_xAccessible->getAccessibleContext(), UNO_QUERY); + if (!xTable.is()) + return QString(); + return toQString(xTable->getAccessibleColumnDescription(column)); +} + +bool Qt5AccessibleWidget::isColumnSelected(int /* column */) const { return true; } + +bool Qt5AccessibleWidget::isRowSelected(int /* row */) const { return true; } + +void Qt5AccessibleWidget::modelChange(QAccessibleTableModelChangeEvent* event) {} + +int Qt5AccessibleWidget::rowCount() const +{ + Reference xTable(m_xAccessible->getAccessibleContext(), UNO_QUERY); + if (!xTable.is()) + return 0; + return xTable->getAccessibleRowCount(); +} + +QString Qt5AccessibleWidget::rowDescription(int row) const +{ + Reference xTable(m_xAccessible->getAccessibleContext(), UNO_QUERY); + if (!xTable.is()) + return QString(); + return toQString(xTable->getAccessibleRowDescription(row)); +} + +bool Qt5AccessibleWidget::selectColumn(int /* column */) +{ + SAL_INFO("vcl.qt5", "Unsupported QAccessibleTableInterface::selectColumn"); + return false; +} + +bool Qt5AccessibleWidget::selectRow(int /* row */) +{ + SAL_INFO("vcl.qt5", "Unsupported QAccessibleTableInterface::selectRow"); + return false; +} + +int Qt5AccessibleWidget::selectedCellCount() const +{ + SAL_INFO("vcl.qt5", "Unsupported QAccessibleTableInterface::selectedCellCount"); + return 0; +} + +QList Qt5AccessibleWidget::selectedCells() const +{ + SAL_INFO("vcl.qt5", "Unsupported QAccessibleTableInterface::selectedCells"); + return QList(); +} + +int Qt5AccessibleWidget::selectedColumnCount() const +{ + Reference xTable(m_xAccessible->getAccessibleContext(), UNO_QUERY); + if (!xTable.is()) + return 0; + return xTable->getSelectedAccessibleColumns().getLength(); +} + +QList Qt5AccessibleWidget::selectedColumns() const +{ + Reference xTable(m_xAccessible->getAccessibleContext(), UNO_QUERY); + if (!xTable.is()) + return QList(); + return toQList(xTable->getSelectedAccessibleColumns()); +} + +int Qt5AccessibleWidget::selectedRowCount() const +{ + Reference xTable(m_xAccessible->getAccessibleContext(), UNO_QUERY); + if (!xTable.is()) + return 0; + return xTable->getSelectedAccessibleRows().getLength(); +} + +QList Qt5AccessibleWidget::selectedRows() const +{ + Reference xTable(m_xAccessible->getAccessibleContext(), UNO_QUERY); + if (!xTable.is()) + return QList(); + return toQList(xTable->getSelectedAccessibleRows()); +} + +QAccessibleInterface* Qt5AccessibleWidget::summary() const +{ + Reference xTable(m_xAccessible->getAccessibleContext(), UNO_QUERY); + if (!xTable.is()) + return nullptr; + return QAccessible::queryAccessibleInterface( + new Qt5XAccessible(xTable->getAccessibleSummary())); +} + +bool Qt5AccessibleWidget::unselectColumn(int column) +{ + SAL_INFO("vcl.qt5", "Unsupported QAccessibleTableInterface::unselectColumn"); + return false; +} + +bool Qt5AccessibleWidget::unselectRow(int row) +{ + SAL_INFO("vcl.qt5", "Unsupported QAccessibleTableInterface::unselectRow"); + return false; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit