File indexing completed on 2024-06-23 05:13:36

0001 /*
0002     accessibility/accessiblelink_p.h
0003 
0004     This file is part of Kleopatra, the KDE keymanager
0005     SPDX-FileCopyrightText: 2022 g10 Code GmbH
0006     SPDX-FileContributor: Ingo Klöcker <dev@ingo-kloecker.de>
0007 
0008     SPDX-License-Identifier: GPL-2.0-or-later
0009 */
0010 
0011 #pragma once
0012 
0013 #include <QAccessible>
0014 #include <QPointer>
0015 
0016 class QWidget;
0017 
0018 namespace Kleo
0019 {
0020 class AnchorProvider;
0021 
0022 class AccessibleLink : public QAccessibleInterface, public QAccessibleActionInterface
0023 {
0024 public:
0025     AccessibleLink(QWidget *label, int index);
0026     ~AccessibleLink() override;
0027 
0028     bool isValid() const override;
0029     QObject *object() const override;
0030     QWindow *window() const override;
0031 
0032     QAccessibleInterface *childAt(int x, int y) const override;
0033 
0034     QAccessibleInterface *parent() const override;
0035     QAccessibleInterface *child(int index) const override;
0036     int childCount() const override;
0037     int indexOfChild(const QAccessibleInterface *child) const override;
0038 
0039     QString text(QAccessible::Text t) const override;
0040     void setText(QAccessible::Text t, const QString &text) override;
0041     QRect rect() const override;
0042     QAccessible::Role role() const override;
0043     QAccessible::State state() const override;
0044 
0045     void *interface_cast(QAccessible::InterfaceType t) override;
0046 
0047     // QAccessibleActionInterface
0048     QStringList actionNames() const override;
0049     void doAction(const QString &actionName) override;
0050     QStringList keyBindingsForAction(const QString &actionName) const override;
0051 
0052     int index() const;
0053 
0054 private:
0055     AnchorProvider *anchorProvider() const;
0056 
0057     QPointer<QWidget> mLabel;
0058     int mIndex;
0059 };
0060 
0061 }