File indexing completed on 2024-04-28 05:45:09
0001 /* 0002 * SPDX-FileCopyrightText: 2012 Amandeep Singh <aman.dedman@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef KITEMLISTVIEWACCESSIBLE_H 0008 #define KITEMLISTVIEWACCESSIBLE_H 0009 0010 #ifndef QT_NO_ACCESSIBILITY 0011 0012 #include "dolphin_export.h" 0013 0014 #include <QAccessible> 0015 #include <QAccessibleObject> 0016 #include <QAccessibleWidget> 0017 #include <QPointer> 0018 0019 class KItemListView; 0020 class KItemListContainer; 0021 class KItemListContainerAccessible; 0022 0023 class DOLPHIN_EXPORT KItemListViewAccessible : public QAccessibleObject, public QAccessibleTableInterface 0024 { 0025 public: 0026 explicit KItemListViewAccessible(KItemListView *view, KItemListContainerAccessible *parent); 0027 ~KItemListViewAccessible() override; 0028 0029 void *interface_cast(QAccessible::InterfaceType type) override; 0030 0031 QAccessible::Role role() const override; 0032 QAccessible::State state() const override; 0033 QString text(QAccessible::Text t) const override; 0034 QRect rect() const override; 0035 0036 QAccessibleInterface *child(int index) const override; 0037 int childCount() const override; 0038 int indexOfChild(const QAccessibleInterface *) const override; 0039 QAccessibleInterface *childAt(int x, int y) const override; 0040 QAccessibleInterface *parent() const override; 0041 0042 // Table interface 0043 QAccessibleInterface *cellAt(int row, int column) const override; 0044 QAccessibleInterface *caption() const override; 0045 QAccessibleInterface *summary() const override; 0046 QString columnDescription(int column) const override; 0047 QString rowDescription(int row) const override; 0048 int columnCount() const override; 0049 int rowCount() const override; 0050 0051 // Selection 0052 int selectedCellCount() const override; 0053 int selectedColumnCount() const override; 0054 int selectedRowCount() const override; 0055 QList<QAccessibleInterface *> selectedCells() const override; 0056 QList<int> selectedColumns() const override; 0057 QList<int> selectedRows() const override; 0058 bool isColumnSelected(int column) const override; 0059 bool isRowSelected(int row) const override; 0060 bool selectRow(int row) override; 0061 bool selectColumn(int column) override; 0062 bool unselectRow(int row) override; 0063 bool unselectColumn(int column) override; 0064 void modelChange(QAccessibleTableModelChangeEvent *) override; 0065 0066 KItemListView *view() const; 0067 0068 protected: 0069 virtual void modelReset(); 0070 /** 0071 * Create an QAccessibleTableCellInterface representing the table 0072 * cell at the @index. Index is 0-based. 0073 */ 0074 inline QAccessibleInterface *cell(int index) const; 0075 0076 private: 0077 class AccessibleIdWrapper 0078 { 0079 public: 0080 AccessibleIdWrapper(); 0081 bool isValid; 0082 QAccessible::Id id; 0083 }; 0084 mutable QVector<AccessibleIdWrapper> m_cells; 0085 0086 KItemListContainerAccessible *m_parent; 0087 }; 0088 0089 class DOLPHIN_EXPORT KItemListAccessibleCell : public QAccessibleInterface, public QAccessibleTableCellInterface 0090 { 0091 public: 0092 KItemListAccessibleCell(KItemListView *view, int m_index); 0093 0094 void *interface_cast(QAccessible::InterfaceType type) override; 0095 QObject *object() const override; 0096 bool isValid() const override; 0097 QAccessible::Role role() const override; 0098 QAccessible::State state() const override; 0099 QRect rect() const override; 0100 QString text(QAccessible::Text t) const override; 0101 void setText(QAccessible::Text t, const QString &text) override; 0102 0103 QAccessibleInterface *child(int index) const override; 0104 int childCount() const override; 0105 QAccessibleInterface *childAt(int x, int y) const override; 0106 int indexOfChild(const QAccessibleInterface *) const override; 0107 0108 QAccessibleInterface *parent() const override; 0109 bool isExpandable() const; 0110 0111 // Cell Interface 0112 int columnExtent() const override; 0113 QList<QAccessibleInterface *> columnHeaderCells() const override; 0114 int columnIndex() const override; 0115 int rowExtent() const override; 0116 QList<QAccessibleInterface *> rowHeaderCells() const override; 0117 int rowIndex() const override; 0118 bool isSelected() const override; 0119 QAccessibleInterface *table() const override; 0120 0121 inline int index() const; 0122 0123 private: 0124 QPointer<KItemListView> m_view; 0125 int m_index; 0126 }; 0127 0128 class DOLPHIN_EXPORT KItemListContainerAccessible : public QAccessibleWidget 0129 { 0130 public: 0131 explicit KItemListContainerAccessible(KItemListContainer *container); 0132 ~KItemListContainerAccessible() override; 0133 0134 QAccessibleInterface *child(int index) const override; 0135 int childCount() const override; 0136 int indexOfChild(const QAccessibleInterface *child) const override; 0137 0138 private: 0139 const KItemListContainer *container() const; 0140 }; 0141 0142 #endif // QT_NO_ACCESSIBILITY 0143 0144 #endif