5#include <QtGui/qtguiglobal.h>
6#if QT_CONFIG(accessibility)
8#include "qwindowsuiagridprovider.h"
9#include "qwindowsuiamainprovider.h"
10#include "qwindowsuiautils.h"
11#include "qwindowscontext.h"
13#include <QtGui/qaccessible.h>
14#include <QtCore/qloggingcategory.h>
15#include <QtCore/qstring.h>
19using namespace QWindowsUiAutomation;
22QWindowsUiaGridProvider::QWindowsUiaGridProvider(QAccessible::Id id) :
23 QWindowsUiaBaseProvider(id)
27QWindowsUiaGridProvider::~QWindowsUiaGridProvider()
32HRESULT STDMETHODCALLTYPE QWindowsUiaGridProvider::GetItem(
int row,
int column, IRawElementProviderSimple **pRetVal)
34 qCDebug(lcQpaUiAutomation) <<
__FUNCTION__;
40 QAccessibleInterface *accessible = accessibleInterface();
42 return UIA_E_ELEMENTNOTAVAILABLE;
44 QAccessibleTableInterface *tableInterface = accessible->tableInterface();
46 return UIA_E_ELEMENTNOTAVAILABLE;
48 if ((row >= 0) && (row < tableInterface->rowCount()) && (column >= 0) && (column < tableInterface->columnCount())) {
49 if (QAccessibleInterface *cell = tableInterface->cellAt(row, column))
50 *pRetVal = QWindowsUiaMainProvider::providerForAccessible(cell).Detach();
56HRESULT STDMETHODCALLTYPE QWindowsUiaGridProvider::get_RowCount(
int *pRetVal)
58 qCDebug(lcQpaUiAutomation) <<
__FUNCTION__;
64 QAccessibleInterface *accessible = accessibleInterface();
66 return UIA_E_ELEMENTNOTAVAILABLE;
68 QAccessibleTableInterface *tableInterface = accessible->tableInterface();
70 return UIA_E_ELEMENTNOTAVAILABLE;
72 *pRetVal = tableInterface->rowCount();
77HRESULT STDMETHODCALLTYPE QWindowsUiaGridProvider::get_ColumnCount(
int *pRetVal)
79 qCDebug(lcQpaUiAutomation) <<
__FUNCTION__;
85 QAccessibleInterface *accessible = accessibleInterface();
87 return UIA_E_ELEMENTNOTAVAILABLE;
89 QAccessibleTableInterface *tableInterface = accessible->tableInterface();
91 return UIA_E_ELEMENTNOTAVAILABLE;
93 *pRetVal = tableInterface->columnCount();