]> cloud.milkyroute.net Git - dolphin.git/blob - src/kitemviews/kitemlistviewaccessible.h
Merge branch 'Applications/17.12'
[dolphin.git] / src / kitemviews / kitemlistviewaccessible.h
1 /***************************************************************************
2 * Copyright (C) 2012 by Amandeep Singh <aman.dedman@gmail.com> *
3 * *
4 * This program is free software; you can redistribute it and/or modify *
5 * it under the terms of the GNU General Public License as published by *
6 * the Free Software Foundation; either version 2 of the License, or *
7 * (at your option) any later version. *
8 * *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
13 * *
14 * You should have received a copy of the GNU General Public License *
15 * along with this program; if not, write to the *
16 * Free Software Foundation, Inc., *
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
18 ***************************************************************************/
19
20 #ifndef KITEMLISTVIEWACCESSIBLE_H
21 #define KITEMLISTVIEWACCESSIBLE_H
22
23 #ifndef QT_NO_ACCESSIBILITY
24
25 #include "dolphin_export.h"
26
27 #include <QAccessible>
28 #include <QAccessibleObject>
29 #include <QAccessibleWidget>
30 #include <QPointer>
31
32 class KItemListView;
33 class KItemListContainer;
34
35 class DOLPHIN_EXPORT KItemListViewAccessible: public QAccessibleObject, public QAccessibleTableInterface
36 {
37 public:
38 explicit KItemListViewAccessible(KItemListView* view);
39 ~KItemListViewAccessible() override;
40
41 void* interface_cast(QAccessible::InterfaceType type) override;
42
43 QAccessible::Role role() const override;
44 QAccessible::State state() const override;
45 QString text(QAccessible::Text t) const override;
46 QRect rect() const override;
47
48 QAccessibleInterface* child(int index) const override;
49 int childCount() const override;
50 int indexOfChild(const QAccessibleInterface*) const override;
51 QAccessibleInterface* childAt(int x, int y) const override;
52 QAccessibleInterface* parent() const override;
53
54 // Table interface
55 QAccessibleInterface* cellAt(int row, int column) const override;
56 QAccessibleInterface* caption() const override;
57 QAccessibleInterface* summary() const override;
58 QString columnDescription(int column) const override;
59 QString rowDescription(int row) const override;
60 int columnCount() const override;
61 int rowCount() const override;
62
63 // Selection
64 int selectedCellCount() const override;
65 int selectedColumnCount() const override;
66 int selectedRowCount() const override;
67 QList<QAccessibleInterface*> selectedCells() const override;
68 QList<int> selectedColumns() const override;
69 QList<int> selectedRows() const override;
70 bool isColumnSelected(int column) const override;
71 bool isRowSelected(int row) const override;
72 bool selectRow(int row) override;
73 bool selectColumn(int column) override;
74 bool unselectRow(int row) override;
75 bool unselectColumn(int column) override;
76 void modelChange(QAccessibleTableModelChangeEvent*) override;
77
78 KItemListView* view() const;
79
80 protected:
81 virtual void modelReset();
82 /**
83 * Create an QAccessibleTableCellInterface representing the table
84 * cell at the @index. Index is 0-based.
85 */
86 inline QAccessibleInterface* cell(int index) const;
87
88 private:
89 mutable QVector<QAccessibleInterface*> m_cells;
90 };
91
92 class DOLPHIN_EXPORT KItemListAccessibleCell: public QAccessibleInterface, public QAccessibleTableCellInterface
93 {
94 public:
95 KItemListAccessibleCell(KItemListView* view, int m_index);
96
97 void* interface_cast(QAccessible::InterfaceType type) override;
98 QObject* object() const override;
99 bool isValid() const override;
100 QAccessible::Role role() const override;
101 QAccessible::State state() const override;
102 QRect rect() const override;
103 QString text(QAccessible::Text t) const override;
104 void setText(QAccessible::Text t, const QString& text) override;
105
106 QAccessibleInterface* child(int index) const override;
107 int childCount() const override;
108 QAccessibleInterface* childAt(int x, int y) const override;
109 int indexOfChild(const QAccessibleInterface*) const override;
110
111 QAccessibleInterface* parent() const override;
112 bool isExpandable() const;
113
114 // Cell Interface
115 int columnExtent() const override;
116 QList<QAccessibleInterface*> columnHeaderCells() const override;
117 int columnIndex() const override;
118 int rowExtent() const override;
119 QList<QAccessibleInterface*> rowHeaderCells() const override;
120 int rowIndex() const override;
121 bool isSelected() const override;
122 QAccessibleInterface* table() const override;
123
124 inline int index() const;
125
126 private:
127 QPointer<KItemListView> m_view;
128 int m_index;
129 };
130
131 class DOLPHIN_EXPORT KItemListContainerAccessible : public QAccessibleWidget
132 {
133 public:
134 explicit KItemListContainerAccessible(KItemListContainer* container);
135 ~KItemListContainerAccessible() override;
136
137 QAccessibleInterface* child(int index) const override;
138 int childCount() const override;
139 int indexOfChild(const QAccessibleInterface* child) const override;
140
141 private:
142 const KItemListContainer* container() const;
143 };
144
145 #endif // QT_NO_ACCESSIBILITY
146
147 #endif