1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4
5#ifndef QSPIACCESSIBLEBRIDGE_H
6#define QSPIACCESSIBLEBRIDGE_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <QtGui/private/qtguiglobal_p.h>
20#include <QtDBus/qdbusconnection.h>
21#include <qpa/qplatformaccessibility.h>
22#include <QtCore/qhash.h>
23
24namespace QtGuiPrivate {
25class DeviceEventControllerAdaptor;
26} // namespace QtGuiPrivate
27
28QT_REQUIRE_CONFIG(accessibility);
29
30QT_BEGIN_NAMESPACE
31
32class QAtSpiDBusConnection;
33class QSpiDBusCache;
34class AtSpiAdaptor;
35struct RoleNames;
36
37class Q_GUI_EXPORT QSpiAccessibleBridge: public QObject, public QPlatformAccessibility
38{
39 Q_OBJECT
40public:
41 using SpiRoleMapping = QHash <QAccessible::Role, RoleNames>;
42
43 QSpiAccessibleBridge();
44
45 virtual ~QSpiAccessibleBridge();
46
47 void notifyAccessibilityUpdate(QAccessibleEvent *event) override;
48 QDBusConnection dBusConnection() const;
49
50 const SpiRoleMapping &spiRoleNames() const { return m_spiRoleMapping; }
51
52 static QSpiAccessibleBridge *instance();
53 static RoleNames namesForRole(QAccessible::Role role);
54
55public Q_SLOTS:
56 void enabledChanged(bool enabled);
57
58private:
59 void initializeConstantMappings();
60 void updateStatus();
61
62 QSpiDBusCache *cache;
63 QtGuiPrivate::DeviceEventControllerAdaptor *dec;
64 AtSpiAdaptor *dbusAdaptor;
65 QAtSpiDBusConnection* dbusConnection;
66 SpiRoleMapping m_spiRoleMapping;
67};
68
69QT_END_NAMESPACE
70
71#endif
72

source code of qtbase/src/gui/accessible/linux/qspiaccessiblebridge_p.h