]> cloud.milkyroute.net Git - dolphin.git/blob - src/kitemviews/kitemlistviewaccessible.h
Accessibility: Implement rect for cells and view.
[dolphin.git] / src / kitemviews / kitemlistviewaccessible.h
1 #ifndef ACCESSIBLE_ITEMVIEWS_H
2 #define ACCESSIBLE_ITEMVIEWS_H
3
4 #include "QtCore/qpointer.h"
5 #include <QtGui/qabstractitemview.h>
6 #include <QtGui/qheaderview.h>
7 #include <QtGui/qaccessible.h>
8 #include <QtGui/qaccessible2.h>
9 #include <QtGui/qaccessiblewidget.h>
10
11 #include "kitemlistview.h"
12 #include "kitemlistcontainer.h"
13
14 #ifndef QT_NO_ACCESSIBILITY
15
16 #ifndef QT_NO_ITEMVIEWS
17
18 class KItemListAccessibleCell;
19
20 class KItemListViewAccessible: public QAccessibleTable2Interface, public QAccessibleObjectEx
21 {
22 Q_ACCESSIBLE_OBJECT
23 public:
24 explicit KItemListViewAccessible(KItemListView *view);
25
26 virtual ~KItemListViewAccessible();
27
28 Role role(int child) const;
29 State state(int child) const;
30 QString text(Text t, int child) const;
31 QRect rect(int child) const;
32
33 int childAt(int x, int y) const;
34 int childCount() const;
35 int indexOfChild(const QAccessibleInterface *) const;
36
37 int navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const;
38 Relation relationTo(int child, const QAccessibleInterface *other, int otherChild) const;
39
40 #ifndef QT_NO_ACTION
41 int userActionCount(int child) const;
42 QString actionText(int action, Text t, int child) const;
43 bool doAction(int action, int child, const QVariantList &params);
44 #endif
45 QVariant invokeMethodEx(Method, int, const QVariantList &) { return QVariant(); }
46
47 // table2 interface
48 virtual QAccessibleTable2CellInterface *cellAt(int row, int column) const;
49 virtual QAccessibleInterface *caption() const;
50 virtual QAccessibleInterface *summary() const;
51 virtual QString columnDescription(int column) const;
52 virtual QString rowDescription(int row) const;
53 virtual int columnCount() const;
54 virtual int rowCount() const;
55 virtual QAccessible2::TableModelChange modelChange() const;
56
57 //Table
58 virtual void rowsInserted(const QModelIndex&, int, int) {}
59 virtual void rowsRemoved(const QModelIndex&, int, int) {}
60 virtual void columnsInserted(const QModelIndex&, int, int) {}
61 virtual void columnsRemoved(const QModelIndex&, int, int) {}
62 virtual void rowsMoved(const QModelIndex&, int, int, const QModelIndex&, int) {}
63 virtual void columnsMoved(const QModelIndex&, int, int, const QModelIndex&, int) {}
64
65 // selection
66 virtual int selectedCellCount() const;
67 virtual int selectedColumnCount() const;
68 virtual int selectedRowCount() const;
69 virtual QList<QAccessibleTable2CellInterface*> selectedCells() const;
70 virtual QList<int> selectedColumns() const;
71 virtual QList<int> selectedRows() const;
72 virtual bool isColumnSelected(int column) const;
73 virtual bool isRowSelected(int row) const;
74 virtual bool selectRow(int row);
75 virtual bool selectColumn(int column);
76 virtual bool unselectRow(int row);
77 virtual bool unselectColumn(int column);
78
79 KItemListView *view() const;
80
81 protected:
82 virtual void modelReset();
83
84 protected:
85 inline QAccessibleTable2CellInterface *cell(int index) const;
86 inline QAccessible::Role cellRole() const {
87 /*
88 switch (m_role) {
89 case QAccessible::List:
90 return QAccessible::ListItem;
91 case QAccessible::Table:
92 return QAccessible::Cell;
93 case QAccessible::Tree:
94 return QAccessible::TreeItem;
95 default:
96 Q_ASSERT(0);
97 }
98 return QAccessible::NoRole;
99 */
100 return QAccessible::Cell;
101 }
102
103 private:
104 //QAccessible::Role m_role;
105 // the child index for a model index
106 //inline int logicalIndex(const QModelIndex &index) const;
107 // the model index from the child index
108 //QAccessibleInterface *childFromLogical(int logicalIndex) const;
109 };
110
111 class KItemListAccessibleCell: public QAccessibleTable2CellInterface
112 {
113 public:
114 KItemListAccessibleCell(KItemListView *view, int m_index);
115
116 QObject *object() const { return 0; }
117 Role role(int) const;
118 State state(int) const;
119 QRect rect(int) const;
120 bool isValid() const;
121
122 int childAt(int, int) const { return 0; }
123 int childCount() const { return 0; }
124 int indexOfChild(const QAccessibleInterface *) const { return -1; }
125
126 QString text(Text t, int child) const;
127 void setText(Text t, int child, const QString &text);
128
129 int navigate(RelationFlag relation, int m_index, QAccessibleInterface **iface) const;
130 Relation relationTo(int child, const QAccessibleInterface *other, int otherChild) const;
131
132 bool isExpandable() const;
133
134 #ifndef QT_NO_ACTION
135 int userActionCount(int child) const;
136 QString actionText(int action, Text t, int child) const;
137 bool doAction(int action, int child, const QVariantList &params);
138 #endif
139
140 // cell interface
141 virtual int columnExtent() const;
142 virtual QList<QAccessibleInterface*> columnHeaderCells() const;
143 virtual int columnIndex() const;
144 virtual int rowExtent() const;
145 virtual QList<QAccessibleInterface*> rowHeaderCells() const;
146 virtual int rowIndex() const;
147 virtual bool isSelected() const;
148 virtual void rowColumnExtents(int *row, int *column, int *rowExtents, int *columnExtents, bool *selected) const;
149 virtual QAccessibleTable2Interface* table() const;
150
151 inline int getIndex() const
152 { return index; }
153
154 private:
155 QPointer<KItemListView> view;
156 int index;
157
158 friend class KItemListViewAccessible;
159 //friend class QAccessibleTree;
160 };
161
162 class KItemListContainerAccessible : public QAccessibleWidgetEx
163 {
164 Q_ACCESSIBLE_OBJECT
165 public:
166 explicit KItemListContainerAccessible(KItemListContainer*);
167 virtual ~KItemListContainerAccessible();
168 int childCount () const;
169 int indexOfChild ( const QAccessibleInterface * child ) const;
170 int navigate ( RelationFlag relation, int entry, QAccessibleInterface ** target ) const;
171
172 private:
173 inline KItemListContainer *container() const
174 {
175 return static_cast<KItemListContainer *>(object());
176 }
177 };
178
179 #endif // QT_NO_ITEMVIEWS
180
181 #endif // QT_NO_ACCESSIBILITY
182
183 #endif // ACCESSIBLE_ITEMVIEWS_H