1 | /****************************************************************************
|
---|
2 | ** $Id: qaccessible.h 131 2006-09-21 20:55:26Z dmik $
|
---|
3 | **
|
---|
4 | ** Definition of QAccessible and QAccessibleObject classes
|
---|
5 | **
|
---|
6 | ** Copyright (C) 2000-2001 Trolltech AS. All rights reserved.
|
---|
7 | **
|
---|
8 | ** This file is part of the kernel module of the Qt GUI Toolkit.
|
---|
9 | **
|
---|
10 | ** This file may be distributed under the terms of the Q Public License
|
---|
11 | ** as defined by Trolltech AS of Norway and appearing in the file
|
---|
12 | ** LICENSE.QPL included in the packaging of this file.
|
---|
13 | **
|
---|
14 | ** This file may be distributed and/or modified under the terms of the
|
---|
15 | ** GNU General Public License version 2 as published by the Free Software
|
---|
16 | ** Foundation and appearing in the file LICENSE.GPL included in the
|
---|
17 | ** packaging of this file.
|
---|
18 | **
|
---|
19 | ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
|
---|
20 | ** licenses may use this file in accordance with the Qt Commercial License
|
---|
21 | ** Agreement provided with the Software.
|
---|
22 | **
|
---|
23 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
---|
24 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
---|
25 | **
|
---|
26 | ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
|
---|
27 | ** information about Qt Commercial License Agreements.
|
---|
28 | ** See http://www.trolltech.com/qpl/ for QPL licensing information.
|
---|
29 | ** See http://www.trolltech.com/gpl/ for GPL licensing information.
|
---|
30 | **
|
---|
31 | ** Contact info@trolltech.com if any conditions of this licensing are
|
---|
32 | ** not clear to you.
|
---|
33 | **
|
---|
34 | **********************************************************************/
|
---|
35 |
|
---|
36 | #ifndef QACCESSIBLE_H
|
---|
37 | #define QACCESSIBLE_H
|
---|
38 |
|
---|
39 | #ifndef QT_H
|
---|
40 | #include "qobject.h"
|
---|
41 | #include <private/qcom_p.h>
|
---|
42 | #include "qrect.h"
|
---|
43 | #include "qguardedptr.h"
|
---|
44 | #include "qmemarray.h"
|
---|
45 | #endif // QT_H
|
---|
46 |
|
---|
47 | #if defined(QT_ACCESSIBILITY_SUPPORT)
|
---|
48 |
|
---|
49 | struct QAccessibleInterface;
|
---|
50 |
|
---|
51 | class Q_EXPORT QAccessible
|
---|
52 | {
|
---|
53 | private:
|
---|
54 | #ifdef Q_WS_MAC
|
---|
55 | static QMAC_PASCAL OSStatus globalEventProcessor(EventHandlerCallRef, EventRef, void *);
|
---|
56 | static QObject *queryAccessibleObject(QAccessibleInterface *);
|
---|
57 | #endif
|
---|
58 | public:
|
---|
59 | enum Event {
|
---|
60 | SoundPlayed = 0x0001,
|
---|
61 | Alert = 0x0002,
|
---|
62 | ForegroundChanged = 0x0003,
|
---|
63 | MenuStart = 0x0004,
|
---|
64 | MenuEnd = 0x0005,
|
---|
65 | PopupMenuStart = 0x0006,
|
---|
66 | PopupMenuEnd = 0x0007,
|
---|
67 | ContextHelpStart = 0x000C,
|
---|
68 | ContextHelpEnd = 0x000D,
|
---|
69 | DragDropStart = 0x000E,
|
---|
70 | DragDropEnd = 0x000F,
|
---|
71 | DialogStart = 0x0010,
|
---|
72 | DialogEnd = 0x0011,
|
---|
73 | ScrollingStart = 0x0012,
|
---|
74 | ScrollingEnd = 0x0013,
|
---|
75 |
|
---|
76 | MenuCommand = 0x0018,
|
---|
77 |
|
---|
78 | ObjectCreated = 0x8000,
|
---|
79 | ObjectDestroyed = 0x8001,
|
---|
80 | ObjectShow = 0x8002,
|
---|
81 | ObjectHide = 0x8003,
|
---|
82 | ObjectReorder = 0x8004,
|
---|
83 | Focus = 0x8005,
|
---|
84 | Selection = 0x8006,
|
---|
85 | SelectionAdd = 0x8007,
|
---|
86 | SelectionRemove = 0x8008,
|
---|
87 | SelectionWithin = 0x8009,
|
---|
88 | StateChanged = 0x800A,
|
---|
89 | LocationChanged = 0x800B,
|
---|
90 | NameChanged = 0x800C,
|
---|
91 | DescriptionChanged = 0x800D,
|
---|
92 | ValueChanged = 0x800E,
|
---|
93 | ParentChanged = 0x800F,
|
---|
94 | HelpChanged = 0x80A0,
|
---|
95 | DefaultActionChanged= 0x80B0,
|
---|
96 | AcceleratorChanged = 0x80C0
|
---|
97 | };
|
---|
98 |
|
---|
99 | enum State {
|
---|
100 | Normal = 0x00000000,
|
---|
101 | Unavailable = 0x00000001,
|
---|
102 | Selected = 0x00000002,
|
---|
103 | Focused = 0x00000004,
|
---|
104 | Pressed = 0x00000008,
|
---|
105 | Checked = 0x00000010,
|
---|
106 | Mixed = 0x00000020,
|
---|
107 | ReadOnly = 0x00000040,
|
---|
108 | HotTracked = 0x00000080,
|
---|
109 | Default = 0x00000100,
|
---|
110 | Expanded = 0x00000200,
|
---|
111 | Collapsed = 0x00000400,
|
---|
112 | Busy = 0x00000800,
|
---|
113 | Floating = 0x00001000,
|
---|
114 | Marqueed = 0x00002000,
|
---|
115 | Animated = 0x00004000,
|
---|
116 | Invisible = 0x00008000,
|
---|
117 | Offscreen = 0x00010000,
|
---|
118 | Sizeable = 0x00020000,
|
---|
119 | Moveable = 0x00040000,
|
---|
120 | SelfVoicing = 0x00080000,
|
---|
121 | Focusable = 0x00100000,
|
---|
122 | Selectable = 0x00200000,
|
---|
123 | Linked = 0x00400000,
|
---|
124 | Traversed = 0x00800000,
|
---|
125 | MultiSelectable = 0x01000000,
|
---|
126 | ExtSelectable = 0x02000000,
|
---|
127 | AlertLow = 0x04000000,
|
---|
128 | AlertMedium = 0x08000000,
|
---|
129 | AlertHigh = 0x10000000,
|
---|
130 | Protected = 0x20000000,
|
---|
131 | Valid = 0x3fffffff
|
---|
132 | };
|
---|
133 |
|
---|
134 | enum Role {
|
---|
135 | NoRole = 0x00000000,
|
---|
136 | TitleBar = 0x00000001,
|
---|
137 | MenuBar = 0x00000002,
|
---|
138 | ScrollBar = 0x00000003,
|
---|
139 | Grip = 0x00000004,
|
---|
140 | Sound = 0x00000005,
|
---|
141 | Cursor = 0x00000006,
|
---|
142 | Caret = 0x00000007,
|
---|
143 | AlertMessage = 0x00000008,
|
---|
144 | Window = 0x00000009,
|
---|
145 | Client = 0x0000000A,
|
---|
146 | PopupMenu = 0x0000000B,
|
---|
147 | MenuItem = 0x0000000C,
|
---|
148 | ToolTip = 0x0000000D,
|
---|
149 | Application = 0x0000000E,
|
---|
150 | Document = 0x0000000F,
|
---|
151 | Pane = 0x00000010,
|
---|
152 | Chart = 0x00000011,
|
---|
153 | Dialog = 0x00000012,
|
---|
154 | Border = 0x00000013,
|
---|
155 | Grouping = 0x00000014,
|
---|
156 | Separator = 0x00000015,
|
---|
157 | ToolBar = 0x00000016,
|
---|
158 | StatusBar = 0x00000017,
|
---|
159 | Table = 0x00000018,
|
---|
160 | ColumnHeader = 0x00000019,
|
---|
161 | RowHeader = 0x0000001A,
|
---|
162 | Column = 0x0000001B,
|
---|
163 | Row = 0x0000001C,
|
---|
164 | Cell = 0x0000001D,
|
---|
165 | Link = 0x0000001E,
|
---|
166 | HelpBalloon = 0x0000001F,
|
---|
167 | Character = 0x00000020,
|
---|
168 | List = 0x00000021,
|
---|
169 | ListItem = 0x00000022,
|
---|
170 | Outline = 0x00000023,
|
---|
171 | OutlineItem = 0x00000024,
|
---|
172 | PageTab = 0x00000025,
|
---|
173 | PropertyPage = 0x00000026,
|
---|
174 | Indicator = 0x00000027,
|
---|
175 | Graphic = 0x00000028,
|
---|
176 | StaticText = 0x00000029,
|
---|
177 | EditableText = 0x0000002A, // Editable, selectable, etc.
|
---|
178 | PushButton = 0x0000002B,
|
---|
179 | CheckBox = 0x0000002C,
|
---|
180 | RadioButton = 0x0000002D,
|
---|
181 | ComboBox = 0x0000002E,
|
---|
182 | DropLest = 0x0000002F,
|
---|
183 | ProgressBar = 0x00000030,
|
---|
184 | Dial = 0x00000031,
|
---|
185 | HotkeyField = 0x00000032,
|
---|
186 | Slider = 0x00000033,
|
---|
187 | SpinBox = 0x00000034,
|
---|
188 | Diagram = 0x00000035,
|
---|
189 | Animation = 0x00000036,
|
---|
190 | Equation = 0x00000037,
|
---|
191 | ButtonDropDown = 0x00000038,
|
---|
192 | ButtonMenu = 0x00000039,
|
---|
193 | ButtonDropGrid = 0x0000003A,
|
---|
194 | Whitespace = 0x0000003B,
|
---|
195 | PageTabList = 0x0000003C,
|
---|
196 | Clock = 0x0000003D
|
---|
197 | };
|
---|
198 |
|
---|
199 | enum NavDirection {
|
---|
200 | NavUp = 0x00000001,
|
---|
201 | NavDown = 0x00000002,
|
---|
202 | NavLeft = 0x00000003,
|
---|
203 | NavRight = 0x00000004,
|
---|
204 | NavNext = 0x00000005,
|
---|
205 | NavPrevious = 0x00000006,
|
---|
206 | NavFirstChild = 0x00000007,
|
---|
207 | NavLastChild = 0x00000008,
|
---|
208 | NavFocusChild = 0x00000009
|
---|
209 | };
|
---|
210 |
|
---|
211 | enum Text {
|
---|
212 | Name = 0,
|
---|
213 | Description,
|
---|
214 | Value,
|
---|
215 | Help,
|
---|
216 | Accelerator,
|
---|
217 | DefaultAction
|
---|
218 | };
|
---|
219 |
|
---|
220 | static QRESULT queryAccessibleInterface( QObject *, QAccessibleInterface ** );
|
---|
221 | static void updateAccessibility( QObject *, int who, Event reason );
|
---|
222 | static bool isActive();
|
---|
223 |
|
---|
224 | static void initialize();
|
---|
225 | static void cleanup();
|
---|
226 | };
|
---|
227 |
|
---|
228 | // {EC86CB9C-5DA0-4c43-A739-13EBDF1C6B14}
|
---|
229 | #define IID_QAccessible QUuid( 0xec86cb9c, 0x5da0, 0x4c43, 0xa7, 0x39, 0x13, 0xeb, 0xdf, 0x1c, 0x6b, 0x14 )
|
---|
230 |
|
---|
231 | struct Q_EXPORT QAccessibleInterface : public QAccessible, public QUnknownInterface
|
---|
232 | {
|
---|
233 | // check for valid pointers
|
---|
234 | virtual bool isValid() const = 0;
|
---|
235 |
|
---|
236 | // hierarchy
|
---|
237 | virtual int childCount() const = 0;
|
---|
238 | virtual QRESULT queryChild( int control, QAccessibleInterface** ) const = 0;
|
---|
239 | virtual QRESULT queryParent( QAccessibleInterface** ) const = 0;
|
---|
240 |
|
---|
241 | // navigation
|
---|
242 | virtual int controlAt( int x, int y ) const = 0;
|
---|
243 | virtual QRect rect( int control ) const = 0;
|
---|
244 | virtual int navigate( NavDirection direction, int startControl ) const = 0;
|
---|
245 |
|
---|
246 | // properties and state
|
---|
247 | virtual QString text( Text t, int control ) const = 0;
|
---|
248 | virtual void setText( Text t, int control, const QString &text ) = 0;
|
---|
249 | virtual Role role( int control ) const = 0;
|
---|
250 | virtual State state( int control ) const = 0;
|
---|
251 | virtual QMemArray<int> selection() const = 0;
|
---|
252 |
|
---|
253 | // methods
|
---|
254 | virtual bool doDefaultAction( int control ) = 0;
|
---|
255 | virtual bool setFocus( int control ) = 0;
|
---|
256 | virtual bool setSelected( int control, bool on, bool extend ) = 0;
|
---|
257 | virtual void clearSelection() = 0;
|
---|
258 | };
|
---|
259 |
|
---|
260 | // {49F4C6A7-412F-41DE-9E24-648843421FD3}
|
---|
261 | #ifndef IID_QAccessibleFactory
|
---|
262 | #define IID_QAccessibleFactory QUuid( 0x49f4c6a7, 0x412f, 0x41de, 0x9e, 0x24, 0x64, 0x88, 0x43, 0x42, 0x1f, 0xd3 )
|
---|
263 | #endif
|
---|
264 |
|
---|
265 | struct Q_EXPORT QAccessibleFactoryInterface : public QAccessible, public QFeatureListInterface
|
---|
266 | {
|
---|
267 | virtual QRESULT createAccessibleInterface( const QString &, QObject *, QAccessibleInterface** ) = 0;
|
---|
268 | };
|
---|
269 |
|
---|
270 | class Q_EXPORT QAccessibleObject : public QObject, public QAccessibleInterface
|
---|
271 | {
|
---|
272 | public:
|
---|
273 | QAccessibleObject( QObject *object );
|
---|
274 | virtual ~QAccessibleObject();
|
---|
275 |
|
---|
276 | QRESULT queryInterface( const QUuid &, QUnknownInterface** );
|
---|
277 | Q_REFCOUNT
|
---|
278 |
|
---|
279 | bool isValid() const;
|
---|
280 |
|
---|
281 | protected:
|
---|
282 | QObject *object() const;
|
---|
283 |
|
---|
284 | private:
|
---|
285 | QGuardedPtr<QObject> object_;
|
---|
286 | };
|
---|
287 |
|
---|
288 | #define Q_DEFINED_QACCESSIBLE_OBJECT
|
---|
289 | #include "qwinexport.h"
|
---|
290 | #endif //QT_ACCESSIBILITY_SUPPORT
|
---|
291 |
|
---|
292 | #endif //QACCESSIBLE_H
|
---|