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 QSpiAttributeSet getAttributes(QAccessibleInterface *) const;
93 QSpiRelationArray relationSet(QAccessibleInterface *interface, const QDBusConnection &connection) const;
94 QStringList accessibleInterfaces(QAccessibleInterface *interface) const;
95
96 // component helper functions
97 static QRect getExtents(QAccessibleInterface *interface, uint coordType);
98 static bool isValidCoordType(uint coordType);
99 static QRect translateFromScreenCoordinates(QAccessibleInterface *interface, const QRect &rect, uint targetCoordType);
100 static QPoint translateToScreenCoordinates(QAccessibleInterface *interface, const QPoint &pos, uint fromCoordType);
101
102 // action helper functions
103 QSpiActionArray getActions(QAccessibleInterface *interface) const;
104
105 // text helper functions
106 QVariantList getAttributes(QAccessibleInterface *, int offset, bool includeDefaults) const;
107 QString getAttributeValue(QAccessibleInterface *, int offset, const QString &attributeName) const;
108 QList<QVariant> getCharacterExtents(QAccessibleInterface *, int offset, uint coordType) const;
109 QList<QVariant> getRangeExtents(QAccessibleInterface *, int startOffset, int endOffset, uint coordType) const;
110 static QAccessible::TextBoundaryType qAccessibleBoundaryTypeFromAtspiBoundaryType(int atspiTextBoundaryType);
111 static bool isValidAtspiTextGranularity(uint coordType);
112 static QAccessible::TextBoundaryType qAccessibleBoundaryTypeFromAtspiTextGranularity(uint atspiTextGranularity);
113 static bool inheritsQAction(QObject *object);
114
115 // private vars
116 QSpiObjectReference accessibilityRegistry;
117 DBusConnection *m_dbus;
118 QSpiApplicationAdaptor *m_applicationAdaptor;
119
121 int m_applicationId;
122
123 // Bit fields - which updates to send
124
125 // AT-SPI has some events that we do not care about:
126 // document
127 // document-load-complete
128 // document-load-stopped
129 // document-reload
130 uint sendFocus : 1;
131 // mouse abs/rel/button
132
133 // all of object
134 uint sendObject : 1;
135 uint sendObject_active_descendant_changed : 1;
136 uint sendObject_announcement : 1;
137 uint sendObject_attributes_changed : 1;
138 uint sendObject_bounds_changed : 1;
139 uint sendObject_children_changed : 1;
140// uint sendObject_children_changed_add : 1;
141// uint sendObject_children_changed_remove : 1;
142 uint sendObject_column_deleted : 1;
143 uint sendObject_column_inserted : 1;
144 uint sendObject_column_reordered : 1;
145 uint sendObject_link_selected : 1;
146 uint sendObject_model_changed : 1;
147 uint sendObject_property_change : 1;
148 uint sendObject_property_change_accessible_description : 1;
149 uint sendObject_property_change_accessible_name : 1;
150 uint sendObject_property_change_accessible_parent : 1;
151 uint sendObject_property_change_accessible_role : 1;
152 uint sendObject_property_change_accessible_table_caption : 1;
153 uint sendObject_property_change_accessible_table_column_description : 1;
154 uint sendObject_property_change_accessible_table_column_header : 1;
155 uint sendObject_property_change_accessible_table_row_description : 1;
156 uint sendObject_property_change_accessible_table_row_header : 1;
157 uint sendObject_property_change_accessible_table_summary : 1;
158 uint sendObject_property_change_accessible_value : 1;
159 uint sendObject_row_deleted : 1;
160 uint sendObject_row_inserted : 1;
161 uint sendObject_row_reordered : 1;
162 uint sendObject_selection_changed : 1;
163 uint sendObject_state_changed : 1;
164 uint sendObject_text_attributes_changed : 1;
165 uint sendObject_text_bounds_changed : 1;
166 uint sendObject_text_caret_moved : 1;
167 uint sendObject_text_changed : 1;
168// uint sendObject_text_changed_delete : 1;
169// uint sendObject_text_changed_insert : 1;
170 uint sendObject_text_selection_changed : 1;
171 uint sendObject_value_changed : 1;
172 uint sendObject_visible_data_changed : 1;
173
174 // we don't implement terminal
175 // terminal-application_changed/charwidth_changed/columncount_changed/line_changed/linecount_changed
176 uint sendWindow : 1;
177 uint sendWindow_activate : 1;
178 uint sendWindow_close: 1;
179 uint sendWindow_create : 1;
180 uint sendWindow_deactivate : 1;
181// uint sendWindow_desktop_create : 1;
182// uint sendWindow_desktop_destroy : 1;
183 uint sendWindow_lower : 1;
184 uint sendWindow_maximize : 1;
185 uint sendWindow_minimize : 1;
186 uint sendWindow_move : 1;
187 uint sendWindow_raise : 1;
188 uint sendWindow_reparent : 1;
189 uint sendWindow_resize : 1;
190 uint sendWindow_restore : 1;
191 uint sendWindow_restyle : 1;
192 uint sendWindow_shade : 1;
193 uint sendWindow_unshade : 1;
194};
195
197
198#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