]> cloud.milkyroute.net Git - dolphin.git/blob - src/kitemviews/kitemlistviewaccessible.h
Merge remote-tracking branch 'upstream/master' into work/zakharafoniam/useful-groups
[dolphin.git] / src / kitemviews / kitemlistviewaccessible.h
1 /*
2 * SPDX-FileCopyrightText: 2012 Amandeep Singh <aman.dedman@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #ifndef KITEMLISTVIEWACCESSIBLE_H
8 #define KITEMLISTVIEWACCESSIBLE_H
9
10 #ifndef QT_NO_ACCESSIBILITY
11
12 #include "dolphin_export.h"
13
14 #include <QAccessible>
15 #include <QAccessibleObject>
16 #include <QAccessibleWidget>
17 #include <QPointer>
18
19 class KItemListView;
20 class KItemListContainer;
21 class KItemListContainerAccessible;
22
23 class DOLPHIN_EXPORT KItemListViewAccessible : public QAccessibleObject, public QAccessibleTableInterface
24 {
25 public:
26 explicit KItemListViewAccessible(KItemListView *view, KItemListContainerAccessible *parent);
27 ~KItemListViewAccessible() override;
28
29 void *interface_cast(QAccessible::InterfaceType type) override;
30
31 QAccessible::Role role() const override;
32 QAccessible::State state() const override;
33 QString text(QAccessible::Text t) const override;
34 QRect rect() const override;
35
36 QAccessibleInterface *child(int index) const override;
37 int childCount() const override;
38 int indexOfChild(const QAccessibleInterface *) const override;
39 QAccessibleInterface *childAt(int x, int y) const override;
40 QAccessibleInterface *parent() const override;
41
42 // Table interface
43 QAccessibleInterface *cellAt(int row, int column) const override;
44 QAccessibleInterface *caption() const override;
45 QAccessibleInterface *summary() const override;
46 QString columnDescription(int column) const override;
47 QString rowDescription(int row) const override;
48 int columnCount() const override;
49 int rowCount() const override;
50
51 // Selection
52 int selectedCellCount() const override;
53 int selectedColumnCount() const override;
54 int selectedRowCount() const override;
55 QList<QAccessibleInterface *> selectedCells() const override;
56 QList<int> selectedColumns() const override;
57 QList<int> selectedRows() const override;
58 bool isColumnSelected(int column) const override;
59 bool isRowSelected(int row) const override;
60 bool selectRow(int row) override;
61 bool selectColumn(int column) override;
62 bool unselectRow(int row) override;
63 bool unselectColumn(int column) override;
64 void modelChange(QAccessibleTableModelChangeEvent *) override;
65
66 KItemListView *view() const;
67
68 protected:
69 virtual void modelReset();
70 /**
71 * Create an QAccessibleTableCellInterface representing the table
72 * cell at the @index. Index is 0-based.
73 */
74 inline QAccessibleInterface *cell(int index) const;
75
76 private:
77 class AccessibleIdWrapper
78 {
79 public:
80 AccessibleIdWrapper();
81 bool isValid;
82 QAccessible::Id id;
83 };
84 mutable QVector<AccessibleIdWrapper> m_cells;
85
86 KItemListContainerAccessible *m_parent;
87 };
88
89 class DOLPHIN_EXPORT KItemListAccessibleCell : public QAccessibleInterface, public QAccessibleTableCellInterface
90 {
91 public:
92 KItemListAccessibleCell(KItemListView *view, int m_index);
93
94 void *interface_cast(QAccessible::InterfaceType type) override;
95 QObject *object() const override;
96 bool isValid() const override;
97 QAccessible::Role role() const override;
98 QAccessible::State state() const override;
99 QRect rect() const override;
100 QString text(QAccessible::Text t) const override;
101 void setText(QAccessible::Text t, const QString &text) override;
102
103 QAccessibleInterface *child(int index) const override;
104 int childCount() const override;
105 QAccessibleInterface *childAt(int x, int y) const override;
106 int indexOfChild(const QAccessibleInterface *) const override;
107
108 QAccessibleInterface *parent() const override;
109 bool isExpandable() const;
110
111 // Cell Interface
112 int columnExtent() const override;
113 QList<QAccessibleInterface *> columnHeaderCells() const override;
114 int columnIndex() const override;
115 int rowExtent() const override;
116 QList<QAccessibleInterface *> rowHeaderCells() const override;
117 int rowIndex() const override;
118 bool isSelected() const override;
119 QAccessibleInterface *table() const override;
120
121 inline int index() const;
122
123 private:
124 QPointer<KItemListView> m_view;
125 int m_index;
126 };
127
128 class DOLPHIN_EXPORT KItemListContainerAccessible : public QAccessibleWidget
129 {
130 public:
131 explicit KItemListContainerAccessible(KItemListContainer *container);
132 ~KItemListContainerAccessible() override;
133
134 QAccessibleInterface *child(int index) const override;
135 int childCount() const override;
136 int indexOfChild(const QAccessibleInterface *child) const override;
137
138 private:
139 const KItemListContainer *container() const;
140 };
141
142 #endif // QT_NO_ACCESSIBILITY
143
144 #endif