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.
tqt3/src/kernel/ntqaccessible.h

296 lines
8.3 KiB

/****************************************************************************
**
** Definition of TQAccessible and TQAccessibleObject classes
**
** Copyright (C) 2000-2008 Trolltech ASA. All rights reserved.
**
** This file is part of the kernel module of the TQt 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 TQt 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.TQPL
** included in the packaging of this file. Licensees holding valid TQt
** Commercial licenses may use this file in accordance with the TQt
** 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 TQACCESSIBLE_H
#define TQACCESSIBLE_H
#ifndef QT_H
#include "ntqobject.h"
#include <private/qcom_p.h>
#include "ntqrect.h"
#include "ntqguardedptr.h"
#include "ntqmemarray.h"
#endif // QT_H
#if defined(QT_ACCESSIBILITY_SUPPORT)
struct TQAccessibleInterface;
class Q_EXPORT TQAccessible
{
private:
#ifdef Q_WS_MAC
static TQMAC_PASCAL OSStatus globalEventProcessor(EventHandlerCallRef, EventRef, void *);
static TQObject *queryAccessibleObject(TQAccessibleInterface *);
#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 TQRESULT queryAccessibleInterface( TQObject *, TQAccessibleInterface ** );
static void updateAccessibility( TQObject *, int who, Event reason );
static bool isActive();
static void initialize();
static void cleanup();
};
// {EC86CB9C-5DA0-4c43-A739-13EBDF1C6B14}
#define IID_QAccessible TQUuid( 0xec86cb9c, 0x5da0, 0x4c43, 0xa7, 0x39, 0x13, 0xeb, 0xdf, 0x1c, 0x6b, 0x14 )
struct Q_EXPORT TQAccessibleInterface : public TQAccessible, public TQUnknownInterface
{
// check for valid pointers
virtual bool isValid() const = 0;
// hierarchy
virtual int childCount() const = 0;
virtual TQRESULT queryChild( int control, TQAccessibleInterface** ) const = 0;
virtual TQRESULT queryParent( TQAccessibleInterface** ) const = 0;
// navigation
virtual int controlAt( int x, int y ) const = 0;
virtual TQRect rect( int control ) const = 0;
virtual int navigate( NavDirection direction, int startControl ) const = 0;
// properties and state
virtual TQString text( Text t, int control ) const = 0;
virtual void setText( Text t, int control, const TQString &text ) = 0;
virtual Role role( int control ) const = 0;
virtual State state( int control ) const = 0;
virtual TQMemArray<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 TQUuid( 0x49f4c6a7, 0x412f, 0x41de, 0x9e, 0x24, 0x64, 0x88, 0x43, 0x42, 0x1f, 0xd3 )
#endif
struct Q_EXPORT TQAccessibleFactoryInterface : public TQAccessible, public TQFeatureListInterface
{
virtual TQRESULT createAccessibleInterface( const TQString &, TQObject *, TQAccessibleInterface** ) = 0;
};
class Q_EXPORT TQAccessibleObject : public TQObject, public TQAccessibleInterface
{
public:
TQAccessibleObject( TQObject *object );
virtual ~TQAccessibleObject();
TQRESULT queryInterface( const TQUuid &, TQUnknownInterface** );
Q_REFCOUNT
bool isValid() const;
protected:
TQObject *object() const;
private:
TQGuardedPtr<TQObject> object_;
};
#define Q_DEFINED_QACCESSIBLE_OBJECT
#include "ntqwinexport.h"
#endif //QT_ACCESSIBILITY_SUPPORT
#endif //TQACCESSIBLE_H