]> cloud.milkyroute.net Git - dolphin.git/blob - src/kitemviews/kitemlistviewaccessible.h
Make touch tap to select items work in selection mode
[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 public:
78 AccessibleIdWrapper();
79 bool isValid;
80 QAccessible::Id id;
81 };
82 mutable QVector<AccessibleIdWrapper> m_cells;
83 };
84
85 class DOLPHIN_EXPORT KItemListAccessibleCell: public QAccessibleInterface, public QAccessibleTableCellInterface
86 {
87 public:
88 KItemListAccessibleCell(KItemListView* view, int m_index);
89
90 void* interface_cast(QAccessible::InterfaceType type) override;
91 QObject* object() const override;
92 bool isValid() const override;
93 QAccessible::Role role() const override;
94 QAccessible::State state() const override;
95 QRect rect() const override;
96 QString text(QAccessible::Text t) const override;
97 void setText(QAccessible::Text t, const QString& text) override;
98
99 QAccessibleInterface* child(int index) const override;
100 int childCount() const override;
101 QAccessibleInterface* childAt(int x, int y) const override;
102 int indexOfChild(const QAccessibleInterface*) const override;
103
104 QAccessibleInterface* parent() const override;
105 bool isExpandable() const;
106
107 // Cell Interface
108 int columnExtent() const override;
109 QList<QAccessibleInterface*> columnHeaderCells() const override;
110 int columnIndex() const override;
111 int rowExtent() const override;
112 QList<QAccessibleInterface*> rowHeaderCells() const override;
113 int rowIndex() const override;
114 bool isSelected() const override;
115 QAccessibleInterface* table() const override;
116
117 inline int index() const;
118
119 private:
120 QPointer<KItemListView> m_view;
121 int m_index;
122 };
123
124 class DOLPHIN_EXPORT KItemListContainerAccessible : public QAccessibleWidget
125 {
126 public:
127 explicit KItemListContainerAccessible(KItemListContainer* container);
128 ~KItemListContainerAccessible() override;
129
130 QAccessibleInterface* child(int index) const override;
131 int childCount() const override;
132 int indexOfChild(const QAccessibleInterface* child) const override;
133
134 private:
135 const KItemListContainer* container() const;
136 };
137
138 #endif // QT_NO_ACCESSIBILITY
139
140 #endif