6#if QT_CONFIG(accessibility)
8#include <QtQml/qqmlinfo.h>
10#include "private/qquickitem_p.h"
294QMetaMethod QQuickAccessibleAttached::sigScrollDown;
295QMetaMethod QQuickAccessibleAttached::sigScrollLeft;
296QMetaMethod QQuickAccessibleAttached::sigScrollRight;
297QMetaMethod QQuickAccessibleAttached::sigPreviousPage;
300QQuickAccessibleAttached::QQuickAccessibleAttached(
QObject *
parent)
311 item()->d_func()->setAccessible();
312 QAccessibleEvent ev(
item(), QAccessible::ObjectCreated);
313 QAccessible::updateAccessibility(&ev);
316 auto connectPropertyChangeSignal = [
parent, pmo,
this](
317 const char *propertyName,
const char *signalName,
int slotIndex)
326 int idxProperty = pmo->indexOfProperty(propertyName);
327 if (idxProperty != -1) {
330 if (
signal.name() == signalName)
336 static const int valueChangedIndex = smo.
indexOfSlot(
"valueChanged()");
337 connectPropertyChangeSignal(
"value",
"valueChanged", valueChangedIndex);
339 static const int cursorPositionChangedIndex = smo.
indexOfSlot(
"cursorPositionChanged()");
340 connectPropertyChangeSignal(
"cursorPosition",
"cursorPositionChanged",
341 cursorPositionChangedIndex);
344 if (!sigPress.isValid()) {
358QQuickAccessibleAttached::~QQuickAccessibleAttached()
362void QQuickAccessibleAttached::setRole(QAccessible::Role role)
364 if (role != m_role) {
371 case QAccessible::CheckBox:
372 case QAccessible::RadioButton:
373 if (!m_stateExplicitlySet.focusable)
374 m_state.focusable =
true;
375 if (!m_stateExplicitlySet.checkable)
376 m_state.checkable =
true;
378 case QAccessible::Button:
379 case QAccessible::MenuItem:
380 case QAccessible::PageTab:
381 case QAccessible::SpinBox:
382 case QAccessible::ComboBox:
383 case QAccessible::Terminal:
384 case QAccessible::ScrollBar:
385 if (!m_stateExplicitlySet.focusable)
386 m_state.focusable =
true;
388 case QAccessible::EditableText:
389 if (!m_stateExplicitlySet.editable)
390 m_state.editable =
true;
391 if (!m_stateExplicitlySet.focusable)
392 m_state.focusable =
true;
394 case QAccessible::StaticText:
395 if (!m_stateExplicitlySet.readOnly)
396 m_state.readOnly =
true;
397 if (!m_stateExplicitlySet.focusable)
398 m_state.focusable =
true;
406bool QQuickAccessibleAttached::wasNameExplicitlySet()
const
408 return m_nameExplicitlySet;
413void QQuickAccessibleAttached::setNameImplicitly(
const QString &
name)
416 m_nameExplicitlySet =
false;
419QQuickAccessibleAttached *QQuickAccessibleAttached::qmlAttachedProperties(
QObject *
obj)
421 return new QQuickAccessibleAttached(
obj);
424bool QQuickAccessibleAttached::ignored()
const
426 return item() ? !
item()->d_func()->isAccessible :
false;
429void QQuickAccessibleAttached::setIgnored(
bool ignored)
431 if (this->ignored() != ignored &&
item()) {
432 item()->d_func()->isAccessible = !ignored;
433 emit ignoredChanged();
437bool QQuickAccessibleAttached::doAction(
const QString &actionName)
440 if (actionName == QAccessibleActionInterface::pressAction())
442 else if (actionName == QAccessibleActionInterface::toggleAction())
444 else if (actionName == QAccessibleActionInterface::increaseAction())
446 else if (actionName == QAccessibleActionInterface::decreaseAction())
448 else if (actionName == QAccessibleActionInterface::scrollUpAction())
450 else if (actionName == QAccessibleActionInterface::scrollDownAction())
451 sig = &sigScrollDown;
452 else if (actionName == QAccessibleActionInterface::scrollLeftAction())
453 sig = &sigScrollLeft;
454 else if (actionName == QAccessibleActionInterface::scrollRightAction())
455 sig = &sigScrollRight;
456 else if (actionName == QAccessibleActionInterface::previousPageAction())
457 sig = &sigPreviousPage;
458 else if (actionName == QAccessibleActionInterface::nextPageAction())
460 if (sig && isSignalConnected(*sig))
465void QQuickAccessibleAttached::availableActions(
QStringList *actions)
const
467 if (isSignalConnected(sigPress))
468 actions->append(QAccessibleActionInterface::pressAction());
469 if (isSignalConnected(sigToggle))
470 actions->append(QAccessibleActionInterface::toggleAction());
471 if (isSignalConnected(sigIncrease))
472 actions->append(QAccessibleActionInterface::increaseAction());
473 if (isSignalConnected(sigDecrease))
474 actions->append(QAccessibleActionInterface::decreaseAction());
475 if (isSignalConnected(sigScrollUp))
476 actions->append(QAccessibleActionInterface::scrollUpAction());
477 if (isSignalConnected(sigScrollDown))
478 actions->append(QAccessibleActionInterface::scrollDownAction());
479 if (isSignalConnected(sigScrollLeft))
480 actions->append(QAccessibleActionInterface::scrollLeftAction());
481 if (isSignalConnected(sigScrollRight))
482 actions->append(QAccessibleActionInterface::scrollRightAction());
483 if (isSignalConnected(sigPreviousPage))
484 actions->append(QAccessibleActionInterface::previousPageAction());
485 if (isSignalConnected(sigNextPage))
486 actions->append(QAccessibleActionInterface::nextPageAction());
491#ifndef QT_NO_TEXTHTMLPARSER
502#include "moc_qquickaccessibleattached_p.cpp"
The QAccessible class provides enums and static functions related to accessibility.
\macro QT_RESTRICTED_CAST_FROM_ASCII
\reentrant \inmodule QtGui
void setHtml(const QString &html)
Replaces the entire contents of the document with the given HTML-formatted text in the html string.
QString toPlainText() const
Returns the plain text contained in the document.
employee setName("Richard Schmit")
Combined button and popup list for selecting options.
Q_QML_EXPORT QQmlInfo qmlWarning(const QObject *me)
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent