Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
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.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 void sendAnnouncement(QAccessibleAnnouncementEvent *event);
89
90 // accessible helper functions
91 AtspiRole getRole(QAccessibleInterface *interface) const;
92 QSpiRelationArray relationSet(QAccessibleInterface *interface, const QDBusConnection &connection) const;
93 QStringList accessibleInterfaces(QAccessibleInterface *interface) const;
94
95 // component helper functions
96 static QRect getExtents(QAccessibleInterface *interface, uint coordType);
97 static bool isValidCoordType(uint coordType);
98 static QRect translateFromScreenCoordinates(QAccessibleInterface *interface, const QRect &rect, uint targetCoordType);
99 static QPoint translateToScreenCoordinates(QAccessibleInterface *interface, const QPoint &pos, uint fromCoordType);
100
101 // action helper functions
102 QSpiActionArray getActions(QAccessibleInterface *interface) const;
103
104 // text helper functions
105 QVariantList getAttributes(QAccessibleInterface *, int offset, bool includeDefaults) const;
106 QString getAttributeValue(QAccessibleInterface *, int offset, const QString &attributeName) const;
107 QList<QVariant> getCharacterExtents(QAccessibleInterface *, int offset, uint coordType) const;
108 QList<QVariant> getRangeExtents(QAccessibleInterface *, int startOffset, int endOffset, uint coordType) const;
109 static QAccessible::TextBoundaryType qAccessibleBoundaryTypeFromAtspiBoundaryType(int atspiTextBoundaryType);
110 static bool isValidAtspiTextGranularity(uint coordType);
111 static QAccessible::TextBoundaryType qAccessibleBoundaryTypeFromAtspiTextGranularity(uint atspiTextGranularity);
112 static bool inheritsQAction(QObject *object);
113
114 // private vars
115 QSpiObjectReference accessibilityRegistry;
116 DBusConnection *m_dbus;
117 QSpiApplicationAdaptor *m_applicationAdaptor;
118
120 int m_applicationId;
121
122 // Bit fields - which updates to send
123
124 // AT-SPI has some events that we do not care about:
125 // document
126 // document-load-complete
127 // document-load-stopped
128 // document-reload
129 uint sendFocus : 1;
130 // mouse abs/rel/button
131
132 // all of object
133 uint sendObject : 1;
134 uint sendObject_active_descendant_changed : 1;
135 uint sendObject_announcement : 1;
136 uint sendObject_attributes_changed : 1;
137 uint sendObject_bounds_changed : 1;
138 uint sendObject_children_changed : 1;
139// uint sendObject_children_changed_add : 1;
140// uint sendObject_children_changed_remove : 1;
141 uint sendObject_column_deleted : 1;
142 uint sendObject_column_inserted : 1;
143 uint sendObject_column_reordered : 1;
144 uint sendObject_link_selected : 1;
145 uint sendObject_model_changed : 1;
146 uint sendObject_property_change : 1;
147 uint sendObject_property_change_accessible_description : 1;
148 uint sendObject_property_change_accessible_name : 1;
149 uint sendObject_property_change_accessible_parent : 1;
150 uint sendObject_property_change_accessible_role : 1;
151 uint sendObject_property_change_accessible_table_caption : 1;
152 uint sendObject_property_change_accessible_table_column_description : 1;
153 uint sendObject_property_change_accessible_table_column_header : 1;
154 uint sendObject_property_change_accessible_table_row_description : 1;
155 uint sendObject_property_change_accessible_table_row_header : 1;
156 uint sendObject_property_change_accessible_table_summary : 1;
157 uint sendObject_property_change_accessible_value : 1;
158 uint sendObject_row_deleted : 1;
159 uint sendObject_row_inserted : 1;
160 uint sendObject_row_reordered : 1;
161 uint sendObject_selection_changed : 1;
162 uint sendObject_state_changed : 1;
163 uint sendObject_text_attributes_changed : 1;
164 uint sendObject_text_bounds_changed : 1;
165 uint sendObject_text_caret_moved : 1;
166 uint sendObject_text_changed : 1;
167// uint sendObject_text_changed_delete : 1;
168// uint sendObject_text_changed_insert : 1;
169 uint sendObject_text_selection_changed : 1;
170 uint sendObject_value_changed : 1;
171 uint sendObject_visible_data_changed : 1;
172
173 // we don't implement terminal
174 // terminal-application_changed/charwidth_changed/columncount_changed/line_changed/linecount_changed
175 uint sendWindow : 1;
176 uint sendWindow_activate : 1;
177 uint sendWindow_close: 1;
178 uint sendWindow_create : 1;
179 uint sendWindow_deactivate : 1;
180// uint sendWindow_desktop_create : 1;
181// uint sendWindow_desktop_destroy : 1;
182 uint sendWindow_lower : 1;
183 uint sendWindow_maximize : 1;
184 uint sendWindow_minimize : 1;
185 uint sendWindow_move : 1;
186 uint sendWindow_raise : 1;
187 uint sendWindow_reparent : 1;
188 uint sendWindow_resize : 1;
189 uint sendWindow_restore : 1;
190 uint sendWindow_restyle : 1;
191 uint sendWindow_shade : 1;
192 uint sendWindow_unshade : 1;
193};
194
196
197#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:103
QObject * parent() const
Returns a pointer to the parent object.
Definition qobject.h:346
\inmodule QtCore\reentrant
Definition qpoint.h:25
\inmodule QtCore\reentrant
Definition qrect.h:30
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\inmodule QtCore
Definition qvariant.h:65
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
QList< QSpiRelationArrayEntry > QSpiRelationArray
QList< QSpiAction > QSpiActionArray
#define QT_REQUIRE_CONFIG(feature)
#define Q_OBJECT
#define Q_SLOTS
unsigned int uint
Definition qtypes.h:34
aWidget window() -> setWindowTitle("New Window Title")
[2]
QDBusArgument argument