]> cloud.milkyroute.net Git - dolphin.git/blob - src/kitemviews/kitemlistviewaccessible.h
KDirectoryContentsCounter: show intermediate dir size counting results, improve stopp...
[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
22 class DOLPHIN_EXPORT KItemListViewAccessible : public QAccessibleObject, public QAccessibleTableInterface
23 {
24 public:
25 explicit KItemListViewAccessible(KItemListView *view);
26 ~KItemListViewAccessible() override;
27
28 void *interface_cast(QAccessible::InterfaceType type) override;
29
30 QAccessible::Role role() const override;
31 QAccessible::State state() const override;
32 QString text(QAccessible::Text t) const override;
33 QRect rect() const override;
34
35 QAccessibleInterface *child(int index) const override;
36 int childCount() const override;
37 int indexOfChild(const QAccessibleInterface *) const override;
38 QAccessibleInterface *childAt(int x, int y) const override;
39 QAccessibleInterface *parent() const override;
40
41 // Table interface
42 QAccessibleInterface *cellAt(int row, int column) const override;
43 QAccessibleInterface *caption() const override;
44 QAccessibleInterface *summary() const override;
45 QString columnDescription(int column) const override;
46 QString rowDescription(int row) const override;
47 int columnCount() const override;
48 int rowCount() const override;
49
50 // Selection
51 int selectedCellCount() const override;
52 int selectedColumnCount() const override;
53 int selectedRowCount() const override;
54 QList<QAccessibleInterface *> selectedCells() const override;
55 QList<int> selectedColumns() const override;
56 QList<int> selectedRows() const override;
57 bool isColumnSelected(int column) const override;
58 bool isRowSelected(int row) const override;
59 bool selectRow(int row) override;
60 bool selectColumn(int column) override;
61 bool unselectRow(int row) override;
62 bool unselectColumn(int column) override;
63 void modelChange(QAccessibleTableModelChangeEvent *) override;
64
65 KItemListView *view() const;
66
67 protected:
68 virtual void modelReset();
69 /**
70 * Create an QAccessibleTableCellInterface representing the table
71 * cell at the @index. Index is 0-based.
72 */
73 inline QAccessibleInterface *cell(int index) const;
74
75 private:
76 class AccessibleIdWrapper
77 {
78 public:
79 AccessibleIdWrapper();
80 bool isValid;
81 QAccessible::Id id;
82 };
83 mutable QVector<AccessibleIdWrapper> m_cells;
84 };
85
86 class DOLPHIN_EXPORT KItemListAccessibleCell : public QAccessibleInterface, public QAccessibleTableCellInterface
87 {
88 public:
89 KItemListAccessibleCell(KItemListView *view, int m_index);
90
91 void *interface_cast(QAccessible::InterfaceType type) override;
92 QObject *object() const override;
93 bool isValid() const override;
94 QAccessible::Role role() const override;
95 QAccessible::State state() const override;
96 QRect rect() const override;
97 QString text(QAccessible::Text t) const override;
98 void setText(QAccessible::Text t, const QString &text) override;
99
100 QAccessibleInterface *child(int index) const override;
101 int childCount() const override;
102 QAccessibleInterface *childAt(int x, int y) const override;
103 int indexOfChild(const QAccessibleInterface *) const override;
104
105 QAccessibleInterface *parent() const override;
106 bool isExpandable() const;
107
108 // Cell Interface
109 int columnExtent() const override;
110 QList<QAccessibleInterface *> columnHeaderCells() const override;
111 int columnIndex() const override;
112 int rowExtent() const override;
113 QList<QAccessibleInterface *> rowHeaderCells() const override;
114 int rowIndex() const override;
115 bool isSelected() const override;
116 QAccessibleInterface *table() const override;
117
118 inline int index() const;
119
120 private:
121 QPointer<KItemListView> m_view;
122 int m_index;
123 };
124
125 class DOLPHIN_EXPORT KItemListContainerAccessible : public QAccessibleWidget
126 {
127 public:
128 explicit KItemListContainerAccessible(KItemListContainer *container);
129 ~KItemListContainerAccessible() override;
130
131 QAccessibleInterface *child(int index) const override;
132 int childCount() const override;
133 int indexOfChild(const QAccessibleInterface *child) const override;
134
135 private:
136 const KItemListContainer *container() const;
137 };
138
139 #endif // QT_NO_ACCESSIBILITY
140
141 #endif