Port accessibility to Qt 5

REVIEW: 119428
This commit is contained in:
Frederik Gladhorn 2014-07-23 12:08:33 +02:00
parent df871967c9
commit 316539b9f3
4 changed files with 178 additions and 266 deletions

View file

@ -27,7 +27,7 @@ set(dolphinprivate_LIB_SRCS
kitemviews/kitemlistselectionmanager.cpp kitemviews/kitemlistselectionmanager.cpp
kitemviews/kitemliststyleoption.cpp kitemviews/kitemliststyleoption.cpp
kitemviews/kitemlistview.cpp kitemviews/kitemlistview.cpp
# kitemviews/kitemlistviewaccessible.cpp kitemviews/kitemlistviewaccessible.cpp
kitemviews/kitemlistwidget.cpp kitemviews/kitemlistwidget.cpp
kitemviews/kitemmodelbase.cpp kitemviews/kitemmodelbase.cpp
kitemviews/kitemset.cpp kitemviews/kitemset.cpp

View file

@ -46,12 +46,7 @@
#include <algorithm> #include <algorithm>
#if 0
#include "kitemlistviewaccessible.h" #include "kitemlistviewaccessible.h"
#else
#define QT_NO_ACCESSIBILITY 1
#pragma message("TODO: port accessibility to Qt5")
#endif
namespace { namespace {
// Time in ms until reaching the autoscroll margin triggers // Time in ms until reaching the autoscroll margin triggers
@ -63,7 +58,7 @@ namespace {
} }
#ifndef QT_NO_ACCESSIBILITY #ifndef QT_NO_ACCESSIBILITY
QAccessibleInterface* accessibleInterfaceFactory(const QString &key, QObject *object) QAccessibleInterface* accessibleInterfaceFactory(const QString& key, QObject* object)
{ {
Q_UNUSED(key) Q_UNUSED(key)
@ -941,7 +936,7 @@ void KItemListView::dragEnterEvent(QGraphicsSceneDragDropEvent* event)
setAutoScroll(true); setAutoScroll(true);
} }
void KItemListView::dragMoveEvent(QGraphicsSceneDragDropEvent *event) void KItemListView::dragMoveEvent(QGraphicsSceneDragDropEvent* event)
{ {
QGraphicsWidget::dragMoveEvent(event); QGraphicsWidget::dragMoveEvent(event);
@ -951,7 +946,7 @@ void KItemListView::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
} }
} }
void KItemListView::dragLeaveEvent(QGraphicsSceneDragDropEvent *event) void KItemListView::dragLeaveEvent(QGraphicsSceneDragDropEvent* event)
{ {
QGraphicsWidget::dragLeaveEvent(event); QGraphicsWidget::dragLeaveEvent(event);
setAutoScroll(false); setAutoScroll(false);
@ -1273,9 +1268,12 @@ void KItemListView::slotItemsChanged(const KItemRangeList& itemRanges,
updateVisibleGroupHeaders(); updateVisibleGroupHeaders();
doLayout(NoAnimation); doLayout(NoAnimation);
} }
QAccessibleTableModelChangeEvent ev(this, QAccessibleTableModelChangeEvent::DataChanged);
ev.setFirstRow(itemRange.index);
ev.setLastRow(itemRange.index + itemRange.count);
QAccessible::updateAccessibility(&ev);
} }
#pragma message("TODO: port accessibility otherwise the following line asserts")
//QAccessible::updateAccessibility(this, 0, QAccessible::TableModelChanged);
} }
void KItemListView::slotGroupsChanged() void KItemListView::slotGroupsChanged()
@ -1351,8 +1349,10 @@ void KItemListView::slotCurrentChanged(int current, int previous)
currentWidget->setCurrent(true); currentWidget->setCurrent(true);
} }
} }
#pragma message("TODO: port accessibility otherwise the following line asserts")
//QAccessible::updateAccessibility(this, current+1, QAccessible::Focus); QAccessibleEvent ev(this, QAccessible::Focus);
ev.setChild(current);
QAccessible::updateAccessibility(&ev);
} }
void KItemListView::slotSelectionChanged(const KItemSet& current, const KItemSet& previous) void KItemListView::slotSelectionChanged(const KItemSet& current, const KItemSet& previous)

View file

@ -27,7 +27,7 @@
#include "kitemlistview.h" #include "kitemlistview.h"
#include "private/kitemlistviewlayouter.h" #include "private/kitemlistviewlayouter.h"
#include <QtGui/qaccessible2.h> #include <QtGui/qaccessible.h>
#include <qgraphicsscene.h> #include <qgraphicsscene.h>
#include <qgraphicsview.h> #include <qgraphicsview.h>
@ -40,35 +40,52 @@ KItemListView* KItemListViewAccessible::view() const
} }
KItemListViewAccessible::KItemListViewAccessible(KItemListView* view_) : KItemListViewAccessible::KItemListViewAccessible(KItemListView* view_) :
QAccessibleObjectEx(view_) QAccessibleObject(view_)
{ {
Q_ASSERT(view()); Q_ASSERT(view());
m_cells.resize(childCount());
}
KItemListViewAccessible::~KItemListViewAccessible()
{
foreach (QAccessibleInterface* child, m_cells) {
if (child) {
QAccessible::Id childId = QAccessible::uniqueId(child);
QAccessible::deleteAccessibleInterface(childId);
}
}
}
void* KItemListViewAccessible::interface_cast(QAccessible::InterfaceType type)
{
if (type == QAccessible::TableInterface) {
return static_cast<QAccessibleTableInterface*>(this);
}
return Q_NULLPTR;
} }
void KItemListViewAccessible::modelReset() void KItemListViewAccessible::modelReset()
{ {
} }
QAccessible::Role KItemListViewAccessible::cellRole() const QAccessibleInterface* KItemListViewAccessible::cell(int index) const
{
return QAccessible::Cell;
}
QAccessibleTable2CellInterface* KItemListViewAccessible::cell(int index) const
{ {
if (index < 0 || index >= view()->model()->count()) { if (index < 0 || index >= view()->model()->count()) {
return 0; return 0;
} else {
return new KItemListAccessibleCell(view(), index);
} }
if (m_cells.size() < index - 1)
m_cells.resize(childCount());
QAccessibleInterface* child = m_cells.at(index);
if (!child) {
child = new KItemListAccessibleCell(view(), index);
QAccessible::registerAccessibleInterface(child);
}
return child;
} }
QVariant KItemListViewAccessible::invokeMethodEx(Method, int, const QVariantList&) QAccessibleInterface* KItemListViewAccessible::cellAt(int row, int column) const
{
return QVariant();
}
QAccessibleTable2CellInterface* KItemListViewAccessible::cellAt(int row, int column) const
{ {
return cell(columnCount() * row + column); return cell(columnCount() * row + column);
} }
@ -127,9 +144,9 @@ QString KItemListViewAccessible::rowDescription(int) const
return QString(); return QString();
} }
QList<QAccessibleTable2CellInterface*> KItemListViewAccessible::selectedCells() const QList<QAccessibleInterface*> KItemListViewAccessible::selectedCells() const
{ {
QList<QAccessibleTable2CellInterface*> cells; QList<QAccessibleInterface*> cells;
Q_FOREACH (int index, view()->controller()->selectionManager()->selectedItems()) { Q_FOREACH (int index, view()->controller()->selectionManager()->selectedItems()) {
cells.append(cell(index)); cells.append(cell(index));
} }
@ -181,42 +198,31 @@ bool KItemListViewAccessible::unselectColumn(int)
return true; return true;
} }
QAccessible2::TableModelChange KItemListViewAccessible::modelChange() const void KItemListViewAccessible::modelChange(QAccessibleTableModelChangeEvent* /*event*/)
{}
QAccessible::Role KItemListViewAccessible::role() const
{ {
QAccessible2::TableModelChange change; return QAccessible::Table;
change.lastRow = rowCount();
change.lastColumn = columnCount();
return change;
} }
QAccessible::Role KItemListViewAccessible::role(int child) const QAccessible::State KItemListViewAccessible::state() const
{ {
Q_ASSERT(child >= 0); QAccessible::State s;
return s;
if (child > 0) {
return QAccessible::Cell;
} else {
return QAccessible::Table;
}
} }
QAccessible::State KItemListViewAccessible::state(int child) const QAccessibleInterface* KItemListViewAccessible::childAt(int x, int y) const
{ {
if (child) { const QPointF point = QPointF(x, y);
QAccessibleInterface* interface = 0; int itemIndex = view()->itemAt(view()->mapFromScene(point));
navigate(Child, child, &interface); return child(itemIndex);
if (interface) {
return interface->state(0);
}
}
return QAccessible::Normal | QAccessible::HasInvokeExtension;
} }
int KItemListViewAccessible::childAt(int x, int y) const QAccessibleInterface* KItemListViewAccessible::parent() const
{ {
const QPointF point = QPointF(x,y); // FIXME: return KItemListContainerAccessible here
return view()->itemAt(view()->mapFromScene(point)); return Q_NULLPTR;
} }
int KItemListViewAccessible::childCount() const int KItemListViewAccessible::childCount() const
@ -227,18 +233,16 @@ int KItemListViewAccessible::childCount() const
int KItemListViewAccessible::indexOfChild(const QAccessibleInterface* interface) const int KItemListViewAccessible::indexOfChild(const QAccessibleInterface* interface) const
{ {
const KItemListAccessibleCell* widget = static_cast<const KItemListAccessibleCell*>(interface); const KItemListAccessibleCell* widget = static_cast<const KItemListAccessibleCell*>(interface);
return widget->index() + 1; return widget->index();
} }
QString KItemListViewAccessible::text(Text, int child) const QString KItemListViewAccessible::text(QAccessible::Text) const
{ {
Q_ASSERT(child == 0);
return QString(); return QString();
} }
QRect KItemListViewAccessible::rect(int child) const QRect KItemListViewAccessible::rect() const
{ {
Q_UNUSED(child)
if (!view()->isVisible()) { if (!view()->isVisible()) {
return QRect(); return QRect();
} }
@ -253,50 +257,14 @@ QRect KItemListViewAccessible::rect(int child) const
} }
} }
int KItemListViewAccessible::navigate(RelationFlag relation, int index, QAccessibleInterface** interface) const QAccessibleInterface* KItemListViewAccessible::child(int index) const
{ {
*interface = 0; if (index >= 0 && index < childCount()) {
return cell(index);
switch (relation) {
case QAccessible::Child:
Q_ASSERT(index > 0);
*interface = cell(index - 1);
if (*interface) {
return 0;
}
break;
default:
break;
} }
return Q_NULLPTR;
return -1;
} }
QAccessible::Relation KItemListViewAccessible::relationTo(int, const QAccessibleInterface*, int) const
{
return QAccessible::Unrelated;
}
#ifndef QT_NO_ACTION
int KItemListViewAccessible::userActionCount(int) const
{
return 0;
}
QString KItemListViewAccessible::actionText(int, Text, int) const
{
return QString();
}
bool KItemListViewAccessible::doAction(int, int, const QVariantList&)
{
return false;
}
#endif
// Table Cell // Table Cell
KItemListAccessibleCell::KItemListAccessibleCell(KItemListView* view, int index) : KItemListAccessibleCell::KItemListAccessibleCell(KItemListView* view, int index) :
@ -306,6 +274,14 @@ KItemListAccessibleCell::KItemListAccessibleCell(KItemListView* view, int index)
Q_ASSERT(index >= 0 && index < view->model()->count()); Q_ASSERT(index >= 0 && index < view->model()->count());
} }
void* KItemListAccessibleCell::interface_cast(QAccessible::InterfaceType type)
{
if (type == QAccessible::TableCellInterface) {
return static_cast<QAccessibleTableCellInterface*>(this);
}
return Q_NULLPTR;
}
int KItemListAccessibleCell::columnExtent() const int KItemListAccessibleCell::columnExtent() const
{ {
return 1; return 1;
@ -341,52 +317,39 @@ bool KItemListAccessibleCell::isSelected() const
return m_view->controller()->selectionManager()->isSelected(m_index); return m_view->controller()->selectionManager()->isSelected(m_index);
} }
void KItemListAccessibleCell::rowColumnExtents(int* row, int* column, int* rowExtents, int* columnExtents, bool* selected) const QAccessibleInterface* KItemListAccessibleCell::table() const
{ {
const KItemListViewLayouter* layouter = m_view->m_layouter; return QAccessible::queryAccessibleInterface(m_view);
*row = layouter->itemRow(m_index);
*column = layouter->itemColumn(m_index);
*rowExtents = 1;
*columnExtents = 1;
*selected = isSelected();
} }
QAccessibleTable2Interface* KItemListAccessibleCell::table() const QAccessible::Role KItemListAccessibleCell::role() const
{ {
return QAccessible::queryAccessibleInterface(m_view)->table2Interface();
}
QAccessible::Role KItemListAccessibleCell::role(int child) const
{
Q_ASSERT(child == 0);
return QAccessible::Cell; return QAccessible::Cell;
} }
QAccessible::State KItemListAccessibleCell::state(int child) const QAccessible::State KItemListAccessibleCell::state() const
{ {
Q_ASSERT(child == 0); QAccessible::State state;
QAccessible::State state = Normal;
state.selectable = true;
if (isSelected()) { if (isSelected()) {
state |= Selected; state.selected = true;
} }
state.focusable = true;
if (m_view->controller()->selectionManager()->currentItem() == m_index) { if (m_view->controller()->selectionManager()->currentItem() == m_index) {
state |= Focused; state.focused = true;
} }
state |= Selectable;
state |= Focusable;
if (m_view->controller()->selectionBehavior() == KItemListController::MultiSelection) { if (m_view->controller()->selectionBehavior() == KItemListController::MultiSelection) {
state |= MultiSelectable; state.multiSelectable = true;
} }
if (m_view->model()->isExpandable(m_index)) { if (m_view->model()->isExpandable(m_index)) {
if (m_view->model()->isExpanded(m_index)) { if (m_view->model()->isExpanded(m_index)) {
state |= Expanded; state.expanded = true;
} else { } else {
state |= Collapsed; state.collapsed = true;
} }
} }
@ -398,7 +361,7 @@ bool KItemListAccessibleCell::isExpandable() const
return m_view->model()->isExpandable(m_index); return m_view->model()->isExpandable(m_index);
} }
QRect KItemListAccessibleCell::rect(int) const QRect KItemListAccessibleCell::rect() const
{ {
QRect rect = m_view->itemRect(m_index).toRect(); QRect rect = m_view->itemRect(m_index).toRect();
@ -411,13 +374,9 @@ QRect KItemListAccessibleCell::rect(int) const
return rect; return rect;
} }
QString KItemListAccessibleCell::text(QAccessible::Text t, int child) const QString KItemListAccessibleCell::text(QAccessible::Text t) const
{ {
Q_ASSERT(child == 0);
Q_UNUSED(child)
switch (t) { switch (t) {
case QAccessible::Value:
case QAccessible::Name: { case QAccessible::Name: {
const QHash<QByteArray, QVariant> data = m_view->model()->data(m_index); const QHash<QByteArray, QVariant> data = m_view->model()->data(m_index);
return data["text"].toString(); return data["text"].toString();
@ -430,9 +389,13 @@ QString KItemListAccessibleCell::text(QAccessible::Text t, int child) const
return QString(); return QString();
} }
void KItemListAccessibleCell::setText(QAccessible::Text, int child, const QString&) void KItemListAccessibleCell::setText(QAccessible::Text, const QString&)
{ {
Q_ASSERT(child == 0); }
QAccessibleInterface* KItemListAccessibleCell::child(int) const
{
return Q_NULLPTR;
} }
bool KItemListAccessibleCell::isValid() const bool KItemListAccessibleCell::isValid() const
@ -440,9 +403,9 @@ bool KItemListAccessibleCell::isValid() const
return m_view && (m_index >= 0) && (m_index < m_view->model()->count()); return m_view && (m_index >= 0) && (m_index < m_view->model()->count());
} }
int KItemListAccessibleCell::childAt(int, int) const QAccessibleInterface* KItemListAccessibleCell::childAt(int, int) const
{ {
return 0; return Q_NULLPTR;
} }
int KItemListAccessibleCell::childCount() const int KItemListAccessibleCell::childCount() const
@ -456,43 +419,11 @@ int KItemListAccessibleCell::indexOfChild(const QAccessibleInterface* child) con
return -1; return -1;
} }
int KItemListAccessibleCell::navigate(RelationFlag relation, int index, QAccessibleInterface** interface) const QAccessibleInterface* KItemListAccessibleCell::parent() const
{ {
if (relation == Ancestor && index == 1) { return QAccessible::queryAccessibleInterface(m_view);
*interface = new KItemListViewAccessible(m_view);
return 0;
}
*interface = 0;
return -1;
} }
QAccessible::Relation KItemListAccessibleCell::relationTo(int child, const QAccessibleInterface* , int otherChild) const
{
Q_ASSERT(child == 0);
Q_ASSERT(otherChild == 0);
return QAccessible::Unrelated;
}
#ifndef QT_NO_ACTION
int KItemListAccessibleCell::userActionCount(int) const
{
return 0;
}
QString KItemListAccessibleCell::actionText(int, Text, int) const
{
return QString();
}
bool KItemListAccessibleCell::doAction(int, int, const QVariantList&)
{
return false;
}
#endif
int KItemListAccessibleCell::index() const int KItemListAccessibleCell::index() const
{ {
return m_index; return m_index;
@ -505,7 +436,7 @@ QObject* KItemListAccessibleCell::object() const
// Container Interface // Container Interface
KItemListContainerAccessible::KItemListContainerAccessible(KItemListContainer* container) : KItemListContainerAccessible::KItemListContainerAccessible(KItemListContainer* container) :
QAccessibleWidgetEx(container) QAccessibleWidget(container)
{ {
} }
@ -521,20 +452,17 @@ int KItemListContainerAccessible::childCount() const
int KItemListContainerAccessible::indexOfChild(const QAccessibleInterface* child) const int KItemListContainerAccessible::indexOfChild(const QAccessibleInterface* child) const
{ {
if (child->object() == container()->controller()->view()) { if (child->object() == container()->controller()->view()) {
return 1; return 0;
} else {
return -1;
} }
return -1;
} }
int KItemListContainerAccessible::navigate(QAccessible::RelationFlag relation, int index, QAccessibleInterface** target) const QAccessibleInterface* KItemListContainerAccessible::child(int index) const
{ {
if (relation == QAccessible::Child) { if (index == 0) {
*target = new KItemListViewAccessible(container()->controller()->view()); return QAccessible::queryAccessibleInterface(container()->controller()->view());
return 0;
} else {
return QAccessibleWidgetEx::navigate(relation, index, target);
} }
return Q_NULLPTR;
} }
const KItemListContainer* KItemListContainerAccessible::container() const const KItemListContainer* KItemListContainerAccessible::container() const

View file

@ -22,118 +22,104 @@
#ifndef QT_NO_ACCESSIBILITY #ifndef QT_NO_ACCESSIBILITY
#include <libdolphin_export.h>
#include <QtCore/qpointer.h> #include <QtCore/qpointer.h>
#include <QtGui/qaccessible.h> #include <QtGui/qaccessible.h>
#include <QtGui/qaccessible2.h>
#include <QtGui/qaccessiblewidget.h>
#include <QtGui/qaccessibleobject.h> #include <QtGui/qaccessibleobject.h>
#include <QtWidgets/qaccessiblewidget.h>
class KItemListView; class KItemListView;
class KItemListContainer; class KItemListContainer;
class KItemListViewAccessible: public QAccessibleTable2Interface, public QAccessibleObjectEx class LIBDOLPHINPRIVATE_EXPORT KItemListViewAccessible: public QAccessibleObject, public QAccessibleTableInterface
{ {
Q_ACCESSIBLE_OBJECT
public: public:
explicit KItemListViewAccessible(KItemListView* view); explicit KItemListViewAccessible(KItemListView* view);
~KItemListViewAccessible();
Role role(int child) const; void* interface_cast(QAccessible::InterfaceType type) Q_DECL_OVERRIDE;
State state(int child) const;
QString text(Text t, int child) const;
QRect rect(int child) const;
int childAt(int x, int y) const; QAccessible::Role role() const Q_DECL_OVERRIDE;
int childCount() const; QAccessible::State state() const Q_DECL_OVERRIDE;
int indexOfChild(const QAccessibleInterface*) const; QString text(QAccessible::Text t) const Q_DECL_OVERRIDE;
QRect rect() const Q_DECL_OVERRIDE;
int navigate(RelationFlag relation, int index, QAccessibleInterface** interface) const; QAccessibleInterface* child(int index) const Q_DECL_OVERRIDE;
Relation relationTo(int child, const QAccessibleInterface* other, int otherChild) const; int childCount() const Q_DECL_OVERRIDE;
int indexOfChild(const QAccessibleInterface*) const Q_DECL_OVERRIDE;
QAccessibleInterface* childAt(int x, int y) const Q_DECL_OVERRIDE;
QAccessibleInterface* parent() const Q_DECL_OVERRIDE;
#ifndef QT_NO_ACTION // Table interface
int userActionCount(int child) const; virtual QAccessibleInterface* cellAt(int row, int column) const Q_DECL_OVERRIDE;
QString actionText(int action, Text t, int child) const; virtual QAccessibleInterface* caption() const Q_DECL_OVERRIDE;
bool doAction(int action, int child, const QVariantList& params); virtual QAccessibleInterface* summary() const Q_DECL_OVERRIDE;
#endif virtual QString columnDescription(int column) const Q_DECL_OVERRIDE;
QVariant invokeMethodEx(Method, int, const QVariantList&); virtual QString rowDescription(int row) const Q_DECL_OVERRIDE;
virtual int columnCount() const Q_DECL_OVERRIDE;
// Table2 interface virtual int rowCount() const Q_DECL_OVERRIDE;
virtual QAccessibleTable2CellInterface* cellAt(int row, int column) const;
virtual QAccessibleInterface* caption() const;
virtual QAccessibleInterface* summary() const;
virtual QString columnDescription(int column) const;
virtual QString rowDescription(int row) const;
virtual int columnCount() const;
virtual int rowCount() const;
virtual QAccessible2::TableModelChange modelChange() const;
virtual void rowsInserted(const QModelIndex&, int, int) {}
virtual void rowsRemoved(const QModelIndex&, int, int) {}
virtual void columnsInserted(const QModelIndex&, int, int) {}
virtual void columnsRemoved(const QModelIndex&, int, int) {}
virtual void rowsMoved(const QModelIndex&, int, int, const QModelIndex&, int) {}
virtual void columnsMoved(const QModelIndex&, int, int, const QModelIndex&, int) {}
// Selection // Selection
virtual int selectedCellCount() const; virtual int selectedCellCount() const Q_DECL_OVERRIDE;
virtual int selectedColumnCount() const; virtual int selectedColumnCount() const Q_DECL_OVERRIDE;
virtual int selectedRowCount() const; virtual int selectedRowCount() const Q_DECL_OVERRIDE;
virtual QList<QAccessibleTable2CellInterface*> selectedCells() const; virtual QList<QAccessibleInterface*> selectedCells() const Q_DECL_OVERRIDE;
virtual QList<int> selectedColumns() const; virtual QList<int> selectedColumns() const Q_DECL_OVERRIDE;
virtual QList<int> selectedRows() const; virtual QList<int> selectedRows() const Q_DECL_OVERRIDE;
virtual bool isColumnSelected(int column) const; virtual bool isColumnSelected(int column) const Q_DECL_OVERRIDE;
virtual bool isRowSelected(int row) const; virtual bool isRowSelected(int row) const Q_DECL_OVERRIDE;
virtual bool selectRow(int row); virtual bool selectRow(int row) Q_DECL_OVERRIDE;
virtual bool selectColumn(int column); virtual bool selectColumn(int column) Q_DECL_OVERRIDE;
virtual bool unselectRow(int row); virtual bool unselectRow(int row) Q_DECL_OVERRIDE;
virtual bool unselectColumn(int column); virtual bool unselectColumn(int column) Q_DECL_OVERRIDE;
virtual void modelChange(QAccessibleTableModelChangeEvent*) Q_DECL_OVERRIDE;
KItemListView* view() const; KItemListView* view() const;
protected: protected:
virtual void modelReset(); virtual void modelReset();
/** /**
* Create an QAccessibleTable2CellInterface representing the table * Create an QAccessibleTableCellInterface representing the table
* cell at the @index. Index is 0-based. * cell at the @index. Index is 0-based.
*/ */
inline QAccessibleTable2CellInterface* cell(int index) const; inline QAccessibleInterface* cell(int index) const;
inline QAccessible::Role cellRole() const;
private:
mutable QVector<QAccessibleInterface*> m_cells;
}; };
class KItemListAccessibleCell: public QAccessibleTable2CellInterface class LIBDOLPHINPRIVATE_EXPORT KItemListAccessibleCell: public QAccessibleInterface, public QAccessibleTableCellInterface
{ {
public: public:
KItemListAccessibleCell(KItemListView* view, int m_index); KItemListAccessibleCell(KItemListView* view, int m_index);
QObject* object() const; void* interface_cast(QAccessible::InterfaceType type) Q_DECL_OVERRIDE;
Role role(int) const; QObject* object() const Q_DECL_OVERRIDE;
State state(int) const; bool isValid() const Q_DECL_OVERRIDE;
QRect rect(int) const; QAccessible::Role role() const Q_DECL_OVERRIDE;
bool isValid() const; QAccessible::State state() const Q_DECL_OVERRIDE;
int childAt(int, int) const; QRect rect() const Q_DECL_OVERRIDE;
int childCount() const; QString text(QAccessible::Text t) const Q_DECL_OVERRIDE;
int indexOfChild(const QAccessibleInterface*) const; void setText(QAccessible::Text t, const QString& text) Q_DECL_OVERRIDE;
QString text(Text t, int child) const;
void setText(Text t, int child, const QString& text); QAccessibleInterface* child(int index) const Q_DECL_OVERRIDE;
int navigate(RelationFlag relation, int m_index, QAccessibleInterface** interface) const; int childCount() const Q_DECL_OVERRIDE;
Relation relationTo(int child, const QAccessibleInterface* other, int otherChild) const; QAccessibleInterface* childAt(int x, int y) const Q_DECL_OVERRIDE;
int indexOfChild(const QAccessibleInterface*) const Q_DECL_OVERRIDE;
QAccessibleInterface* parent() const Q_DECL_OVERRIDE;
bool isExpandable() const; bool isExpandable() const;
#ifndef QT_NO_ACTION
int userActionCount(int child) const;
QString actionText(int action, Text t, int child) const;
bool doAction(int action, int child, const QVariantList& params);
#endif
// Cell Interface // Cell Interface
virtual int columnExtent() const; virtual int columnExtent() const Q_DECL_OVERRIDE;
virtual QList<QAccessibleInterface*> columnHeaderCells() const; virtual QList<QAccessibleInterface*> columnHeaderCells() const Q_DECL_OVERRIDE;
virtual int columnIndex() const; virtual int columnIndex() const Q_DECL_OVERRIDE;
virtual int rowExtent() const; virtual int rowExtent() const Q_DECL_OVERRIDE;
virtual QList<QAccessibleInterface*> rowHeaderCells() const; virtual QList<QAccessibleInterface*> rowHeaderCells() const Q_DECL_OVERRIDE;
virtual int rowIndex() const; virtual int rowIndex() const Q_DECL_OVERRIDE;
virtual bool isSelected() const; virtual bool isSelected() const Q_DECL_OVERRIDE;
virtual void rowColumnExtents(int* row, int* column, int* rowExtents, int* columnExtents, bool* selected) const; virtual QAccessibleInterface* table() const Q_DECL_OVERRIDE;
virtual QAccessibleTable2Interface* table() const;
inline int index() const; inline int index() const;
@ -142,17 +128,15 @@ private:
int m_index; int m_index;
}; };
class KItemListContainerAccessible : public QAccessibleWidgetEx class LIBDOLPHINPRIVATE_EXPORT KItemListContainerAccessible : public QAccessibleWidget
{ {
Q_ACCESSIBLE_OBJECT
public: public:
explicit KItemListContainerAccessible(KItemListContainer* container); explicit KItemListContainerAccessible(KItemListContainer* container);
virtual ~KItemListContainerAccessible(); virtual ~KItemListContainerAccessible();
int childCount() const; QAccessibleInterface* child(int index) const Q_DECL_OVERRIDE;
int indexOfChild(const QAccessibleInterface* child) const; int childCount() const Q_DECL_OVERRIDE;
int navigate(RelationFlag relation, int entry, QAccessibleInterface** target) const; int indexOfChild(const QAccessibleInterface* child) const Q_DECL_OVERRIDE;
private: private:
const KItemListContainer* container() const; const KItemListContainer* container() const;