4#include <private/qfactoryloader_p.h>
8#include <QtGui/QGuiApplication>
14using namespace Qt::StringLiterals;
16#if QT_CONFIG(accessibility)
19Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, bridgeloader,
20 (QAccessibleBridgeFactoryInterface_iid,
"/accessiblebridge"_L1))
22Q_GLOBAL_STATIC(QList<QAccessibleBridge *>, bridges)
25
26
27
28
29
30
31
32
33
34
35
36
37QPlatformAccessibility::QPlatformAccessibility()
41QPlatformAccessibility::~QPlatformAccessibility()
45void QPlatformAccessibility::notifyAccessibilityUpdate(QAccessibleEvent *event)
49 if (!bridges() || bridges()->isEmpty())
52 for (
int i = 0; i < bridges()->size(); ++i)
53 bridges()->at(i)->notifyAccessibilityUpdate(event);
56void QPlatformAccessibility::setRootObject(QObject *o)
59 if (bridges()->isEmpty())
65 for (
int i = 0; i < bridges()->size(); ++i) {
66 QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(o);
67 bridges()->at(i)->setRootObject(iface);
71void QPlatformAccessibility::initialize()
73 static bool isInit =
false;
78 typedef QMultiMap<
int, QString> PluginKeyMap;
79 typedef PluginKeyMap::const_iterator PluginKeyMapConstIterator;
81 const PluginKeyMap keyMap = bridgeloader()->keyMap();
82 QAccessibleBridgePlugin *factory =
nullptr;
84 const PluginKeyMapConstIterator cend = keyMap.constEnd();
85 for (PluginKeyMapConstIterator it = keyMap.constBegin(); it != cend; ++it) {
88 factory = qobject_cast<QAccessibleBridgePlugin*>(bridgeloader()->instance(i));
91 if (QAccessibleBridge *bridge = factory->create(it.value()))
92 bridges()->append(bridge);
96void QPlatformAccessibility::cleanup()
98 qDeleteAll(*bridges());
101void qAccessibleNotifyActivationObservers(
bool active);
103void QPlatformAccessibility::setActive(
bool active)
109 if ((active && m_activeNotificationState != std::optional<
bool>{
true}) ||
110 (!active && m_activeNotificationState != std::optional<
bool>{
false})) {
111 qAccessibleNotifyActivationObservers(active);
114 m_activeNotificationState = active;
117void QPlatformAccessibility::clearActiveNotificationState()
119 m_activeNotificationState = std::nullopt;