Warning, file /libraries/libqaccessibilityclient/examples/accessibleapps/accessibletree.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2012 Frederik Gladhorn <gladhorn@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #ifndef ACCESSIBLETREE_H 0008 #define ACCESSIBLETREE_H 0009 0010 #include <QAbstractItemModel> 0011 0012 #include <qaccessibilityclient/registry.h> 0013 0014 class AccessibleTree; 0015 0016 class AccessibleWrapper 0017 { 0018 public: 0019 AccessibleWrapper(const QAccessibleClient::AccessibleObject &object, AccessibleWrapper *parent) 0020 : acc(object), m_parent(parent) 0021 {} 0022 0023 QAccessibleClient::AccessibleObject acc; 0024 0025 ~AccessibleWrapper() { 0026 qDeleteAll(m_children); 0027 } 0028 0029 int childCount(); 0030 AccessibleWrapper *child(int index); 0031 AccessibleWrapper *parent(); 0032 0033 private: 0034 friend class AccessibleTree; 0035 0036 AccessibleWrapper *m_parent; 0037 QList<AccessibleWrapper*> m_children; 0038 }; 0039 0040 class AccessibleTree :public QAbstractItemModel 0041 { 0042 Q_OBJECT 0043 public: 0044 explicit AccessibleTree(QObject* parent = nullptr); 0045 ~AccessibleTree() override; 0046 0047 void setRegistry(QAccessibleClient::Registry *registry); 0048 0049 QModelIndex indexForAccessible(const QAccessibleClient::AccessibleObject &object); 0050 bool addAccessible(const QAccessibleClient::AccessibleObject &object); 0051 bool removeAccessible(const QAccessibleClient::AccessibleObject &object); 0052 bool removeAccessible(const QModelIndex &index); 0053 void updateAccessible(const QAccessibleClient::AccessibleObject &object); 0054 0055 QList<AccessibleWrapper*> apps() const { return m_apps; } 0056 0057 int columnCount(const QModelIndex& parent = QModelIndex()) const override; 0058 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; 0059 QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const override; 0060 QModelIndex parent(const QModelIndex& child) const override; 0061 int rowCount(const QModelIndex& parent = QModelIndex()) const override; 0062 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; 0063 0064 public Q_SLOTS: 0065 void resetModel(); 0066 /*! 0067 \brief Updates all applications in the tree. 0068 0069 Removes and adds top level applications. This is less invasive then modelReset. 0070 */ 0071 void updateTopLevelApps(); 0072 0073 Q_SIGNALS: 0074 void navigationError(const QModelIndex &) const; 0075 0076 private: 0077 QAccessibleClient::Registry *m_registry; 0078 QList<AccessibleWrapper*> m_apps; 0079 }; 0080 0081 #endif // ACCESSIBLETREE_H