| /**************************************************************************** |
| ** |
| ** Copyright (C) 2016 The Qt Company Ltd. |
| ** Contact: https://www.qt.io/licensing/ |
| ** |
| ** This file is part of the plugins of the Qt Toolkit. |
| ** |
| ** $QT_BEGIN_LICENSE:LGPL$ |
| ** Commercial License Usage |
| ** Licensees holding valid commercial Qt licenses may use this file in |
| ** accordance with the commercial license agreement provided with the |
| ** Software or, alternatively, in accordance with the terms contained in |
| ** a written agreement between you and The Qt Company. For licensing terms |
| ** and conditions see https://www.qt.io/terms-conditions. For further |
| ** information use the contact form at https://www.qt.io/contact-us. |
| ** |
| ** GNU Lesser General Public License Usage |
| ** Alternatively, this file may be used under the terms of the GNU Lesser |
| ** General Public License version 3 as published by the Free Software |
| ** Foundation and appearing in the file LICENSE.LGPL3 included in the |
| ** packaging of this file. Please review the following information to |
| ** ensure the GNU Lesser General Public License version 3 requirements |
| ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. |
| ** |
| ** GNU General Public License Usage |
| ** Alternatively, this file may be used under the terms of the GNU |
| ** General Public License version 2.0 or (at your option) the GNU General |
| ** Public license version 3 or any later version approved by the KDE Free |
| ** Qt Foundation. The licenses are as published by the Free Software |
| ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 |
| ** included in the packaging of this file. Please review the following |
| ** information to ensure the GNU General Public License requirements will |
| ** be met: https://www.gnu.org/licenses/gpl-2.0.html and |
| ** https://www.gnu.org/licenses/gpl-3.0.html. |
| ** |
| ** $QT_END_LICENSE$ |
| ** |
| ****************************************************************************/ |
| #ifndef QCOCOAACCESIBILITY_H |
| #define QCOCOAACCESIBILITY_H |
| |
| #include <AppKit/AppKit.h> |
| |
| #include <QtGui> |
| #include <qpa/qplatformaccessibility.h> |
| |
| #include "qcocoaaccessibilityelement.h" |
| |
| #ifndef QT_NO_ACCESSIBILITY |
| |
| QT_BEGIN_NAMESPACE |
| |
| class QCocoaAccessibility : public QPlatformAccessibility |
| { |
| public: |
| QCocoaAccessibility(); |
| ~QCocoaAccessibility(); |
| void notifyAccessibilityUpdate(QAccessibleEvent *event) override; |
| void setRootObject(QObject *o) override; |
| void initialize() override; |
| void cleanup() override; |
| }; |
| |
| namespace QCocoaAccessible { |
| |
| /* |
| Qt Cocoa Accessibility Overview |
| |
| Cocoa accessibility is implemented in the following files: |
| |
| - qcocoaaccessibility (this file) : QCocoaAccessibility "plugin", conversion and helper functions. |
| - qnsviewaccessibility : Root accessibility implementation for QNSView |
| - qcocoaaccessibilityelement : Cocoa accessibility protocol wrapper for QAccessibleInterface |
| |
| The accessibility implementation wraps QAccessibleInterfaces in QCocoaAccessibleElements, which |
| implements the cocoa accessibility protocol. The root QAccessibleInterface (the one returned |
| by QWindow::accessibleRoot), is anchored to the QNSView in qnsviewaccessibility.mm. |
| |
| Cocoa explores the accessibility tree by walking the tree using the parent/child |
| relationships or hit testing. When this happens we create QCocoaAccessibleElements on |
| demand. |
| */ |
| |
| NSString *macRole(QAccessibleInterface *interface); |
| NSString *macSubrole(QAccessibleInterface *interface); |
| bool shouldBeIgnored(QAccessibleInterface *interface); |
| NSArray<QMacAccessibilityElement *> *unignoredChildren(QAccessibleInterface *interface); |
| NSString *getTranslatedAction(const QString &qtAction); |
| QString translateAction(NSString *nsAction, QAccessibleInterface *interface); |
| bool hasValueAttribute(QAccessibleInterface *interface); |
| id getValueAttribute(QAccessibleInterface *interface); |
| |
| } |
| |
| QT_END_NAMESPACE |
| |
| #endif // QT_NO_ACCESSIBILITY |
| |
| #endif // QCOCOAACCESIBILITY_H |