]> cloud.milkyroute.net Git - dolphin.git/blob - src/kitemviews/kitemlistviewaccessible.h
Make cell indices work.
[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/qaccessible.h>
6 #include <QtGui/qaccessible2.h>
7 #include <QtGui/qaccessiblewidget.h>
8 #include <QtGui/qaccessibleobject.h>
9
10 #include "kitemlistview.h"
11 #include "kitemlistcontainer.h"
12
13 #ifndef QT_NO_ACCESSIBILITY
14
15 class KItemListAccessibleCell;
16
17 class KItemListViewAccessible: public QAccessibleTable2Interface, public QAccessibleObjectEx
18 {
19 Q_ACCESSIBLE_OBJECT
20 public:
21 explicit KItemListViewAccessible(KItemListView* view);
22
23 Role role(int child) const;
24 State state(int child) const;
25 QString text(Text t, int child) const;
26 QRect rect(int child) const;
27
28 int childAt(int x, int y) const;
29 int childCount() const;
30 int indexOfChild(const QAccessibleInterface* ) const;
31
32 int navigate(RelationFlag relation, int index, QAccessibleInterface** iface) const;
33 Relation relationTo(int child, const QAccessibleInterface* other, int otherChild) const;
34
35 #ifndef QT_NO_ACTION
36 int userActionCount(int child) const;
37 QString actionText(int action, Text t, int child) const;
38 bool doAction(int action, int child, const QVariantList &params);
39 #endif
40 QVariant invokeMethodEx(Method, int, const QVariantList &);
41
42 // Table2 interface
43 virtual QAccessibleTable2CellInterface* cellAt(int row, int column) const;
44 virtual QAccessibleInterface* caption() const;
45 virtual QAccessibleInterface* summary() const;
46 virtual QString columnDescription(int column) const;
47 virtual QString rowDescription(int row) const;
48 virtual int columnCount() const;
49 virtual int rowCount() const;
50 virtual QAccessible2::TableModelChange modelChange() const;
51 virtual void rowsInserted(const QModelIndex&, int, int) {}
52 virtual void rowsRemoved(const QModelIndex&, int, int) {}
53 virtual void columnsInserted(const QModelIndex&, int, int) {}
54 virtual void columnsRemoved(const QModelIndex&, int, int) {}
55 virtual void rowsMoved(const QModelIndex&, int, int, const QModelIndex&, int) {}
56 virtual void columnsMoved(const QModelIndex&, int, int, const QModelIndex&, int) {}
57
58 // Selection
59 virtual int selectedCellCount() const;
60 virtual int selectedColumnCount() const;
61 virtual int selectedRowCount() const;
62 virtual QList<QAccessibleTable2CellInterface*> selectedCells() const;
63 virtual QList<int> selectedColumns() const;
64 virtual QList<int> selectedRows() const;
65 virtual bool isColumnSelected(int column) const;
66 virtual bool isRowSelected(int row) const;
67 virtual bool selectRow(int row);
68 virtual bool selectColumn(int column);
69 virtual bool unselectRow(int row);
70 virtual bool unselectColumn(int column);
71
72 KItemListView* view() const;
73
74 protected:
75 virtual void modelReset();
76 /**
77 * Create an QAccessibleTable2CellInterface representing the table
78 * cell at the @index. Index is 0-based.
79 */
80 inline QAccessibleTable2CellInterface* cell(int index) const;
81 inline QAccessible::Role cellRole() const;
82 };
83
84 class KItemListAccessibleCell: public QAccessibleTable2CellInterface
85 {
86 public:
87 KItemListAccessibleCell(KItemListView* view, int m_index);
88
89 QObject* object() const;
90 Role role(int) const;
91 State state(int) const;
92 QRect rect(int) const;
93 bool isValid() const;
94 int childAt(int, int) const;
95 int childCount() const;
96 int indexOfChild(const QAccessibleInterface*) const;
97 QString text(Text t, int child) const;
98 void setText(Text t, int child, const QString& text);
99 int navigate(RelationFlag relation, int m_index, QAccessibleInterface** iface) const;
100 Relation relationTo(int child, const QAccessibleInterface* other, int otherChild) const;
101 bool isExpandable() const;
102
103 #ifndef QT_NO_ACTION
104 int userActionCount(int child) const;
105 QString actionText(int action, Text t, int child) const;
106 bool doAction(int action, int child, const QVariantList &params);
107 #endif
108
109 // Cell Interface
110 virtual int columnExtent() const;
111 virtual QList<QAccessibleInterface* > columnHeaderCells() const;
112 virtual int columnIndex() const;
113 virtual int rowExtent() const;
114 virtual QList<QAccessibleInterface* > rowHeaderCells() const;
115 virtual int rowIndex() const;
116 virtual bool isSelected() const;
117 virtual void rowColumnExtents(int* row, int* column, int* rowExtents, int* columnExtents, bool* selected) const;
118 virtual QAccessibleTable2Interface* table() const;
119
120 inline int index() const;
121
122 private:
123 QPointer<KItemListView> m_view;
124 int m_index;
125
126 friend class KItemListViewAccessible;
127 };
128
129 class KItemListContainerAccessible : public QAccessibleWidgetEx
130 {
131 Q_ACCESSIBLE_OBJECT
132 public:
133 explicit KItemListContainerAccessible(KItemListContainer*);
134 virtual ~KItemListContainerAccessible();
135 int childCount () const;
136 int indexOfChild ( const QAccessibleInterface* child ) const;
137 int navigate ( RelationFlag relation, int entry, QAccessibleInterface** target ) const;
138
139 private:
140 inline KItemListContainer* container() const
141 {
142 return static_cast<KItemListContainer* >(object());
143 }
144 };
145
146 #endif // QT_NO_ACCESSIBILITY
147
148 #endif // ACCESSIBLE_ITEMVIEWS_H