You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
296 lines
8.2 KiB
296 lines
8.2 KiB
14 years ago
|
/****************************************************************************
|
||
|
**
|
||
|
** Definition of QAccessible and QAccessibleObject classes
|
||
|
**
|
||
|
** Copyright (C) 2000-2008 Trolltech ASA. All rights reserved.
|
||
|
**
|
||
|
** This file is part of the kernel module of the Qt GUI Toolkit.
|
||
|
**
|
||
|
** This file may be used under the terms of the GNU General
|
||
|
** Public License versions 2.0 or 3.0 as published by the Free
|
||
|
** Software Foundation and appearing in the files LICENSE.GPL2
|
||
|
** and LICENSE.GPL3 included in the packaging of this file.
|
||
|
** Alternatively you may (at your option) use any later version
|
||
|
** of the GNU General Public License if such license has been
|
||
|
** publicly approved by Trolltech ASA (or its successors, if any)
|
||
|
** and the KDE Free Qt Foundation.
|
||
|
**
|
||
|
** Please review the following information to ensure GNU General
|
||
|
** Public Licensing requirements will be met:
|
||
|
** http://trolltech.com/products/qt/licenses/licensing/opensource/.
|
||
|
** If you are unsure which license is appropriate for your use, please
|
||
|
** review the following information:
|
||
|
** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
|
||
|
** or contact the sales department at sales@trolltech.com.
|
||
|
**
|
||
|
** This file may be used under the terms of the Q Public License as
|
||
|
** defined by Trolltech ASA and appearing in the file LICENSE.QPL
|
||
|
** included in the packaging of this file. Licensees holding valid Qt
|
||
|
** Commercial licenses may use this file in accordance with the Qt
|
||
|
** Commercial License Agreement provided with the Software.
|
||
|
**
|
||
|
** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
|
||
|
** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
|
||
|
** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
|
||
|
** herein.
|
||
|
**
|
||
|
**********************************************************************/
|
||
|
|
||
|
#ifndef QACCESSIBLE_H
|
||
|
#define QACCESSIBLE_H
|
||
|
|
||
|
#ifndef QT_H
|
||
|
#include "qobject.h"
|
||
|
#include <private/qcom_p.h>
|
||
|
#include "qrect.h"
|
||
|
#include "qguardedptr.h"
|
||
|
#include "qmemarray.h"
|
||
|
#endif // QT_H
|
||
|
|
||
|
#if defined(QT_ACCESSIBILITY_SUPPORT)
|
||
|
|
||
|
struct QAccessibleInterface;
|
||
|
|
||
|
class Q_EXPORT QAccessible
|
||
|
{
|
||
|
private:
|
||
|
#ifdef Q_WS_MAC
|
||
|
static QMAC_PASCAL OSStatus globalEventProcessor(EventHandlerCallRef, EventRef, void *);
|
||
|
static QObject *queryAccessibleObject(QAccessibleInterface *);
|
||
|
#endif
|
||
|
public:
|
||
|
enum Event {
|
||
|
SoundPlayed = 0x0001,
|
||
|
Alert = 0x0002,
|
||
|
ForegroundChanged = 0x0003,
|
||
|
MenuStart = 0x0004,
|
||
|
MenuEnd = 0x0005,
|
||
|
PopupMenuStart = 0x0006,
|
||
|
PopupMenuEnd = 0x0007,
|
||
|
ContextHelpStart = 0x000C,
|
||
|
ContextHelpEnd = 0x000D,
|
||
|
DragDropStart = 0x000E,
|
||
|
DragDropEnd = 0x000F,
|
||
|
DialogStart = 0x0010,
|
||
|
DialogEnd = 0x0011,
|
||
|
ScrollingStart = 0x0012,
|
||
|
ScrollingEnd = 0x0013,
|
||
|
|
||
|
MenuCommand = 0x0018,
|
||
|
|
||
|
ObjectCreated = 0x8000,
|
||
|
ObjectDestroyed = 0x8001,
|
||
|
ObjectShow = 0x8002,
|
||
|
ObjectHide = 0x8003,
|
||
|
ObjectReorder = 0x8004,
|
||
|
Focus = 0x8005,
|
||
|
Selection = 0x8006,
|
||
|
SelectionAdd = 0x8007,
|
||
|
SelectionRemove = 0x8008,
|
||
|
SelectionWithin = 0x8009,
|
||
|
StateChanged = 0x800A,
|
||
|
LocationChanged = 0x800B,
|
||
|
NameChanged = 0x800C,
|
||
|
DescriptionChanged = 0x800D,
|
||
|
ValueChanged = 0x800E,
|
||
|
ParentChanged = 0x800F,
|
||
|
HelpChanged = 0x80A0,
|
||
|
DefaultActionChanged= 0x80B0,
|
||
|
AcceleratorChanged = 0x80C0
|
||
|
};
|
||
|
|
||
|
enum State {
|
||
|
Normal = 0x00000000,
|
||
|
Unavailable = 0x00000001,
|
||
|
Selected = 0x00000002,
|
||
|
Focused = 0x00000004,
|
||
|
Pressed = 0x00000008,
|
||
|
Checked = 0x00000010,
|
||
|
Mixed = 0x00000020,
|
||
|
ReadOnly = 0x00000040,
|
||
|
HotTracked = 0x00000080,
|
||
|
Default = 0x00000100,
|
||
|
Expanded = 0x00000200,
|
||
|
Collapsed = 0x00000400,
|
||
|
Busy = 0x00000800,
|
||
|
Floating = 0x00001000,
|
||
|
Marqueed = 0x00002000,
|
||
|
Animated = 0x00004000,
|
||
|
Invisible = 0x00008000,
|
||
|
Offscreen = 0x00010000,
|
||
|
Sizeable = 0x00020000,
|
||
|
Moveable = 0x00040000,
|
||
|
SelfVoicing = 0x00080000,
|
||
|
Focusable = 0x00100000,
|
||
|
Selectable = 0x00200000,
|
||
|
Linked = 0x00400000,
|
||
|
Traversed = 0x00800000,
|
||
|
MultiSelectable = 0x01000000,
|
||
|
ExtSelectable = 0x02000000,
|
||
|
AlertLow = 0x04000000,
|
||
|
AlertMedium = 0x08000000,
|
||
|
AlertHigh = 0x10000000,
|
||
|
Protected = 0x20000000,
|
||
|
Valid = 0x3fffffff
|
||
|
};
|
||
|
|
||
|
enum Role {
|
||
|
NoRole = 0x00000000,
|
||
|
TitleBar = 0x00000001,
|
||
|
MenuBar = 0x00000002,
|
||
|
ScrollBar = 0x00000003,
|
||
|
Grip = 0x00000004,
|
||
|
Sound = 0x00000005,
|
||
|
Cursor = 0x00000006,
|
||
|
Caret = 0x00000007,
|
||
|
AlertMessage = 0x00000008,
|
||
|
Window = 0x00000009,
|
||
|
Client = 0x0000000A,
|
||
|
PopupMenu = 0x0000000B,
|
||
|
MenuItem = 0x0000000C,
|
||
|
ToolTip = 0x0000000D,
|
||
|
Application = 0x0000000E,
|
||
|
Document = 0x0000000F,
|
||
|
Pane = 0x00000010,
|
||
|
Chart = 0x00000011,
|
||
|
Dialog = 0x00000012,
|
||
|
Border = 0x00000013,
|
||
|
Grouping = 0x00000014,
|
||
|
Separator = 0x00000015,
|
||
|
ToolBar = 0x00000016,
|
||
|
StatusBar = 0x00000017,
|
||
|
Table = 0x00000018,
|
||
|
ColumnHeader = 0x00000019,
|
||
|
RowHeader = 0x0000001A,
|
||
|
Column = 0x0000001B,
|
||
|
Row = 0x0000001C,
|
||
|
Cell = 0x0000001D,
|
||
|
Link = 0x0000001E,
|
||
|
HelpBalloon = 0x0000001F,
|
||
|
Character = 0x00000020,
|
||
|
List = 0x00000021,
|
||
|
ListItem = 0x00000022,
|
||
|
Outline = 0x00000023,
|
||
|
OutlineItem = 0x00000024,
|
||
|
PageTab = 0x00000025,
|
||
|
PropertyPage = 0x00000026,
|
||
|
Indicator = 0x00000027,
|
||
|
Graphic = 0x00000028,
|
||
|
StaticText = 0x00000029,
|
||
|
EditableText = 0x0000002A, // Editable, selectable, etc.
|
||
|
PushButton = 0x0000002B,
|
||
|
CheckBox = 0x0000002C,
|
||
|
RadioButton = 0x0000002D,
|
||
|
ComboBox = 0x0000002E,
|
||
|
DropLest = 0x0000002F,
|
||
|
ProgressBar = 0x00000030,
|
||
|
Dial = 0x00000031,
|
||
|
HotkeyField = 0x00000032,
|
||
|
Slider = 0x00000033,
|
||
|
SpinBox = 0x00000034,
|
||
|
Diagram = 0x00000035,
|
||
|
Animation = 0x00000036,
|
||
|
Equation = 0x00000037,
|
||
|
ButtonDropDown = 0x00000038,
|
||
|
ButtonMenu = 0x00000039,
|
||
|
ButtonDropGrid = 0x0000003A,
|
||
|
Whitespace = 0x0000003B,
|
||
|
PageTabList = 0x0000003C,
|
||
|
Clock = 0x0000003D
|
||
|
};
|
||
|
|
||
|
enum NavDirection {
|
||
|
NavUp = 0x00000001,
|
||
|
NavDown = 0x00000002,
|
||
|
NavLeft = 0x00000003,
|
||
|
NavRight = 0x00000004,
|
||
|
NavNext = 0x00000005,
|
||
|
NavPrevious = 0x00000006,
|
||
|
NavFirstChild = 0x00000007,
|
||
|
NavLastChild = 0x00000008,
|
||
|
NavFocusChild = 0x00000009
|
||
|
};
|
||
|
|
||
|
enum Text {
|
||
|
Name = 0,
|
||
|
Description,
|
||
|
Value,
|
||
|
Help,
|
||
|
Accelerator,
|
||
|
DefaultAction
|
||
|
};
|
||
|
|
||
|
static QRESULT queryAccessibleInterface( QObject *, QAccessibleInterface ** );
|
||
|
static void updateAccessibility( QObject *, int who, Event reason );
|
||
|
static bool isActive();
|
||
|
|
||
|
static void initialize();
|
||
|
static void cleanup();
|
||
|
};
|
||
|
|
||
|
// {EC86CB9C-5DA0-4c43-A739-13EBDF1C6B14}
|
||
|
#define IID_QAccessible QUuid( 0xec86cb9c, 0x5da0, 0x4c43, 0xa7, 0x39, 0x13, 0xeb, 0xdf, 0x1c, 0x6b, 0x14 )
|
||
|
|
||
|
struct Q_EXPORT QAccessibleInterface : public QAccessible, public QUnknownInterface
|
||
|
{
|
||
|
// check for valid pointers
|
||
|
virtual bool isValid() const = 0;
|
||
|
|
||
|
// hierarchy
|
||
|
virtual int childCount() const = 0;
|
||
|
virtual QRESULT queryChild( int control, QAccessibleInterface** ) const = 0;
|
||
|
virtual QRESULT queryParent( QAccessibleInterface** ) const = 0;
|
||
|
|
||
|
// navigation
|
||
|
virtual int controlAt( int x, int y ) const = 0;
|
||
|
virtual QRect rect( int control ) const = 0;
|
||
|
virtual int navigate( NavDirection direction, int startControl ) const = 0;
|
||
|
|
||
|
// properties and state
|
||
|
virtual QString text( Text t, int control ) const = 0;
|
||
|
virtual void setText( Text t, int control, const QString &text ) = 0;
|
||
|
virtual Role role( int control ) const = 0;
|
||
|
virtual State state( int control ) const = 0;
|
||
|
virtual QMemArray<int> selection() const = 0;
|
||
|
|
||
|
// methods
|
||
|
virtual bool doDefaultAction( int control ) = 0;
|
||
|
virtual bool setFocus( int control ) = 0;
|
||
|
virtual bool setSelected( int control, bool on, bool extend ) = 0;
|
||
|
virtual void clearSelection() = 0;
|
||
|
};
|
||
|
|
||
|
// {49F4C6A7-412F-41DE-9E24-648843421FD3}
|
||
|
#ifndef IID_QAccessibleFactory
|
||
|
#define IID_QAccessibleFactory QUuid( 0x49f4c6a7, 0x412f, 0x41de, 0x9e, 0x24, 0x64, 0x88, 0x43, 0x42, 0x1f, 0xd3 )
|
||
|
#endif
|
||
|
|
||
|
struct Q_EXPORT QAccessibleFactoryInterface : public QAccessible, public QFeatureListInterface
|
||
|
{
|
||
|
virtual QRESULT createAccessibleInterface( const QString &, QObject *, QAccessibleInterface** ) = 0;
|
||
|
};
|
||
|
|
||
|
class Q_EXPORT QAccessibleObject : public QObject, public QAccessibleInterface
|
||
|
{
|
||
|
public:
|
||
|
QAccessibleObject( QObject *object );
|
||
|
virtual ~QAccessibleObject();
|
||
|
|
||
|
QRESULT queryInterface( const QUuid &, QUnknownInterface** );
|
||
|
Q_REFCOUNT
|
||
|
|
||
|
bool isValid() const;
|
||
|
|
||
|
protected:
|
||
|
QObject *object() const;
|
||
|
|
||
|
private:
|
||
|
QGuardedPtr<QObject> object_;
|
||
|
};
|
||
|
|
||
|
#define Q_DEFINED_QACCESSIBLE_OBJECT
|
||
|
#include "qwinexport.h"
|
||
|
#endif //QT_ACCESSIBILITY_SUPPORT
|
||
|
|
||
|
#endif //QACCESSIBLE_H
|