From 87ae97c11ab9b298c0ce6701873b45fc3992b385 Mon Sep 17 00:00:00 2001 From: Jan-Arve Saether Date: Fri, 16 Sep 2011 06:56:48 +0200 Subject: Refactor accessibility for Qt5 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Moved most stuff to gui\accessible * Moved widget-specific stuff to widgets\accessible * Moved platform-specific code to either the bridge plugin (this was already the case) or to the platform plugin. * Added several classes and functions. These have not yet gone through an API review. The plan is to do that in a later commit. Classes: - QPlatformAccessibility - QWindowsAccessibility Functions: - QWindow *QAccessibleInterface::window(); - QPlatformAccessibility *QPlatformIntegration::accessibility() * The bridge code can now either be a plugin or integrated into the platform plugin * Mac accessibility is left out for now. Unix "should still work" (tm). These platforms should be fixed soon. Change-Id: Ib49ffa73b647ee0af90864544c2769440157f562 Reviewed-on: http://codereview.qt-project.org/5330 Reviewed-by: Frederik Gladhorn Reviewed-by: Jan-Arve Sæther --- src/gui/accessible/qaccessiblebridge.cpp | 158 +++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 src/gui/accessible/qaccessiblebridge.cpp (limited to 'src/gui/accessible/qaccessiblebridge.cpp') diff --git a/src/gui/accessible/qaccessiblebridge.cpp b/src/gui/accessible/qaccessiblebridge.cpp new file mode 100644 index 0000000000..af08654d70 --- /dev/null +++ b/src/gui/accessible/qaccessiblebridge.cpp @@ -0,0 +1,158 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qaccessiblebridge.h" + +#ifndef QT_NO_ACCESSIBILITY + +QT_BEGIN_NAMESPACE + +/*! + \class QAccessibleBridge + \brief The QAccessibleBridge class is the base class for + accessibility back-ends. + + \ingroup accessibility + + Qt supports Microsoft Active Accessibility (MSAA), Mac OS X + Accessibility, and the Unix/X11 AT-SPI standard. By subclassing + QAccessibleBridge, you can support other backends than the + predefined ones. + + Currently, custom bridges are only supported on Unix. We might + add support for them on other platforms as well if there is + enough demand. + + \sa QAccessible, QAccessibleBridgePlugin +*/ + +/*! + \fn QAccessibleBridge::~QAccessibleBridge() + + Destroys the accessibility bridge object. +*/ + +/*! + \fn void QAccessibleBridge::setRootObject(QAccessibleInterface *object) + + This function is called by Qt at application startup to set the + root accessible object of the application to \a object. All other + accessible objects in the application can be reached by the + client using object navigation. +*/ + +/*! + \fn void QAccessibleBridge::notifyAccessibilityUpdate(int reason, QAccessibleInterface *interface, int child) + + This function is called by Qt to notify the bridge about a change + in the accessibility information for object wrapped by the given + \a interface. + + \a reason specifies the cause of the change. It can take values + of type QAccessible::Event. + + \a child is the (1-based) index of the child element that has + changed. When \a child is 0, the object itself has changed. + + \sa QAccessible::updateAccessibility() +*/ + +/*! + \class QAccessibleBridgePlugin + \brief The QAccessibleBridgePlugin class provides an abstract + base for accessibility bridge plugins. + + \ingroup plugins + \ingroup accessibility + + Writing an accessibility bridge plugin is achieved by subclassing + this base class, reimplementing the pure virtual functions keys() + and create(), and exporting the class with the + Q_EXPORT_PLUGIN2() macro. + + \sa QAccessibleBridge, QAccessiblePlugin, {How to Create Qt Plugins} +*/ + +/*! + Constructs an accessibility bridge plugin with the given \a + parent. This is invoked automatically by the Q_EXPORT_PLUGIN2() + macro. +*/ +QAccessibleBridgePlugin::QAccessibleBridgePlugin(QObject *parent) + : QObject(parent) +{ + +} + +/*! + Destroys the accessibility bridge plugin. + + You never have to call this explicitly. Qt destroys a plugin + automatically when it is no longer used. +*/ +QAccessibleBridgePlugin::~QAccessibleBridgePlugin() +{ + +} + +/*! + \fn QStringList QAccessibleBridgePlugin::keys() const + + Returns the list of keys this plugins supports. + + These keys must be the names of the bridges that this + plugin provides. + + \sa create() +*/ + +/*! + \fn QAccessibleBridge *QAccessibleBridgePlugin::create(const QString &key) + + Creates and returns the QAccessibleBridge object corresponding to + the given \a key. Keys are case sensitive. + + \sa keys() +*/ + +QT_END_NAMESPACE + +#endif // QT_NO_ACCESSIBILITY -- cgit v1.2.3