Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
atspiadaptor_p.h
Go to the documentation of this file.
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 ATSPIADAPTOR_H
6#define ATSPIADAPTOR_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 <atspi/atspi-constants.h>
20
21#include <QtGui/private/qtguiglobal_p.h>
22#include <QtDBus/qdbusvirtualobject.h>
23#include <QtGui/qaccessible.h>
24
25#include "dbusconnection_p.h"
27
28QT_REQUIRE_CONFIG(accessibility);
29
31
32class QAccessibleInterface;
34
35
37{
39
40public:
43
45 QString introspect(const QString &path) const override;
47 void notify(QAccessibleEvent *event);
48
49public Q_SLOTS:
50 void eventListenerRegistered(const QString &bus, const QString &path);
52 void windowActivated(QObject* window, bool active);
53
54private:
55 void updateEventListeners();
56 void setBitFlag(const QString &flag);
57
58 // sending messages
59 QVariantList packDBusSignalArguments(const QString &type, int data1, int data2, const QVariant &variantData) const;
60 bool sendDBusSignal(const QString &path, const QString &interface, const QString &name, const QVariantList &arguments) const;
61 QVariant variantForPath(const QString &path) const;
62
63 void sendFocusChanged(QAccessibleInterface *interface) const;
64 void notifyAboutCreation(QAccessibleInterface *interface) const;
65 void notifyAboutDestruction(QAccessibleInterface *interface) const;
66 void childrenChanged(QAccessibleInterface *interface) const;
67
68 // handlers for the different accessible interfaces
69 bool applicationInterface(QAccessibleInterface *interface, const QString &function, const QDBusMessage &message, const QDBusConnection &connection);
70 bool accessibleInterface(QAccessibleInterface *interface, const QString &function, const QDBusMessage &message, const QDBusConnection &connection);
71 bool componentInterface(QAccessibleInterface *interface, const QString &function, const QDBusMessage &message, const QDBusConnection &connection);
72 bool actionInterface(QAccessibleInterface *interface, const QString &function, const QDBusMessage &message, const QDBusConnection &connection);
73 bool textInterface(QAccessibleInterface *interface, const QString &function, const QDBusMessage &message, const QDBusConnection &connection);
74 bool editableTextInterface(QAccessibleInterface *interface, const QString &function, const QDBusMessage &message, const QDBusConnection &connection);
75 bool valueInterface(QAccessibleInterface *interface, const QString &function, const QDBusMessage &message, const QDBusConnection &connection);
76 bool selectionInterface(QAccessibleInterface *interface, const QString &function, const QDBusMessage &message, const QDBusConnection &connection);
77 bool tableInterface(QAccessibleInterface *interface, const QString &function, const QDBusMessage &message, const QDBusConnection &connection);
78 bool tableCellInterface(QAccessibleInterface *interface, const QString &function, const QDBusMessage &message, const QDBusConnection &connection);
79
80 void sendReply(const QDBusConnection &connection, const QDBusMessage &message, const QVariant &argument) const;
81
82 QAccessibleInterface *interfaceFromPath(const QString& dbusPath) const;
83 QString pathForInterface(QAccessibleInterface *interface) const;
84 QString pathForObject(QObject *object) const;
85
86 void notifyStateChange(QAccessibleInterface *interface, const QString& state, int value);
87
88 // accessible helper functions
89 AtspiRole getRole(QAccessibleInterface *interface) const;
90 QSpiRelationArray relationSet(QAccessibleInterface *interface, const QDBusConnection &connection) const;
91 QStringList accessibleInterfaces(QAccessibleInterface *interface) const;
92
93 // component helper functions
94 static QRect getExtents(QAccessibleInterface *interface, uint coordType);
95 static bool isValidCoordType(uint coordType);
96 static QRect translateFromScreenCoordinates(QAccessibleInterface *interface, const QRect &rect, uint targetCoordType);
97 static QPoint translateToScreenCoordinates(QAccessibleInterface *interface, const QPoint &pos, uint fromCoordType);
98
99 // action helper functions
100 QSpiActionArray getActions(QAccessibleInterface *interface) const;
101
102 // text helper functions
103 QVariantList getAttributes(QAccessibleInterface *, int offset, bool includeDefaults) const;
104 QString getAttributeValue(QAccessibleInterface *, int offset, const QString &attributeName) const;
105 QList<QVariant> getCharacterExtents(QAccessibleInterface *, int offset, uint coordType) const;
106 QList<QVariant> getRangeExtents(QAccessibleInterface *, int startOffset, int endOffset, uint coordType) const;
107 static QAccessible::TextBoundaryType qAccessibleBoundaryTypeFromAtspiBoundaryType(int atspiTextBoundaryType);
108 static bool isValidAtspiTextGranularity(uint coordType);
109 static QAccessible::TextBoundaryType qAccessibleBoundaryTypeFromAtspiTextGranularity(uint atspiTextGranularity);
110 static bool inheritsQAction(QObject *object);
111
112 // private vars
113 QSpiObjectReference accessibilityRegistry;
114 DBusConnection *m_dbus;
115 QSpiApplicationAdaptor *m_applicationAdaptor;
116
118 int m_applicationId;
119
120 // Bit fields - which updates to send
121
122 // AT-SPI has some events that we do not care about:
123 // document
124 // document-load-complete
125 // document-load-stopped
126 // document-reload
127 uint sendFocus : 1;
128 // mouse abs/rel/button
129
130 // all of object
131 uint sendObject : 1;
132 uint sendObject_active_descendant_changed : 1;
133 uint sendObject_attributes_changed : 1;
134 uint sendObject_bounds_changed : 1;
135 uint sendObject_children_changed : 1;
136// uint sendObject_children_changed_add : 1;
137// uint sendObject_children_changed_remove : 1;
138 uint sendObject_column_deleted : 1;
139 uint sendObject_column_inserted : 1;
140 uint sendObject_column_reordered : 1;
141 uint sendObject_link_selected : 1;
142 uint sendObject_model_changed : 1;
143 uint sendObject_property_change : 1;
144 uint sendObject_property_change_accessible_description : 1;
145 uint sendObject_property_change_accessible_name : 1;
146 uint sendObject_property_change_accessible_parent : 1;
147 uint sendObject_property_change_accessible_role : 1;
148 uint sendObject_property_change_accessible_table_caption : 1;
149 uint sendObject_property_change_accessible_table_column_description : 1;
150 uint sendObject_property_change_accessible_table_column_header : 1;
151 uint sendObject_property_change_accessible_table_row_description : 1;
152 uint sendObject_property_change_accessible_table_row_header : 1;
153 uint sendObject_property_change_accessible_table_summary : 1;
154 uint sendObject_property_change_accessible_value : 1;
155 uint sendObject_row_deleted : 1;
156 uint sendObject_row_inserted : 1;
157 uint sendObject_row_reordered : 1;
158 uint sendObject_selection_changed : 1;
159 uint sendObject_state_changed : 1;
160 uint sendObject_text_attributes_changed : 1;
161 uint sendObject_text_bounds_changed : 1;
162 uint sendObject_text_caret_moved : 1;
163 uint sendObject_text_changed : 1;
164// uint sendObject_text_changed_delete : 1;
165// uint sendObject_text_changed_insert : 1;
166 uint sendObject_text_selection_changed : 1;
167 uint sendObject_value_changed : 1;
168 uint sendObject_visible_data_changed : 1;
169
170 // we don't implement terminal
171 // terminal-application_changed/charwidth_changed/columncount_changed/line_changed/linecount_changed
172 uint sendWindow : 1;
173 uint sendWindow_activate : 1;
174 uint sendWindow_close: 1;
175 uint sendWindow_create : 1;
176 uint sendWindow_deactivate : 1;
177// uint sendWindow_desktop_create : 1;
178// uint sendWindow_desktop_destroy : 1;
179 uint sendWindow_lower : 1;
180 uint sendWindow_maximize : 1;
181 uint sendWindow_minimize : 1;
182 uint sendWindow_move : 1;
183 uint sendWindow_raise : 1;
184 uint sendWindow_reparent : 1;
185 uint sendWindow_resize : 1;
186 uint sendWindow_restore : 1;
187 uint sendWindow_restyle : 1;
188 uint sendWindow_shade : 1;
189 uint sendWindow_unshade : 1;
190};
191
193
194#endif
QString introspect(const QString &path) const override
void notify(QAccessibleEvent *event)
void windowActivated(QObject *window, bool active)
void registerApplication()
void eventListenerDeregistered(const QString &bus, const QString &path)
AtSpiAdaptor(DBusConnection *connection, QObject *parent=nullptr)
bool handleMessage(const QDBusMessage &message, const QDBusConnection &connection) override
This function needs to handle all messages to the path of the virtual object, when the SubPath option...
void eventListenerRegistered(const QString &bus, const QString &path)
Connects to the accessibility dbus.
\inmodule QtDBus
\inmodule QtDBus
\inmodule QtCore
Definition qobject.h:90
QObject * parent() const
Returns a pointer to the parent object.
Definition qobject.h:311
\inmodule QtCore\reentrant
Definition qpoint.h:23
\inmodule QtCore\reentrant
Definition qrect.h:30
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
\inmodule QtCore
Definition qvariant.h:64
QList< QVariant > arguments
rect
[4]
else opt state
[0]
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char * interface
DBusConnection * connection
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLenum type
GLuint GLsizei const GLchar * message
GLenum GLuint GLintptr offset
GLsizei const GLubyte GLsizei GLenum coordType
GLuint name
struct _cl_event * event
GLsizei const GLchar *const * path
#define QT_REQUIRE_CONFIG(feature)
#define Q_OBJECT
#define Q_SLOTS
unsigned int uint
Definition qtypes.h:29
aWidget window() -> setWindowTitle("New Window Title")
[2]
QDBusArgument argument