5#include <QtGui/qtguiglobal.h>
6#if QT_CONFIG(accessibility)
8#include "qwindowsuiavalueprovider.h"
9#include "qwindowsuiautils.h"
10#include "qwindowscontext.h"
12#include <QtGui/qaccessible.h>
13#include <QtCore/qloggingcategory.h>
14#include <QtCore/qstring.h>
18using namespace QWindowsUiAutomation;
21QWindowsUiaValueProvider::QWindowsUiaValueProvider(QAccessible::Id id) :
22 QWindowsUiaBaseProvider(id)
26QWindowsUiaValueProvider::~QWindowsUiaValueProvider()
31HRESULT STDMETHODCALLTYPE QWindowsUiaValueProvider::SetValue(LPCWSTR val)
33 qCDebug(lcQpaUiAutomation) <<
__FUNCTION__;
35 QAccessibleInterface *accessible = accessibleInterface();
37 return UIA_E_ELEMENTNOTAVAILABLE;
40 QString strVal = QString::fromUtf16(
reinterpret_cast<
const char16_t *>(val));
41 accessible->setText(QAccessible::Value, strVal);
46 if (QAccessibleValueInterface *valueInterface = accessible->valueInterface()) {
48 double numval = strVal.toDouble(&ok);
50 double minimum = valueInterface->minimumValue().toDouble();
51 double maximum = valueInterface->maximumValue().toDouble();
52 if ((numval >= minimum) && (numval <= maximum)) {
53 valueInterface->setCurrentValue(QVariant(numval));
61HRESULT STDMETHODCALLTYPE QWindowsUiaValueProvider::get_IsReadOnly(BOOL *pRetVal)
63 qCDebug(lcQpaUiAutomation) <<
__FUNCTION__;
69 QAccessibleInterface *accessible = accessibleInterface();
71 return UIA_E_ELEMENTNOTAVAILABLE;
73 *pRetVal = accessible->state().readOnly;
78HRESULT STDMETHODCALLTYPE QWindowsUiaValueProvider::get_Value(BSTR *pRetVal)
80 qCDebug(lcQpaUiAutomation) <<
__FUNCTION__;
86 QAccessibleInterface *accessible = accessibleInterface();
88 return UIA_E_ELEMENTNOTAVAILABLE;
90 *pRetVal = QBStr(accessible->text(QAccessible::Value)).release();