From cd1d45c831458f96904c12b2803c3b8fc29f17f2 Mon Sep 17 00:00:00 2001 From: Amandeep Singh Date: Mon, 6 Aug 2012 17:40:30 +0530 Subject: Adding the Accessibility classes --- src/CMakeLists.txt | 1 + src/kitemviews/kitemlistcontainer.cpp | 14 + src/kitemviews/kitemlistview.cpp | 14 + src/kitemviews/kitemlistview.h | 8 + src/kitemviews/kitemlistviewaccessible.cpp | 658 +++++++++++++++++++++++++ src/kitemviews/kitemlistviewaccessible.h | 187 +++++++ src/kitemviews/private/kitemlistviewlayouter.h | 5 + src/tests/CMakeLists.txt | 2 + 8 files changed, 889 insertions(+) create mode 100644 src/kitemviews/kitemlistviewaccessible.cpp create mode 100644 src/kitemviews/kitemlistviewaccessible.h (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index afc190f83..1a0460e87 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -29,6 +29,7 @@ set(dolphinprivate_LIB_SRCS kitemviews/kitemlistselectionmanager.cpp kitemviews/kitemliststyleoption.cpp kitemviews/kitemlistview.cpp + kitemviews/kitemlistviewaccessible.cpp kitemviews/kitemlistwidget.cpp kitemviews/kitemmodelbase.cpp kitemviews/kstandarditem.cpp diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp index 5500851c8..6e2540260 100644 --- a/src/kitemviews/kitemlistcontainer.cpp +++ b/src/kitemviews/kitemlistcontainer.cpp @@ -38,6 +38,8 @@ #include +#include "kitemlistviewaccessible.h" + /** * Replaces the default viewport of KItemListContainer by a * non-scrollable viewport. The scrolling is done in an optimized @@ -67,6 +69,14 @@ void KItemListContainerViewport::wheelEvent(QWheelEvent* event) event->ignore(); } +QAccessibleInterface* accessibleContainerFactory(const QString &key, QObject *object) +{ + Q_UNUSED(key) + if (KItemListView *view = qobject_cast(object)) + return new KItemListViewAccessible(view); + return 0; +} + KItemListContainer::KItemListContainer(KItemListController* controller, QWidget* parent) : QAbstractScrollArea(parent), m_controller(controller), @@ -93,6 +103,8 @@ KItemListContainer::KItemListContainer(KItemListController* controller, QWidget* this, SLOT(slotModelChanged(KItemModelBase*,KItemModelBase*))); connect(controller, SIGNAL(viewChanged(KItemListView*,KItemListView*)), this, SLOT(slotViewChanged(KItemListView*,KItemListView*))); + + QAccessible::installFactory(accessibleContainerFactory); } KItemListContainer::~KItemListContainer() @@ -101,6 +113,8 @@ KItemListContainer::~KItemListContainer() // the QGraphicsScene might get deleted before the view. delete m_controller; m_controller = 0; + + QAccessible::removeFactory(accessibleContainerFactory); } KItemListController* KItemListContainer::controller() const diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index 72b3fd8fc..11dad5209 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -43,6 +43,8 @@ #include #include +#include "kitemlistviewaccessible.h" + namespace { // Time in ms until reaching the autoscroll margin triggers // an initial autoscrolling @@ -52,6 +54,14 @@ namespace { const int RepeatingAutoScrollDelay = 1000 / 60; } +QAccessibleInterface* accessibleViewFactory(const QString &key, QObject *object) +{ + Q_UNUSED(key) + if (KItemListView *view = qobject_cast(object)) + return new KItemListViewAccessible(view); + return 0; +} + KItemListView::KItemListView(QGraphicsWidget* parent) : QGraphicsWidget(parent), m_enabledSelectionToggles(false), @@ -110,6 +120,8 @@ KItemListView::KItemListView(QGraphicsWidget* parent) : m_headerWidget->setVisible(false); m_header = new KItemListHeader(this); + + QAccessible::installFactory(accessibleViewFactory); } KItemListView::~KItemListView() @@ -125,6 +137,8 @@ KItemListView::~KItemListView() delete m_sizeHintResolver; m_sizeHintResolver = 0; + + QAccessible::removeFactory(accessibleViewFactory); } void KItemListView::setScrollOffset(qreal offset) diff --git a/src/kitemviews/kitemlistview.h b/src/kitemviews/kitemlistview.h index 5723b9aaa..d4602d729 100644 --- a/src/kitemviews/kitemlistview.h +++ b/src/kitemviews/kitemlistview.h @@ -275,6 +275,14 @@ public: */ virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0); + /** + * @return The Layouter for the view + */ + inline KItemListViewLayouter *layouter() const + { + return m_layouter; + } + signals: void scrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous); void scrollOffsetChanged(qreal current, qreal previous); diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp new file mode 100644 index 000000000..fc7cb7bfe --- /dev/null +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -0,0 +1,658 @@ +#include "kitemlistviewaccessible.h" +#include "kitemlistcontroller.h" +#include "kitemlistselectionmanager.h" +#include "private/kitemlistviewlayouter.h" + +#include +#include +#include + +#ifndef QT_NO_ACCESSIBILITY + +#ifndef QT_NO_ITEMVIEWS +/* +Implementation of the IAccessible2 table2 interface. Much simpler than +the other table interfaces since there is only the main table and cells: + +TABLE/LIST/TREE + |- HEADER CELL + |- CELL + |- CELL + ... +*/ + +KItemListView *KItemListViewAccessible::view() const +{ + return qobject_cast(object()); +} + +KItemListViewAccessible::KItemListViewAccessible(KItemListView *view_) + : QAccessibleObjectEx(view_) +{ + Q_ASSERT(view()); + + /*if (qobject_cast(view())) { + m_role = QAccessible::Table; + } else if (qobject_cast(view())) { + m_role = QAccessible::Tree; + } else if (qobject_cast(view())) { + m_role = QAccessible::List; + } else { + // is this our best guess? + m_role = QAccessible::Table; + }*/ +} + +KItemListViewAccessible::~KItemListViewAccessible() +{ +} + +void KItemListViewAccessible::modelReset() +{} + +QAccessibleTable2CellInterface *KItemListViewAccessible::cell(int index) const +{ + if (index > 0) + return new KItemListWidgetAccessible(view(), index); + return 0; +} + +QAccessibleTable2CellInterface *KItemListViewAccessible::cellAt(int row, int column) const +{ + /*Q_ASSERT(role(0) != QAccessible::Tree); + QModelIndex index = view()->model()->index(row, column); + //Q_ASSERT(index.isValid()); + if (!index.isValid()) { + qWarning() << "QAccessibleTable2::cellAt: invalid index: " << index << " for " << view(); + return 0; + } + return cell(index);*/ + Q_UNUSED(row) + Q_UNUSED(column) + return cell(1); + +} + +QAccessibleInterface *KItemListViewAccessible::caption() const +{ + return 0; +} + +QString KItemListViewAccessible::columnDescription(int) const +{ + return "No Column Description"; +} + +int KItemListViewAccessible::columnCount() const +{ + return view()->layouter()->columnCount(); +} + +int KItemListViewAccessible::rowCount() const +{ + int itemCount = view()->model()->count(); + int rowCount = itemCount / columnCount(); + if (itemCount % rowCount) + ++rowCount; + return rowCount; +} + +int KItemListViewAccessible::selectedCellCount() const +{ + return view()->controller()->selectionManager()->selectedItems().size(); +} + +int KItemListViewAccessible::selectedColumnCount() const +{ + return 0; +} + +int KItemListViewAccessible::selectedRowCount() const +{ + return 0; +} + +QString KItemListViewAccessible::rowDescription(int) const +{ + return "No Row Description"; +} + +QList KItemListViewAccessible::selectedCells() const +{ + QList cells; + Q_FOREACH (int index, view()->controller()->selectionManager()->selectedItems()) { + cells.append(cell(index)); + } + return cells; +} + +QList KItemListViewAccessible::selectedColumns() const +{ + QList columns; + /*Q_FOREACH (const QModelIndex &index, view()->selectionModel()->selectedColumns()) { + columns.append(index.column()); + }*/ + return columns; +} + +QList KItemListViewAccessible::selectedRows() const +{ + QList rows; + /*Q_FOREACH (const QModelIndex &index, view()->selectionModel()->selectedRows()) { + rows.append(index.row()); + }*/ + return rows; +} + +QAccessibleInterface *KItemListViewAccessible::summary() const +{ + return 0; +} + +bool KItemListViewAccessible::isColumnSelected(int) const +{ + return false; //view()->selectionModel()->isColumnSelected(column, QModelIndex()); +} + +bool KItemListViewAccessible::isRowSelected(int) const +{ + return false; //view()->selectionModel()->isRowSelected(row, QModelIndex()); +} + +bool KItemListViewAccessible::selectRow(int) +{ + /*QModelIndex index = view()->model()->index(row, 0); + if (!index.isValid() || view()->selectionMode() & QAbstractItemView::NoSelection) + return false; + view()->selectionModel()->select(index, QItemSelectionModel::Select);*/ + return true; +} + +bool KItemListViewAccessible::selectColumn(int) +{ + /*QModelIndex index = view()->model()->index(0, column); + if (!index.isValid() || view()->selectionMode() & QAbstractItemView::NoSelection) + return false; + view()->selectionModel()->select(index, QItemSelectionModel::Select);*/ + return true; +} + +bool KItemListViewAccessible::unselectRow(int) +{ + /*QModelIndex index = view()->model()->index(row, 0); + if (!index.isValid() || view()->selectionMode() & QAbstractItemView::NoSelection) + return false; + view()->selectionModel()->select(index, QItemSelectionModel::Deselect);*/ + return true; +} + +bool KItemListViewAccessible::unselectColumn(int) +{ + /*QModelIndex index = view()->model()->index(0, column); + if (!index.isValid() || view()->selectionMode() & QAbstractItemView::NoSelection) + return false; + view()->selectionModel()->select(index, QItemSelectionModel::Columns & QItemSelectionModel::Deselect);*/ + return true; +} + +QAccessible2::TableModelChange KItemListViewAccessible::modelChange() const +{ + QAccessible2::TableModelChange change; + // FIXME + return change; +} + +QAccessible::Role KItemListViewAccessible::role(int child) const +{ + Q_ASSERT(child >= 0); + if (child > 0) + return QAccessible::Cell; + return QAccessible::Table; +} + +QAccessible::State KItemListViewAccessible::state(int child) const +{ + Q_ASSERT(child == 0); + return QAccessible::Normal | HasInvokeExtension; +} + +int KItemListViewAccessible::childAt(int x, int y) const +{ + QPointF point = QPointF(x,y); + return view()->itemAt(view()->mapFromScene(point)); +} + +int KItemListViewAccessible::childCount() const +{ + return rowCount() * columnCount(); +} + +int KItemListViewAccessible::indexOfChild(const QAccessibleInterface *iface) const +{ + /*Q_ASSERT(iface->role(0) != QAccessible::TreeItem); // should be handled by tree class + if (iface->role(0) == QAccessible::Cell || iface->role(0) == QAccessible::ListItem) { + const QAccessibleTable2Cell* cell = static_cast(iface); + return logicalIndex(cell->m_index); + } else if (iface->role(0) == QAccessible::ColumnHeader){ + const QAccessibleTable2HeaderCell* cell = static_cast(iface); + return cell->index + (verticalHeader() ? 1 : 0) + 1; + } else if (iface->role(0) == QAccessible::RowHeader){ + const QAccessibleTable2HeaderCell* cell = static_cast(iface); + return (cell->index+1) * (view()->model()->rowCount()+1) + 1; + } else if (iface->role(0) == QAccessible::Pane) { + return 1; // corner button + } else { + qWarning() << "WARNING QAccessibleTable2::indexOfChild Fix my children..." + << iface->role(0) << iface->text(QAccessible::Name, 0); + } + // FIXME: we are in denial of our children. this should stop. + return -1;*/ + + const KItemListWidgetAccessible *widget = static_cast(iface); + return widget->getIndex(); +} + +QString KItemListViewAccessible::text(Text t, int child) const +{ + Q_ASSERT(child == 0); + if (t == QAccessible::Description) + return "List of files present in the current directory"; + return "File List"; +} + +QRect KItemListViewAccessible::rect(int child) const +{ + Q_UNUSED(child) + if (!view()->isVisible()) + return QRect(); + return view()->geometry().toRect(); +} + +int KItemListViewAccessible::navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const +{ + *iface = 0; + switch (relation) { + /*case Ancestor: { + if (index == 1 && view()->parent()) { + *iface = QAccessible::queryAccessibleInterface(view()->parent()); + if (*iface) + return 0; + } + break; + }*/ + case QAccessible::Child: { + Q_ASSERT(index > 0); + *iface = cell(index); + if (*iface) { + return 0; + } + break; + } + default: + break; + } + 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 + +KItemListWidgetAccessible::KItemListWidgetAccessible(KItemListView *view_, int index_) + : /* QAccessibleSimpleEditableTextInterface(this), */ view(view_), index(index_) +{ + Q_ASSERT(index_>0); +} + +int KItemListWidgetAccessible::columnExtent() const { return 1; } +int KItemListWidgetAccessible::rowExtent() const { return 1; } + +QList KItemListWidgetAccessible::rowHeaderCells() const +{ + QList headerCell; + /*if (verticalHeader()) { + headerCell.append(new QAccessibleTable2HeaderCell(view, m_index.row(), Qt::Vertical)); + }*/ + return headerCell; +} + +QList KItemListWidgetAccessible::columnHeaderCells() const +{ + QList headerCell; + /*if (horizontalHeader()) { + headerCell.append(new QAccessibleTable2HeaderCell(view, m_index.column(), Qt::Horizontal)); + }*/ + return headerCell; +} + +int KItemListWidgetAccessible::columnIndex() const +{ + return view->layouter()->itemColumn(index); +} + +int KItemListWidgetAccessible::rowIndex() const +{ + /*if (role(0) == QAccessible::TreeItem) { + const QTreeView *treeView = qobject_cast(view); + Q_ASSERT(treeView); + int row = treeView->d_func()->viewIndex(m_index); + return row; + }*/ + return view->layouter()->itemRow(index); +} + +//Done +bool KItemListWidgetAccessible::isSelected() const +{ + return widget->isSelected(); +} + +void KItemListWidgetAccessible::rowColumnExtents(int *row, int *column, int *rowExtents, int *columnExtents, bool *selected) const +{ + KItemListViewLayouter* layouter = view->layouter(); + *row = layouter->itemRow(index); + *column = layouter->itemColumn(index); + *rowExtents = 1; + *columnExtents = 1; + *selected = isSelected(); +} + +QAccessibleTable2Interface* KItemListWidgetAccessible::table() const +{ + return QAccessible::queryAccessibleInterface(view)->table2Interface(); +} + +QAccessible::Role KItemListWidgetAccessible::role(int child) const +{ + Q_ASSERT(child == 0); + return QAccessible::Cell; +} + +QAccessible::State KItemListWidgetAccessible::state(int child) const +{ + Q_ASSERT(child == 0); + QAccessible::State st = Normal; + + //QRect globalRect = view->rect(); + //globalRect.translate(view->mapToGlobal(QPoint(0,0))); + //if (!globalRect.intersects(rect(0))) + // st |= Invisible; + + if (widget->isSelected()) + st |= Selected; + if (view->controller()->selectionManager()->currentItem() == index) + st |= Focused; + + //if (m_index.model()->data(m_index, Qt::CheckStateRole).toInt() == Qt::Checked) + // st |= Checked; + //if (flags & Qt::ItemIsSelectable) { + st |= Selectable; + st |= Focusable; + if (view->controller()->selectionBehavior() == KItemListController::MultiSelection) + st |= MultiSelectable; + + //if (view->selectionMode() == QAbstractItemView::ExtendedSelection) + //st |= ExtSelectable; + //} + //if (m_role == QAccessible::TreeItem) { + // const QTreeView *treeView = qobject_cast(view); + // if (treeView->isExpanded(m_index)) + // st |= Expanded; + //} + + st |= HasInvokeExtension; + return st; +} + +//Done +bool KItemListWidgetAccessible::isExpandable() const +{ + return false; //view->model()->hasChildren(m_index); +} + +//Done +QRect KItemListWidgetAccessible::rect(int child) const +{ + Q_ASSERT(child == 0); + + //QRect r; + //r = view->visualRect(m_index); + + //if (!r.isNull()) + // r.translate(view->viewport()->mapTo(view, QPoint(0,0))); + // r.translate(view->mapToGlobal(QPoint(0, 0))); + return widget->textRect().toRect(); +} + +//Done +QString KItemListWidgetAccessible::text(Text t, int child) const +{ + Q_ASSERT(child == 0); + + QHash data = widget->data(); + switch (t) { + case QAccessible::Value: + case QAccessible::Name: + return data["text"].toString(); + case QAccessible::Description: + return data["text"].toString() + " : " + data["group"].toString(); + default: + break; + } + return ""; +} + +//Done +void KItemListWidgetAccessible::setText(QAccessible::Text /*t*/, int child, const QString &text) +{ + Q_ASSERT(child == 0); + (widget->data())["text"]=QVariant(text); +} + +//Done +bool KItemListWidgetAccessible::isValid() const +{ + if (index <= 0) { + qDebug() << "Interface is not valid"; + } + + return index > 0; +} + +int KItemListWidgetAccessible::navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const +{ + if (relation == Ancestor && index == 1) { + //if (m_role == QAccessible::TreeItem) { + // *iface = new QAccessibleTree(view); + //} else { + *iface = new KItemListViewAccessible(view); + return 0; + } + + *iface = 0; + if (!view) + return -1; + + switch (relation) { + + case Child: { + return -1; + } + case Sibling: + if (index > 0) { + QAccessibleInterface *parent = queryAccessibleInterface(view); + int ret = parent->navigate(QAccessible::Child, index, iface); + delete parent; + if (*iface) + return ret; + } + return -1; + +// From table1 implementation: +// case Up: +// case Down: +// case Left: +// case Right: { +// // This is in the "not so nice" category. In order to find out which item +// // is geometrically around, we have to set the current index, navigate +// // and restore the index as well as the old selection +// view()->setUpdatesEnabled(false); +// const QModelIndex oldIdx = view()->currentIndex(); +// QList kids = children(); +// const QModelIndex currentIndex = index ? kids.at(index - 1) : QModelIndex(row); +// const QItemSelection oldSelection = view()->selectionModel()->selection(); +// view()->setCurrentIndex(currentIndex); +// const QModelIndex idx = view()->moveCursor(toCursorAction(relation), Qt::NoModifier); +// view()->setCurrentIndex(oldIdx); +// view()->selectionModel()->select(oldSelection, QItemSelectionModel::ClearAndSelect); +// view()->setUpdatesEnabled(true); +// if (!idx.isValid()) +// return -1; + +// if (idx.parent() != row.parent() || idx.row() != row.row()) +// *iface = cell(idx); +// return index ? kids.indexOf(idx) + 1 : 0; } + default: + break; + } + + return -1; +} + +QAccessible::Relation KItemListWidgetAccessible::relationTo(int child, const QAccessibleInterface *, int otherChild) const +{ + Q_ASSERT(child == 0); + Q_ASSERT(otherChild == 0); + /* we only check for parent-child relationships in trees + if (m_role == QAccessible::TreeItem && other->role(0) == QAccessible::TreeItem) { + QModelIndex otherIndex = static_cast(other)->m_index; + // is the other our parent? + if (otherIndex.parent() == m_index) + return QAccessible::Ancestor; + // are we the other's child? + if (m_index.parent() == otherIndex) + return QAccessible::Child; + }*/ + return QAccessible::Unrelated; +} + +#ifndef QT_NO_ACTION +int KItemListWidgetAccessible::userActionCount(int) const +{ + return 0; +} + +QString KItemListWidgetAccessible::actionText(int, Text, int) const +{ + return QString(); +} + +bool KItemListWidgetAccessible::doAction(int, int, const QVariantList &) +{ + return false; +} + +#endif + +KItemListContainerAccessible::KItemListContainerAccessible(KItemListContainer *container) + : QAccessibleWidgetEx(container) + , m_container(container) +{} + +KItemListContainerAccessible::~KItemListContainerAccessible () +{} + +int KItemListContainerAccessible::childCount () const +{ + return 1; +} + +int KItemListContainerAccessible::indexOfChild ( const QAccessibleInterface * child ) const +{ + if(child == QAccessible::queryAccessibleInterface(m_container->controller()->view())) + return 1; + return -1; +} + +bool KItemListContainerAccessible::isValid () const +{ + return true; +} + +int KItemListContainerAccessible::navigate ( QAccessible::RelationFlag relation, int , QAccessibleInterface ** target ) const +{ + *target=0; + switch(relation){ + case QAccessible::Child : + *target = new KItemListViewAccessible(m_container->controller()->view()); + return 1; + case QAccessible::Ancestor : + //FIXME + *target = 0; + return -1; + case QAccessible::Self : + *target = static_cast(const_cast(this)); + return 0; + default: + *target=0; + } + return -1; +} + +QObject *KItemListContainerAccessible::object() const +{ + return m_container; +} + +QRect KItemListContainerAccessible::rect ( int child ) const +{ + if(child){ + KItemListViewAccessible *iface = static_cast(QAccessible::queryAccessibleInterface(m_container->controller()->view())); + return iface->rect(0); + } + return m_container->frameRect(); +} + +QAccessible::Relation KItemListContainerAccessible::relationTo ( int , const QAccessibleInterface *, int ) const +{ + return QAccessible::Unrelated; +} + +QAccessible::Role KItemListContainerAccessible::role ( int child ) const +{ + if(child) + return QAccessible::Table; + return QAccessible::Pane; +} + +QAccessible::State KItemListContainerAccessible::state ( int child ) const +{ + return Normal | HasInvokeExtension; +} + +QString KItemListContainerAccessible::text ( QAccessible::Text, int ) const +{ + return ""; +} + +#endif // QT_NO_ITEMVIEWS + +#endif // QT_NO_ACCESSIBILITY diff --git a/src/kitemviews/kitemlistviewaccessible.h b/src/kitemviews/kitemlistviewaccessible.h new file mode 100644 index 000000000..e34acb620 --- /dev/null +++ b/src/kitemviews/kitemlistviewaccessible.h @@ -0,0 +1,187 @@ +#ifndef ACCESSIBLE_ITEMVIEWS_H +#define ACCESSIBLE_ITEMVIEWS_H + +#include "QtCore/qpointer.h" +#include +#include +#include +#include +#include + +#include "kitemlistview.h" +#include "kitemlistcontainer.h" + +#ifndef QT_NO_ACCESSIBILITY + +#ifndef QT_NO_ITEMVIEWS + +class KItemListWidgetAccessible; + +class KItemListViewAccessible: public QAccessibleTable2Interface, public QAccessibleObjectEx +{ + Q_ACCESSIBLE_OBJECT +public: + explicit KItemListViewAccessible(KItemListView *view); + + virtual ~KItemListViewAccessible(); + + Role role(int child) const; + State state(int child) const; + QString text(Text t, int child) const; + QRect rect(int child) const; + + int childAt(int x, int y) const; + int childCount() const; + int indexOfChild(const QAccessibleInterface *) const; + + int navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const; + Relation relationTo(int child, const QAccessibleInterface *other, int otherChild) 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 ¶ms); +#endif + QVariant invokeMethodEx(Method, int, const QVariantList &) { return QVariant(); } + + // table2 interface + 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; + + //Table + 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 + virtual int selectedCellCount() const; + virtual int selectedColumnCount() const; + virtual int selectedRowCount() const; + virtual QList selectedCells() const; + virtual QList selectedColumns() const; + virtual QList selectedRows() const; + virtual bool isColumnSelected(int column) const; + virtual bool isRowSelected(int row) const; + virtual bool selectRow(int row); + virtual bool selectColumn(int column); + virtual bool unselectRow(int row); + virtual bool unselectColumn(int column); + + KItemListView *view() const; + +protected: + virtual void modelReset(); + +protected: + inline QAccessibleTable2CellInterface *cell(int index) const; + inline QAccessible::Role cellRole() const { + /* + switch (m_role) { + case QAccessible::List: + return QAccessible::ListItem; + case QAccessible::Table: + return QAccessible::Cell; + case QAccessible::Tree: + return QAccessible::TreeItem; + default: + Q_ASSERT(0); + } + return QAccessible::NoRole; + */ + return QAccessible::Cell; + } + +private: + //QAccessible::Role m_role; + // the child index for a model index + //inline int logicalIndex(const QModelIndex &index) const; + // the model index from the child index + //QAccessibleInterface *childFromLogical(int logicalIndex) const; +}; + +class KItemListWidgetAccessible: public QAccessibleTable2CellInterface +{ +public: + KItemListWidgetAccessible(KItemListView *view, int m_index); + + QObject *object() const { return 0; } + Role role(int child) const; + State state(int child) const; + QRect rect(int child) const; + bool isValid() const; + + int childAt(int, int) const { return 0; } + int childCount() const { return 0; } + int indexOfChild(const QAccessibleInterface *) const { return -1; } + + QString text(Text t, int child) const; + void setText(Text t, int child, const QString &text); + + int navigate(RelationFlag relation, int m_index, QAccessibleInterface **iface) const; + Relation relationTo(int child, const QAccessibleInterface *other, int otherChild) 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 ¶ms); +#endif + + // cell interface + virtual int columnExtent() const; + virtual QList columnHeaderCells() const; + virtual int columnIndex() const; + virtual int rowExtent() const; + virtual QList rowHeaderCells() const; + virtual int rowIndex() const; + virtual bool isSelected() const; + virtual void rowColumnExtents(int *row, int *column, int *rowExtents, int *columnExtents, bool *selected) const; + virtual QAccessibleTable2Interface* table() const; + + inline int getIndex() const + { return index; } + +private: + QPointer view; + int index; + KItemListWidget *widget; + +friend class KItemListViewAccessible; +//friend class QAccessibleTree; +}; + +class KItemListContainerAccessible : public QAccessibleWidgetEx +{ + Q_ACCESSIBLE_OBJECT +public: + explicit KItemListContainerAccessible(KItemListContainer*); + virtual ~KItemListContainerAccessible (); + int childCount () const ; + int indexOfChild ( const QAccessibleInterface * child ) const ; + bool isValid () const ; + int navigate ( RelationFlag relation, int entry, QAccessibleInterface ** target ) const ; + QObject * object () const ; + QRect rect ( int child ) const ; + QAccessible::Relation relationTo ( int child, const QAccessibleInterface * other, int otherChild ) const ; + QAccessible::Role role ( int child ) const ; + QAccessible::State state ( int child ) const ; + QString text ( QAccessible::Text, int ) const ; +private: + KItemListContainer *m_container ; +}; + +#endif // QT_NO_ITEMVIEWS + +#endif // QT_NO_ACCESSIBILITY + +#endif // ACCESSIBLE_ITEMVIEWS_H diff --git a/src/kitemviews/private/kitemlistviewlayouter.h b/src/kitemviews/private/kitemlistviewlayouter.h index da5bd1d7d..5ca73e1ad 100644 --- a/src/kitemviews/private/kitemlistviewlayouter.h +++ b/src/kitemviews/private/kitemlistviewlayouter.h @@ -164,6 +164,11 @@ public: */ void markAsDirty(); + inline int columnCount() const + { + return m_columnCount; + } + #ifndef QT_NO_DEBUG /** * @return True if the layouter has been marked as dirty and hence has diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index 3f906d187..e1202ec12 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -20,6 +20,7 @@ set(kitemlistcontrollertest_SRCS ../kitemviews/kfileitemlistview.cpp ../kitemviews/kitemmodelbase.cpp ../kitemviews/kitemlistview.cpp + ../kitemviews/kitemlistviewaccessible.cpp ) kde4_add_unit_test(kitemlistcontrollertest TEST ${kitemlistcontrollertest_SRCS}) target_link_libraries(kitemlistcontrollertest dolphinprivate ${KDE4_KIO_LIBS} ${QT_QTTEST_LIBRARY}) @@ -32,6 +33,7 @@ set(kfileitemlistviewtest_SRCS ../kitemviews/kfileitemlistview.cpp ../kitemviews/kitemmodelbase.cpp ../kitemviews/kitemlistview.cpp + ../kitemviews/kitemlistviewaccessible.cpp ) kde4_add_unit_test(kfileitemlistviewtest TEST ${kfileitemlistviewtest_SRCS}) target_link_libraries(kfileitemlistviewtest dolphinprivate ${KDE4_KIO_LIBS} ${QT_QTTEST_LIBRARY}) -- cgit v1.3 From af344f2eec864ebc2ea9287684194c938acb47de Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 6 Aug 2012 17:08:18 +0200 Subject: Instantiate KItemListContainerAccessible when needed. --- src/kitemviews/kitemlistcontainer.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp index 6e2540260..9b0c39667 100644 --- a/src/kitemviews/kitemlistcontainer.cpp +++ b/src/kitemviews/kitemlistcontainer.cpp @@ -72,6 +72,8 @@ void KItemListContainerViewport::wheelEvent(QWheelEvent* event) QAccessibleInterface* accessibleContainerFactory(const QString &key, QObject *object) { Q_UNUSED(key) + if (KItemListContainer*view = qobject_cast(object)) + return new KItemListContainerAccessible(view); if (KItemListView *view = qobject_cast(object)) return new KItemListViewAccessible(view); return 0; -- cgit v1.3 From ac2661d6cae119f04de3ea75fae77bd8d96d162d Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 6 Aug 2012 17:22:37 +0200 Subject: Fix parent navigation for KItemListContainerAccessible. --- src/kitemviews/kitemlistviewaccessible.cpp | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index fc7cb7bfe..11409320b 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -597,24 +597,13 @@ bool KItemListContainerAccessible::isValid () const return true; } -int KItemListContainerAccessible::navigate ( QAccessible::RelationFlag relation, int , QAccessibleInterface ** target ) const -{ - *target=0; - switch(relation){ - case QAccessible::Child : - *target = new KItemListViewAccessible(m_container->controller()->view()); - return 1; - case QAccessible::Ancestor : - //FIXME - *target = 0; - return -1; - case QAccessible::Self : - *target = static_cast(const_cast(this)); - return 0; - default: - *target=0; +int KItemListContainerAccessible::navigate ( QAccessible::RelationFlag relation, int index, QAccessibleInterface ** target ) const +{ + if (relation == QAccessible::Child) { + *target = new KItemListViewAccessible(m_container->controller()->view()); + return 0; } - return -1; + return QAccessibleWidgetEx::navigate(relation, index, target); } QObject *KItemListContainerAccessible::object() const -- cgit v1.3 From 9211640f39d16a0757523b1f0e1974d75ce91ec8 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 6 Aug 2012 17:23:41 +0200 Subject: Use KDebug in favor of qdebug. --- src/kitemviews/kitemlistviewaccessible.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index 11409320b..de792681a 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -5,7 +5,7 @@ #include #include -#include +#include #ifndef QT_NO_ACCESSIBILITY @@ -471,7 +471,7 @@ void KItemListWidgetAccessible::setText(QAccessible::Text /*t*/, int child, cons bool KItemListWidgetAccessible::isValid() const { if (index <= 0) { - qDebug() << "Interface is not valid"; + kDebug() << "Interface is not valid"; } return index > 0; -- cgit v1.3 From cc7343815ade78e86d306cc70b425d8fe2318c98 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 6 Aug 2012 17:27:04 +0200 Subject: Remove unused function. And also bad use of "" instead of QString(). --- src/kitemviews/kitemlistviewaccessible.cpp | 6 +----- src/kitemviews/kitemlistviewaccessible.h | 1 - 2 files changed, 1 insertion(+), 6 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index de792681a..38c350b69 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -80,6 +80,7 @@ QAccessibleInterface *KItemListViewAccessible::caption() const QString KItemListViewAccessible::columnDescription(int) const { + // FIXME: no i18n return "No Column Description"; } @@ -637,11 +638,6 @@ QAccessible::State KItemListContainerAccessible::state ( int child ) const return Normal | HasInvokeExtension; } -QString KItemListContainerAccessible::text ( QAccessible::Text, int ) const -{ - return ""; -} - #endif // QT_NO_ITEMVIEWS #endif // QT_NO_ACCESSIBILITY diff --git a/src/kitemviews/kitemlistviewaccessible.h b/src/kitemviews/kitemlistviewaccessible.h index e34acb620..23809a032 100644 --- a/src/kitemviews/kitemlistviewaccessible.h +++ b/src/kitemviews/kitemlistviewaccessible.h @@ -175,7 +175,6 @@ public: QAccessible::Relation relationTo ( int child, const QAccessibleInterface * other, int otherChild ) const ; QAccessible::Role role ( int child ) const ; QAccessible::State state ( int child ) const ; - QString text ( QAccessible::Text, int ) const ; private: KItemListContainer *m_container ; }; -- cgit v1.3 From c34fa9b0253d334755ed4936263bf58f72fc9284 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 6 Aug 2012 17:35:27 +0200 Subject: Remove reimplementation of functions. The base class implementations are actually good and without some problems. Save one pointer's worth of memory by not having m_container. rect was returning a relative rectangle always. State was wrongly returning HasInvokeExtension which can lead to crashes. --- src/kitemviews/kitemlistviewaccessible.cpp | 41 ++---------------------------- src/kitemviews/kitemlistviewaccessible.h | 19 ++++++-------- 2 files changed, 10 insertions(+), 50 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index 38c350b69..7ec72dcf6 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -575,7 +575,6 @@ bool KItemListWidgetAccessible::doAction(int, int, const QVariantList &) KItemListContainerAccessible::KItemListContainerAccessible(KItemListContainer *container) : QAccessibleWidgetEx(container) - , m_container(container) {} KItemListContainerAccessible::~KItemListContainerAccessible () @@ -588,56 +587,20 @@ int KItemListContainerAccessible::childCount () const int KItemListContainerAccessible::indexOfChild ( const QAccessibleInterface * child ) const { - if(child == QAccessible::queryAccessibleInterface(m_container->controller()->view())) + if(child == QAccessible::queryAccessibleInterface(container()->controller()->view())) return 1; return -1; } -bool KItemListContainerAccessible::isValid () const -{ - return true; -} - int KItemListContainerAccessible::navigate ( QAccessible::RelationFlag relation, int index, QAccessibleInterface ** target ) const { if (relation == QAccessible::Child) { - *target = new KItemListViewAccessible(m_container->controller()->view()); + *target = new KItemListViewAccessible(container()->controller()->view()); return 0; } return QAccessibleWidgetEx::navigate(relation, index, target); } -QObject *KItemListContainerAccessible::object() const -{ - return m_container; -} - -QRect KItemListContainerAccessible::rect ( int child ) const -{ - if(child){ - KItemListViewAccessible *iface = static_cast(QAccessible::queryAccessibleInterface(m_container->controller()->view())); - return iface->rect(0); - } - return m_container->frameRect(); -} - -QAccessible::Relation KItemListContainerAccessible::relationTo ( int , const QAccessibleInterface *, int ) const -{ - return QAccessible::Unrelated; -} - -QAccessible::Role KItemListContainerAccessible::role ( int child ) const -{ - if(child) - return QAccessible::Table; - return QAccessible::Pane; -} - -QAccessible::State KItemListContainerAccessible::state ( int child ) const -{ - return Normal | HasInvokeExtension; -} - #endif // QT_NO_ITEMVIEWS #endif // QT_NO_ACCESSIBILITY diff --git a/src/kitemviews/kitemlistviewaccessible.h b/src/kitemviews/kitemlistviewaccessible.h index 23809a032..15391c601 100644 --- a/src/kitemviews/kitemlistviewaccessible.h +++ b/src/kitemviews/kitemlistviewaccessible.h @@ -165,18 +165,15 @@ class KItemListContainerAccessible : public QAccessibleWidgetEx Q_ACCESSIBLE_OBJECT public: explicit KItemListContainerAccessible(KItemListContainer*); - virtual ~KItemListContainerAccessible (); - int childCount () const ; - int indexOfChild ( const QAccessibleInterface * child ) const ; - bool isValid () const ; - int navigate ( RelationFlag relation, int entry, QAccessibleInterface ** target ) const ; - QObject * object () const ; - QRect rect ( int child ) const ; - QAccessible::Relation relationTo ( int child, const QAccessibleInterface * other, int otherChild ) const ; - QAccessible::Role role ( int child ) const ; - QAccessible::State state ( int child ) const ; + virtual ~KItemListContainerAccessible(); + int childCount () const; + int indexOfChild ( const QAccessibleInterface * child ) const; + int navigate ( RelationFlag relation, int entry, QAccessibleInterface ** target ) const; + private: - KItemListContainer *m_container ; + inline KItemListContainer *container() const { + return static_cast(object()); + } }; #endif // QT_NO_ITEMVIEWS -- cgit v1.3 From 0739a10a0cb2f8c69139c4a42c4dd7fa688ad5eb Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 6 Aug 2012 18:00:57 +0200 Subject: Add some fixmes, comment out broken rect() --- src/kitemviews/kitemlistviewaccessible.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index 7ec72dcf6..eec051b28 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -256,6 +256,7 @@ int KItemListViewAccessible::indexOfChild(const QAccessibleInterface *iface) con QString KItemListViewAccessible::text(Text t, int child) const { Q_ASSERT(child == 0); + // FIXME: I don't think this is needed, but if at all it needs i18n if (t == QAccessible::Description) return "List of files present in the current directory"; return "File List"; @@ -266,6 +267,8 @@ QRect KItemListViewAccessible::rect(int child) const Q_UNUSED(child) if (!view()->isVisible()) return QRect(); + + // FIXME: map to global return view()->geometry().toRect(); } @@ -432,7 +435,10 @@ bool KItemListWidgetAccessible::isExpandable() const //Done QRect KItemListWidgetAccessible::rect(int child) const { - Q_ASSERT(child == 0); + // Q_ASSERT(child == 0); + return QRect(); + + // FIXME //QRect r; //r = view->visualRect(m_index); @@ -440,7 +446,7 @@ QRect KItemListWidgetAccessible::rect(int child) const //if (!r.isNull()) // r.translate(view->viewport()->mapTo(view, QPoint(0,0))); // r.translate(view->mapToGlobal(QPoint(0, 0))); - return widget->textRect().toRect(); + //return widget->textRect().toRect(); } //Done -- cgit v1.3 From ce1adc8f09ae9e15c03532c4d7c535b47fdd81b2 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 6 Aug 2012 18:08:43 +0200 Subject: Remove some dubious code for now (crash less) --- src/kitemviews/kitemlistviewaccessible.cpp | 31 +++++++++++++++--------------- src/kitemviews/kitemlistviewaccessible.h | 3 +-- 2 files changed, 17 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index eec051b28..c348428fa 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -366,7 +366,9 @@ int KItemListWidgetAccessible::rowIndex() const //Done bool KItemListWidgetAccessible::isSelected() const { - return widget->isSelected(); + //return widget->isSelected(); + // FIXME + return false; } void KItemListWidgetAccessible::rowColumnExtents(int *row, int *column, int *rowExtents, int *columnExtents, bool *selected) const @@ -400,8 +402,8 @@ QAccessible::State KItemListWidgetAccessible::state(int child) const //if (!globalRect.intersects(rect(0))) // st |= Invisible; - if (widget->isSelected()) - st |= Selected; +// if (widget->isSelected()) +// st |= Selected; if (view->controller()->selectionManager()->currentItem() == index) st |= Focused; @@ -454,24 +456,23 @@ QString KItemListWidgetAccessible::text(Text t, int child) const { Q_ASSERT(child == 0); - QHash data = widget->data(); - switch (t) { - case QAccessible::Value: - case QAccessible::Name: - return data["text"].toString(); - case QAccessible::Description: - return data["text"].toString() + " : " + data["group"].toString(); - default: - break; - } - return ""; +// switch (t) { +// case QAccessible::Value: +// case QAccessible::Name: +// //return data["text"].toString(); +// case QAccessible::Description: +// //return data["text"].toString() + " : " + data["group"].toString(); +// default: +// break; +// } + return QString(); } //Done void KItemListWidgetAccessible::setText(QAccessible::Text /*t*/, int child, const QString &text) { Q_ASSERT(child == 0); - (widget->data())["text"]=QVariant(text); + // FIXME - is this even allowed on the KItemListWidget? } //Done diff --git a/src/kitemviews/kitemlistviewaccessible.h b/src/kitemviews/kitemlistviewaccessible.h index 15391c601..9e26821b9 100644 --- a/src/kitemviews/kitemlistviewaccessible.h +++ b/src/kitemviews/kitemlistviewaccessible.h @@ -152,9 +152,8 @@ public: { return index; } private: - QPointer view; + QPointer view; int index; - KItemListWidget *widget; friend class KItemListViewAccessible; //friend class QAccessibleTree; -- cgit v1.3 From 6eb2884db0df9bb709ecdce38c4b4146627a66d4 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 6 Aug 2012 18:32:58 +0200 Subject: Do not claim HasInvokeExtension. This leads to crashes since it implies that casting to QAccessible2Interface is valid. --- src/kitemviews/kitemlistviewaccessible.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index c348428fa..4ca5fda60 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -214,7 +214,7 @@ QAccessible::Role KItemListViewAccessible::role(int child) const QAccessible::State KItemListViewAccessible::state(int child) const { Q_ASSERT(child == 0); - return QAccessible::Normal | HasInvokeExtension; + return QAccessible::Normal; } int KItemListViewAccessible::childAt(int x, int y) const @@ -424,7 +424,6 @@ QAccessible::State KItemListWidgetAccessible::state(int child) const // st |= Expanded; //} - st |= HasInvokeExtension; return st; } -- cgit v1.3 From 9def70cf8bd1bb11cbecbd637b747b0fa6daf600 Mon Sep 17 00:00:00 2001 From: Amandeep Singh Date: Tue, 7 Aug 2012 19:42:50 +0530 Subject: Renaming the a11y classes and adding implementation --- src/kitemviews/kitemlistviewaccessible.cpp | 106 ++++++++++++++--------------- src/kitemviews/kitemlistviewaccessible.h | 9 +-- 2 files changed, 56 insertions(+), 59 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index 4ca5fda60..1d1974820 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -6,20 +6,11 @@ #include #include #include +#include #ifndef QT_NO_ACCESSIBILITY #ifndef QT_NO_ITEMVIEWS -/* -Implementation of the IAccessible2 table2 interface. Much simpler than -the other table interfaces since there is only the main table and cells: - -TABLE/LIST/TREE - |- HEADER CELL - |- CELL - |- CELL - ... -*/ KItemListView *KItemListViewAccessible::view() const { @@ -53,7 +44,7 @@ void KItemListViewAccessible::modelReset() QAccessibleTable2CellInterface *KItemListViewAccessible::cell(int index) const { if (index > 0) - return new KItemListWidgetAccessible(view(), index); + return new KItemListAccessibleCell(view(), index); return 0; } @@ -81,7 +72,7 @@ QAccessibleInterface *KItemListViewAccessible::caption() const QString KItemListViewAccessible::columnDescription(int) const { // FIXME: no i18n - return "No Column Description"; + return QObject::tr("No Column Description"); } int KItemListViewAccessible::columnCount() const @@ -249,7 +240,7 @@ int KItemListViewAccessible::indexOfChild(const QAccessibleInterface *iface) con // FIXME: we are in denial of our children. this should stop. return -1;*/ - const KItemListWidgetAccessible *widget = static_cast(iface); + const KItemListAccessibleCell *widget = static_cast(iface); return widget->getIndex(); } @@ -258,8 +249,8 @@ QString KItemListViewAccessible::text(Text t, int child) const Q_ASSERT(child == 0); // FIXME: I don't think this is needed, but if at all it needs i18n if (t == QAccessible::Description) - return "List of files present in the current directory"; - return "File List"; + return QObject::tr("List of files present in the current directory"); + return QObject::tr("File List"); } QRect KItemListViewAccessible::rect(int child) const @@ -267,9 +258,8 @@ QRect KItemListViewAccessible::rect(int child) const Q_UNUSED(child) if (!view()->isVisible()) return QRect(); - // FIXME: map to global - return view()->geometry().toRect(); + return view()->rect().toRect(); } int KItemListViewAccessible::navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const @@ -320,16 +310,24 @@ bool KItemListViewAccessible::doAction(int, int, const QVariantList &) // TABLE CELL -KItemListWidgetAccessible::KItemListWidgetAccessible(KItemListView *view_, int index_) - : /* QAccessibleSimpleEditableTextInterface(this), */ view(view_), index(index_) +KItemListAccessibleCell::KItemListAccessibleCell(KItemListView *view_, int index_) + : /* QAccessibleSimpleEditableTextInterface(this), */ view(view_) + , index(index_) { - Q_ASSERT(index_>0); + Q_ASSERT(index_ > 0); } -int KItemListWidgetAccessible::columnExtent() const { return 1; } -int KItemListWidgetAccessible::rowExtent() const { return 1; } +int KItemListAccessibleCell::columnExtent() const +{ + return 1; +} + +int KItemListAccessibleCell::rowExtent() const +{ + return 1; +} -QList KItemListWidgetAccessible::rowHeaderCells() const +QList KItemListAccessibleCell::rowHeaderCells() const { QList headerCell; /*if (verticalHeader()) { @@ -338,7 +336,7 @@ QList KItemListWidgetAccessible::rowHeaderCells() const return headerCell; } -QList KItemListWidgetAccessible::columnHeaderCells() const +QList KItemListAccessibleCell::columnHeaderCells() const { QList headerCell; /*if (horizontalHeader()) { @@ -347,12 +345,12 @@ QList KItemListWidgetAccessible::columnHeaderCells() cons return headerCell; } -int KItemListWidgetAccessible::columnIndex() const +int KItemListAccessibleCell::columnIndex() const { return view->layouter()->itemColumn(index); } -int KItemListWidgetAccessible::rowIndex() const +int KItemListAccessibleCell::rowIndex() const { /*if (role(0) == QAccessible::TreeItem) { const QTreeView *treeView = qobject_cast(view); @@ -364,14 +362,14 @@ int KItemListWidgetAccessible::rowIndex() const } //Done -bool KItemListWidgetAccessible::isSelected() const +bool KItemListAccessibleCell::isSelected() const { //return widget->isSelected(); // FIXME return false; } -void KItemListWidgetAccessible::rowColumnExtents(int *row, int *column, int *rowExtents, int *columnExtents, bool *selected) const +void KItemListAccessibleCell::rowColumnExtents(int *row, int *column, int *rowExtents, int *columnExtents, bool *selected) const { KItemListViewLayouter* layouter = view->layouter(); *row = layouter->itemRow(index); @@ -381,18 +379,18 @@ void KItemListWidgetAccessible::rowColumnExtents(int *row, int *column, int *row *selected = isSelected(); } -QAccessibleTable2Interface* KItemListWidgetAccessible::table() const +QAccessibleTable2Interface* KItemListAccessibleCell::table() const { return QAccessible::queryAccessibleInterface(view)->table2Interface(); } -QAccessible::Role KItemListWidgetAccessible::role(int child) const +QAccessible::Role KItemListAccessibleCell::role(int child) const { Q_ASSERT(child == 0); return QAccessible::Cell; } -QAccessible::State KItemListWidgetAccessible::state(int child) const +QAccessible::State KItemListAccessibleCell::state(int child) const { Q_ASSERT(child == 0); QAccessible::State st = Normal; @@ -428,13 +426,13 @@ QAccessible::State KItemListWidgetAccessible::state(int child) const } //Done -bool KItemListWidgetAccessible::isExpandable() const +bool KItemListAccessibleCell::isExpandable() const { return false; //view->model()->hasChildren(m_index); } //Done -QRect KItemListWidgetAccessible::rect(int child) const +QRect KItemListAccessibleCell::rect(int child) const { // Q_ASSERT(child == 0); return QRect(); @@ -450,32 +448,30 @@ QRect KItemListWidgetAccessible::rect(int child) const //return widget->textRect().toRect(); } -//Done -QString KItemListWidgetAccessible::text(Text t, int child) const +QString KItemListAccessibleCell::text(QAccessible::Text t, int child) const { - Q_ASSERT(child == 0); - -// switch (t) { -// case QAccessible::Value: -// case QAccessible::Name: -// //return data["text"].toString(); -// case QAccessible::Description: -// //return data["text"].toString() + " : " + data["group"].toString(); -// default: -// break; -// } + //Q_ASSERT(child == 0) + Q_UNUSED(child) + QHash data = view->model()->data(index); + switch (t) { + case QAccessible::Value: + case QAccessible::Name: + return data["text"].toString(); + case QAccessible::Description: + return data["text"].toString() + " : " + data["group"].toString(); + default: + break; + } return QString(); } -//Done -void KItemListWidgetAccessible::setText(QAccessible::Text /*t*/, int child, const QString &text) +void KItemListAccessibleCell::setText(QAccessible::Text /*t*/, int child, const QString &text) { Q_ASSERT(child == 0); // FIXME - is this even allowed on the KItemListWidget? } -//Done -bool KItemListWidgetAccessible::isValid() const +bool KItemListAccessibleCell::isValid() const { if (index <= 0) { kDebug() << "Interface is not valid"; @@ -484,7 +480,7 @@ bool KItemListWidgetAccessible::isValid() const return index > 0; } -int KItemListWidgetAccessible::navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const +int KItemListAccessibleCell::navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const { if (relation == Ancestor && index == 1) { //if (m_role == QAccessible::TreeItem) { @@ -544,7 +540,7 @@ int KItemListWidgetAccessible::navigate(RelationFlag relation, int index, QAcces return -1; } -QAccessible::Relation KItemListWidgetAccessible::relationTo(int child, const QAccessibleInterface *, int otherChild) const +QAccessible::Relation KItemListAccessibleCell::relationTo(int child, const QAccessibleInterface *, int otherChild) const { Q_ASSERT(child == 0); Q_ASSERT(otherChild == 0); @@ -562,17 +558,17 @@ QAccessible::Relation KItemListWidgetAccessible::relationTo(int child, const QAc } #ifndef QT_NO_ACTION -int KItemListWidgetAccessible::userActionCount(int) const +int KItemListAccessibleCell::userActionCount(int) const { return 0; } -QString KItemListWidgetAccessible::actionText(int, Text, int) const +QString KItemListAccessibleCell::actionText(int, Text, int) const { return QString(); } -bool KItemListWidgetAccessible::doAction(int, int, const QVariantList &) +bool KItemListAccessibleCell::doAction(int, int, const QVariantList &) { return false; } diff --git a/src/kitemviews/kitemlistviewaccessible.h b/src/kitemviews/kitemlistviewaccessible.h index 9e26821b9..98009aea6 100644 --- a/src/kitemviews/kitemlistviewaccessible.h +++ b/src/kitemviews/kitemlistviewaccessible.h @@ -15,7 +15,7 @@ #ifndef QT_NO_ITEMVIEWS -class KItemListWidgetAccessible; +class KItemListAccessibleCell; class KItemListViewAccessible: public QAccessibleTable2Interface, public QAccessibleObjectEx { @@ -108,10 +108,10 @@ private: //QAccessibleInterface *childFromLogical(int logicalIndex) const; }; -class KItemListWidgetAccessible: public QAccessibleTable2CellInterface +class KItemListAccessibleCell: public QAccessibleTable2CellInterface { public: - KItemListWidgetAccessible(KItemListView *view, int m_index); + KItemListAccessibleCell(KItemListView *view, int m_index); QObject *object() const { return 0; } Role role(int child) const; @@ -170,7 +170,8 @@ public: int navigate ( RelationFlag relation, int entry, QAccessibleInterface ** target ) const; private: - inline KItemListContainer *container() const { + inline KItemListContainer *container() const + { return static_cast(object()); } }; -- cgit v1.3 From 9149dc84b876f7797082e718ae8dbefd2f39db58 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Tue, 7 Aug 2012 20:31:01 +0200 Subject: Accessibility: Implement rect for cells and view. Remove comparison of QAccessibleInterfaces - these are pointers that get instantiated again and again, so they cannot be compared. Use the object() function in QAI instead for comparison. --- src/kitemviews/kitemlistviewaccessible.cpp | 64 ++++++++---------------------- src/kitemviews/kitemlistviewaccessible.h | 6 +-- 2 files changed, 19 insertions(+), 51 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index 1d1974820..d27987957 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -5,6 +5,9 @@ #include #include +#include +#include + #include #include @@ -258,8 +261,9 @@ QRect KItemListViewAccessible::rect(int child) const Q_UNUSED(child) if (!view()->isVisible()) return QRect(); - // FIXME: map to global - return view()->rect().toRect(); + QPoint origin = view()->scene()->views()[0]->mapToGlobal(QPoint(0, 0)); + QRect viewRect = view()->geometry().toRect(); + return viewRect.translated(origin); } int KItemListViewAccessible::navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const @@ -432,26 +436,19 @@ bool KItemListAccessibleCell::isExpandable() const } //Done -QRect KItemListAccessibleCell::rect(int child) const +QRect KItemListAccessibleCell::rect(int) const { - // Q_ASSERT(child == 0); - return QRect(); - - // FIXME - - //QRect r; - //r = view->visualRect(m_index); - - //if (!r.isNull()) - // r.translate(view->viewport()->mapTo(view, QPoint(0,0))); - // r.translate(view->mapToGlobal(QPoint(0, 0))); - //return widget->textRect().toRect(); + QRect r = view->itemRect(index).toRect(); + if (r.isNull()) + return QRect(); + r.translate(view->mapToScene(QPointF(0.0, 0.0)).toPoint()); + r.translate(view->scene()->views()[0]->mapToGlobal(QPoint(0, 0))); + return r; } QString KItemListAccessibleCell::text(QAccessible::Text t, int child) const { - //Q_ASSERT(child == 0) - Q_UNUSED(child) + Q_ASSERT(child == 0); QHash data = view->model()->data(index); switch (t) { case QAccessible::Value: @@ -473,11 +470,7 @@ void KItemListAccessibleCell::setText(QAccessible::Text /*t*/, int child, const bool KItemListAccessibleCell::isValid() const { - if (index <= 0) { - kDebug() << "Interface is not valid"; - } - - return index > 0; + return view && (index > 0); } int KItemListAccessibleCell::navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const @@ -508,31 +501,6 @@ int KItemListAccessibleCell::navigate(RelationFlag relation, int index, QAccessi return ret; } return -1; - -// From table1 implementation: -// case Up: -// case Down: -// case Left: -// case Right: { -// // This is in the "not so nice" category. In order to find out which item -// // is geometrically around, we have to set the current index, navigate -// // and restore the index as well as the old selection -// view()->setUpdatesEnabled(false); -// const QModelIndex oldIdx = view()->currentIndex(); -// QList kids = children(); -// const QModelIndex currentIndex = index ? kids.at(index - 1) : QModelIndex(row); -// const QItemSelection oldSelection = view()->selectionModel()->selection(); -// view()->setCurrentIndex(currentIndex); -// const QModelIndex idx = view()->moveCursor(toCursorAction(relation), Qt::NoModifier); -// view()->setCurrentIndex(oldIdx); -// view()->selectionModel()->select(oldSelection, QItemSelectionModel::ClearAndSelect); -// view()->setUpdatesEnabled(true); -// if (!idx.isValid()) -// return -1; - -// if (idx.parent() != row.parent() || idx.row() != row.row()) -// *iface = cell(idx); -// return index ? kids.indexOf(idx) + 1 : 0; } default: break; } @@ -589,7 +557,7 @@ int KItemListContainerAccessible::childCount () const int KItemListContainerAccessible::indexOfChild ( const QAccessibleInterface * child ) const { - if(child == QAccessible::queryAccessibleInterface(container()->controller()->view())) + if(child->object() == container()->controller()->view()) return 1; return -1; } diff --git a/src/kitemviews/kitemlistviewaccessible.h b/src/kitemviews/kitemlistviewaccessible.h index 98009aea6..105978c94 100644 --- a/src/kitemviews/kitemlistviewaccessible.h +++ b/src/kitemviews/kitemlistviewaccessible.h @@ -114,9 +114,9 @@ public: KItemListAccessibleCell(KItemListView *view, int m_index); QObject *object() const { return 0; } - Role role(int child) const; - State state(int child) const; - QRect rect(int child) const; + Role role(int) const; + State state(int) const; + QRect rect(int) const; bool isValid() const; int childAt(int, int) const { return 0; } -- cgit v1.3 From 9437c93f071daac2dec4b83740a634b5a64b86b8 Mon Sep 17 00:00:00 2001 From: Amandeep Singh Date: Wed, 8 Aug 2012 00:10:20 +0530 Subject: Improving Accessibility implementation --- src/kitemviews/kitemlistviewaccessible.cpp | 43 +++++++----------------------- 1 file changed, 10 insertions(+), 33 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index d27987957..9e23f2343 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -61,10 +61,7 @@ QAccessibleTable2CellInterface *KItemListViewAccessible::cellAt(int row, int col return 0; } return cell(index);*/ - Q_UNUSED(row) - Q_UNUSED(column) - return cell(1); - + return column * (row - 1) + column ; } QAccessibleInterface *KItemListViewAccessible::caption() const @@ -74,7 +71,6 @@ QAccessibleInterface *KItemListViewAccessible::caption() const QString KItemListViewAccessible::columnDescription(int) const { - // FIXME: no i18n return QObject::tr("No Column Description"); } @@ -146,47 +142,31 @@ QAccessibleInterface *KItemListViewAccessible::summary() const bool KItemListViewAccessible::isColumnSelected(int) const { - return false; //view()->selectionModel()->isColumnSelected(column, QModelIndex()); + return false; } bool KItemListViewAccessible::isRowSelected(int) const { - return false; //view()->selectionModel()->isRowSelected(row, QModelIndex()); + return false; } -bool KItemListViewAccessible::selectRow(int) +bool KItemListViewAccessible::selectRow(int row) { - /*QModelIndex index = view()->model()->index(row, 0); - if (!index.isValid() || view()->selectionMode() & QAbstractItemView::NoSelection) - return false; - view()->selectionModel()->select(index, QItemSelectionModel::Select);*/ return true; } bool KItemListViewAccessible::selectColumn(int) { - /*QModelIndex index = view()->model()->index(0, column); - if (!index.isValid() || view()->selectionMode() & QAbstractItemView::NoSelection) - return false; - view()->selectionModel()->select(index, QItemSelectionModel::Select);*/ return true; } bool KItemListViewAccessible::unselectRow(int) { - /*QModelIndex index = view()->model()->index(row, 0); - if (!index.isValid() || view()->selectionMode() & QAbstractItemView::NoSelection) - return false; - view()->selectionModel()->select(index, QItemSelectionModel::Deselect);*/ return true; } bool KItemListViewAccessible::unselectColumn(int) { - /*QModelIndex index = view()->model()->index(0, column); - if (!index.isValid() || view()->selectionMode() & QAbstractItemView::NoSelection) - return false; - view()->selectionModel()->select(index, QItemSelectionModel::Columns & QItemSelectionModel::Deselect);*/ return true; } @@ -207,8 +187,7 @@ QAccessible::Role KItemListViewAccessible::role(int child) const QAccessible::State KItemListViewAccessible::state(int child) const { - Q_ASSERT(child == 0); - return QAccessible::Normal; + return QAccessible::Normal | QAccessible::HasInvokeExtension; } int KItemListViewAccessible::childAt(int x, int y) const @@ -365,12 +344,9 @@ int KItemListAccessibleCell::rowIndex() const return view->layouter()->itemRow(index); } -//Done bool KItemListAccessibleCell::isSelected() const { - //return widget->isSelected(); - // FIXME - return false; + return view->controller()->selectionManager()->isSelected(index-1); } void KItemListAccessibleCell::rowColumnExtents(int *row, int *column, int *rowExtents, int *columnExtents, bool *selected) const @@ -404,8 +380,8 @@ QAccessible::State KItemListAccessibleCell::state(int child) const //if (!globalRect.intersects(rect(0))) // st |= Invisible; -// if (widget->isSelected()) -// st |= Selected; + if (view->controller()->selectionManager()->isSelected(index-1)) + st |= Selected; if (view->controller()->selectionManager()->currentItem() == index) st |= Focused; @@ -449,7 +425,8 @@ QRect KItemListAccessibleCell::rect(int) const QString KItemListAccessibleCell::text(QAccessible::Text t, int child) const { Q_ASSERT(child == 0); - QHash data = view->model()->data(index); + Q_UNUSED(child) + const QHash data = view->model()->data(index-1); switch (t) { case QAccessible::Value: case QAccessible::Name: -- cgit v1.3 From e43492a6d810f407d6fa81848df56a7d8251f6f7 Mon Sep 17 00:00:00 2001 From: Amandeep Singh Date: Wed, 8 Aug 2012 18:25:21 +0530 Subject: Focus-tracking for widgets in Dolphin View now works. Added the calls to updateAccessibility, for DragDrop & Focus scenarios --- src/kitemviews/kitemlistcontainer.cpp | 1 + src/kitemviews/kitemlistcontroller.cpp | 3 +++ src/kitemviews/kitemlistcontroller.h | 2 ++ src/kitemviews/kitemlistselectionmanager.cpp | 6 +++++- src/kitemviews/kitemlistviewaccessible.cpp | 14 +++++++++----- 5 files changed, 20 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp index 9b0c39667..01a4cfd4e 100644 --- a/src/kitemviews/kitemlistcontainer.cpp +++ b/src/kitemviews/kitemlistcontainer.cpp @@ -163,6 +163,7 @@ void KItemListContainer::keyPressEvent(QKeyEvent* event) if (view) { QApplication::sendEvent(view, event); } + //QAccessible::updateAccessibility(view, 0, QAccessible::Focus); } void KItemListContainer::showEvent(QShowEvent* event) diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp index 88f5d9f7c..985663622 100644 --- a/src/kitemviews/kitemlistcontroller.cpp +++ b/src/kitemviews/kitemlistcontroller.cpp @@ -848,6 +848,8 @@ bool KItemListController::dropEvent(QGraphicsSceneDragDropEvent* event, const QT emit itemDropEvent(m_view->itemAt(pos), event); } + QAccessible::updateAccessibility(view(), 0, QAccessible::DragDropEnd); + return true; } @@ -1095,6 +1097,7 @@ void KItemListController::startDragging() drag->setHotSpot(hotSpot); drag->exec(Qt::MoveAction | Qt::CopyAction | Qt::LinkAction, Qt::CopyAction); + QAccessible::updateAccessibility(view(), 0, QAccessible::DragDropStart); } KItemListWidget* KItemListController::hoveredWidget() const diff --git a/src/kitemviews/kitemlistcontroller.h b/src/kitemviews/kitemlistcontroller.h index a88152622..6e8e3d367 100644 --- a/src/kitemviews/kitemlistcontroller.h +++ b/src/kitemviews/kitemlistcontroller.h @@ -30,6 +30,8 @@ #include #include +#include + class KItemModelBase; class KItemListKeyboardSearchManager; class KItemListSelectionManager; diff --git a/src/kitemviews/kitemlistselectionmanager.cpp b/src/kitemviews/kitemlistselectionmanager.cpp index 383914df0..dbeb00fc6 100644 --- a/src/kitemviews/kitemlistselectionmanager.cpp +++ b/src/kitemviews/kitemlistselectionmanager.cpp @@ -22,9 +22,11 @@ ***************************************************************************/ #include "kitemlistselectionmanager.h" - +#include "kitemlistcontroller.h" +#include "kitemlistview.h" #include "kitemmodelbase.h" #include +#include KItemListSelectionManager::KItemListSelectionManager(QObject* parent) : QObject(parent), @@ -61,6 +63,8 @@ void KItemListSelectionManager::setCurrentItem(int current) } } } + KItemListController *controller = static_cast(parent()); + QAccessible::updateAccessibility(controller->view(), current+1, QAccessible::Focus); } int KItemListSelectionManager::currentItem() const diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index 9e23f2343..de6e18e80 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -61,7 +61,7 @@ QAccessibleTable2CellInterface *KItemListViewAccessible::cellAt(int row, int col return 0; } return cell(index);*/ - return column * (row - 1) + column ; + return cell(column * (row - 1) + column) ; } QAccessibleInterface *KItemListViewAccessible::caption() const @@ -187,6 +187,12 @@ QAccessible::Role KItemListViewAccessible::role(int child) const QAccessible::State KItemListViewAccessible::state(int child) const { + if(child){ + QAccessibleInterface *iface; + navigate(Child,child,&iface); + if(iface) + return iface->state(0); + } return QAccessible::Normal | QAccessible::HasInvokeExtension; } @@ -405,16 +411,14 @@ QAccessible::State KItemListAccessibleCell::state(int child) const return st; } -//Done bool KItemListAccessibleCell::isExpandable() const { return false; //view->model()->hasChildren(m_index); } -//Done QRect KItemListAccessibleCell::rect(int) const { - QRect r = view->itemRect(index).toRect(); + QRect r = view->itemRect(index-1).toRect(); if (r.isNull()) return QRect(); r.translate(view->mapToScene(QPointF(0.0, 0.0)).toPoint()); @@ -439,7 +443,7 @@ QString KItemListAccessibleCell::text(QAccessible::Text t, int child) const return QString(); } -void KItemListAccessibleCell::setText(QAccessible::Text /*t*/, int child, const QString &text) +void KItemListAccessibleCell::setText(QAccessible::Text /*t*/, int child, const QString &/*text*/) { Q_ASSERT(child == 0); // FIXME - is this even allowed on the KItemListWidget? -- cgit v1.3 From 88b16b38ba947b7dc6a53edbfebac386be5db259 Mon Sep 17 00:00:00 2001 From: Amandeep Singh Date: Fri, 10 Aug 2012 10:40:47 +0530 Subject: Minor fixes to accessible interfaces --- src/kitemviews/kitemlistcontainer.cpp | 5 ++++- src/kitemviews/kitemlistcontroller.cpp | 1 + src/kitemviews/kitemlistcontroller.h | 2 -- src/kitemviews/kitemlistviewaccessible.cpp | 10 +++++----- 4 files changed, 10 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp index 01a4cfd4e..7d7ccb4d8 100644 --- a/src/kitemviews/kitemlistcontainer.cpp +++ b/src/kitemviews/kitemlistcontainer.cpp @@ -23,6 +23,7 @@ #include "kitemlistcontainer.h" #include "kitemlistcontroller.h" +#include "kitemlistselectionmanager.h" #include "kitemlistview.h" #include "kitemmodelbase.h" @@ -163,7 +164,6 @@ void KItemListContainer::keyPressEvent(QKeyEvent* event) if (view) { QApplication::sendEvent(view, event); } - //QAccessible::updateAccessibility(view, 0, QAccessible::Focus); } void KItemListContainer::showEvent(QShowEvent* event) @@ -182,6 +182,7 @@ void KItemListContainer::scrollContentsBy(int dx, int dy) { m_horizontalSmoothScroller->scrollContentsBy(dx); m_verticalSmoothScroller->scrollContentsBy(dy); + //QAccessible::updateAccessibility(view(), , ); } void KItemListContainer::wheelEvent(QWheelEvent* event) @@ -369,6 +370,8 @@ void KItemListContainer::updateGeometries() updateScrollOffsetScrollBar(); updateItemOffsetScrollBar(); + QAccessible::updateAccessibility(m_controller->view(), 0, QAccessible::LocationChanged); + QAccessible::updateAccessibility(m_controller->view(), m_controller->selectionManager()->currentItem(), QAccessible::LocationChanged); } } diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp index 985663622..c8e0094b5 100644 --- a/src/kitemviews/kitemlistcontroller.cpp +++ b/src/kitemviews/kitemlistcontroller.cpp @@ -40,6 +40,7 @@ #include #include #include +#include KItemListController::KItemListController(KItemModelBase* model, KItemListView* view, QObject* parent) : QObject(parent), diff --git a/src/kitemviews/kitemlistcontroller.h b/src/kitemviews/kitemlistcontroller.h index 6e8e3d367..a88152622 100644 --- a/src/kitemviews/kitemlistcontroller.h +++ b/src/kitemviews/kitemlistcontroller.h @@ -30,8 +30,6 @@ #include #include -#include - class KItemModelBase; class KItemListKeyboardSearchManager; class KItemListSelectionManager; diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index de6e18e80..cb5097fad 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -71,7 +71,7 @@ QAccessibleInterface *KItemListViewAccessible::caption() const QString KItemListViewAccessible::columnDescription(int) const { - return QObject::tr("No Column Description"); + return ""; } int KItemListViewAccessible::columnCount() const @@ -105,7 +105,7 @@ int KItemListViewAccessible::selectedRowCount() const QString KItemListViewAccessible::rowDescription(int) const { - return "No Row Description"; + return ""; } QList KItemListViewAccessible::selectedCells() const @@ -386,7 +386,7 @@ QAccessible::State KItemListAccessibleCell::state(int child) const //if (!globalRect.intersects(rect(0))) // st |= Invisible; - if (view->controller()->selectionManager()->isSelected(index-1)) + if (isSelected()) st |= Selected; if (view->controller()->selectionManager()->currentItem() == index) st |= Focused; @@ -435,8 +435,8 @@ QString KItemListAccessibleCell::text(QAccessible::Text t, int child) const case QAccessible::Value: case QAccessible::Name: return data["text"].toString(); - case QAccessible::Description: - return data["text"].toString() + " : " + data["group"].toString(); + //case QAccessible::Description: + //return data["text"].toString() + " : " + data["group"].toString(); default: break; } -- cgit v1.3 From 48fcc54aeb07c4b55e06fd60b852ff350cd17587 Mon Sep 17 00:00:00 2001 From: Amandeep Singh Date: Fri, 10 Aug 2012 20:31:06 +0530 Subject: Adding calls to updateAccessibility Items location changes when scrollbar is moved in dolphin. Accordingly calls to updateAccessibility should be made. --- src/kitemviews/kitemlistcontainer.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp index 7d7ccb4d8..56438d732 100644 --- a/src/kitemviews/kitemlistcontainer.cpp +++ b/src/kitemviews/kitemlistcontainer.cpp @@ -164,6 +164,8 @@ void KItemListContainer::keyPressEvent(QKeyEvent* event) if (view) { QApplication::sendEvent(view, event); } + QAccessible::updateAccessibility(view, m_controller->selectionManager()->currentItem()+1, QAccessible::Focus); + QAccessible::updateAccessibility(view, m_controller->selectionManager()->currentItem()+1, QAccessible::LocationChanged); } void KItemListContainer::showEvent(QShowEvent* event) @@ -182,7 +184,8 @@ void KItemListContainer::scrollContentsBy(int dx, int dy) { m_horizontalSmoothScroller->scrollContentsBy(dx); m_verticalSmoothScroller->scrollContentsBy(dy); - //QAccessible::updateAccessibility(view(), , ); + QAccessible::updateAccessibility(m_controller->view(), m_controller->selectionManager()->currentItem()+1, QAccessible::Focus); + QAccessible::updateAccessibility(m_controller->view(), m_controller->selectionManager()->currentItem()+1, QAccessible::LocationChanged); } void KItemListContainer::wheelEvent(QWheelEvent* event) @@ -371,7 +374,8 @@ void KItemListContainer::updateGeometries() updateScrollOffsetScrollBar(); updateItemOffsetScrollBar(); QAccessible::updateAccessibility(m_controller->view(), 0, QAccessible::LocationChanged); - QAccessible::updateAccessibility(m_controller->view(), m_controller->selectionManager()->currentItem(), QAccessible::LocationChanged); + QAccessible::updateAccessibility(m_controller->view(), m_controller->selectionManager()->currentItem()+1, QAccessible::LocationChanged); + QAccessible::updateAccessibility(m_controller->view(), m_controller->selectionManager()->currentItem()+1, QAccessible::Focus); } } -- cgit v1.3 From 6770e617cb8154ba0c8acd4229c4c0f9b8d65da9 Mon Sep 17 00:00:00 2001 From: Amandeep Singh Date: Fri, 10 Aug 2012 21:12:29 +0530 Subject: Enclose accessibility code within QT_NO_ACCESSIBILITY --- src/kitemviews/kitemlistcontainer.cpp | 5 ++++- src/kitemviews/kitemlistview.cpp | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp index 56438d732..cc7c95391 100644 --- a/src/kitemviews/kitemlistcontainer.cpp +++ b/src/kitemviews/kitemlistcontainer.cpp @@ -107,7 +107,9 @@ KItemListContainer::KItemListContainer(KItemListController* controller, QWidget* connect(controller, SIGNAL(viewChanged(KItemListView*,KItemListView*)), this, SLOT(slotViewChanged(KItemListView*,KItemListView*))); +#ifndef QT_NO_ACCESSIBILITY QAccessible::installFactory(accessibleContainerFactory); +#endif } KItemListContainer::~KItemListContainer() @@ -116,8 +118,9 @@ KItemListContainer::~KItemListContainer() // the QGraphicsScene might get deleted before the view. delete m_controller; m_controller = 0; - +#ifndef QT_NO_ACCESSIBIILTY QAccessible::removeFactory(accessibleContainerFactory); +#endif } KItemListController* KItemListContainer::controller() const diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index 11dad5209..fe62e7a36 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -120,8 +120,9 @@ KItemListView::KItemListView(QGraphicsWidget* parent) : m_headerWidget->setVisible(false); m_header = new KItemListHeader(this); - +#ifndef QT_NO_ACCESSIBILITY QAccessible::installFactory(accessibleViewFactory); +#endif } KItemListView::~KItemListView() @@ -137,8 +138,9 @@ KItemListView::~KItemListView() delete m_sizeHintResolver; m_sizeHintResolver = 0; - +#ifndef QT_NO_ACCESSIBILITY QAccessible::removeFactory(accessibleViewFactory); +#endif } void KItemListView::setScrollOffset(qreal offset) -- cgit v1.3 From dc85bf39c929e69ebae62ab8b22b9214068e6721 Mon Sep 17 00:00:00 2001 From: Amandeep Singh Date: Mon, 13 Aug 2012 11:11:26 +0530 Subject: Remove unneccessary dependency and polish the Accessibility Interfaces --- src/kitemviews/kitemlistselectionmanager.cpp | 4 - src/kitemviews/kitemlistview.cpp | 1 + src/kitemviews/kitemlistviewaccessible.cpp | 171 +++++++-------------------- src/kitemviews/kitemlistviewaccessible.h | 45 +++---- 4 files changed, 60 insertions(+), 161 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistselectionmanager.cpp b/src/kitemviews/kitemlistselectionmanager.cpp index dbeb00fc6..899a66f94 100644 --- a/src/kitemviews/kitemlistselectionmanager.cpp +++ b/src/kitemviews/kitemlistselectionmanager.cpp @@ -22,8 +22,6 @@ ***************************************************************************/ #include "kitemlistselectionmanager.h" -#include "kitemlistcontroller.h" -#include "kitemlistview.h" #include "kitemmodelbase.h" #include #include @@ -63,8 +61,6 @@ void KItemListSelectionManager::setCurrentItem(int current) } } } - KItemListController *controller = static_cast(parent()); - QAccessible::updateAccessibility(controller->view(), current+1, QAccessible::Focus); } int KItemListSelectionManager::currentItem() const diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index fe62e7a36..0689b0758 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -1267,6 +1267,7 @@ void KItemListView::slotCurrentChanged(int current, int previous) if (currentWidget) { currentWidget->setCurrent(true); } + QAccessible::updateAccessibility(this, current+1, QAccessible::Focus); } void KItemListView::slotSelectionChanged(const QSet& current, const QSet& previous) diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index cb5097fad..980c31064 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -24,17 +24,6 @@ KItemListViewAccessible::KItemListViewAccessible(KItemListView *view_) : QAccessibleObjectEx(view_) { Q_ASSERT(view()); - - /*if (qobject_cast(view())) { - m_role = QAccessible::Table; - } else if (qobject_cast(view())) { - m_role = QAccessible::Tree; - } else if (qobject_cast(view())) { - m_role = QAccessible::List; - } else { - // is this our best guess? - m_role = QAccessible::Table; - }*/ } KItemListViewAccessible::~KItemListViewAccessible() @@ -46,21 +35,14 @@ void KItemListViewAccessible::modelReset() QAccessibleTable2CellInterface *KItemListViewAccessible::cell(int index) const { - if (index > 0) + if (index > 0) { return new KItemListAccessibleCell(view(), index); + } return 0; } QAccessibleTable2CellInterface *KItemListViewAccessible::cellAt(int row, int column) const { - /*Q_ASSERT(role(0) != QAccessible::Tree); - QModelIndex index = view()->model()->index(row, column); - //Q_ASSERT(index.isValid()); - if (!index.isValid()) { - qWarning() << "QAccessibleTable2::cellAt: invalid index: " << index << " for " << view(); - return 0; - } - return cell(index);*/ return cell(column * (row - 1) + column) ; } @@ -83,8 +65,9 @@ int KItemListViewAccessible::rowCount() const { int itemCount = view()->model()->count(); int rowCount = itemCount / columnCount(); - if (itemCount % rowCount) + if (itemCount % rowCount) { ++rowCount; + } return rowCount; } @@ -119,20 +102,12 @@ QList KItemListViewAccessible::selectedCells() QList KItemListViewAccessible::selectedColumns() const { - QList columns; - /*Q_FOREACH (const QModelIndex &index, view()->selectionModel()->selectedColumns()) { - columns.append(index.column()); - }*/ - return columns; + return QList(); } QList KItemListViewAccessible::selectedRows() const { - QList rows; - /*Q_FOREACH (const QModelIndex &index, view()->selectionModel()->selectedRows()) { - rows.append(index.row()); - }*/ - return rows; + return QList(); } QAccessibleInterface *KItemListViewAccessible::summary() const @@ -180,18 +155,20 @@ QAccessible2::TableModelChange KItemListViewAccessible::modelChange() const QAccessible::Role KItemListViewAccessible::role(int child) const { Q_ASSERT(child >= 0); - if (child > 0) + if (child > 0) { return QAccessible::Cell; + } return QAccessible::Table; } QAccessible::State KItemListViewAccessible::state(int child) const { - if(child){ + if (child) { QAccessibleInterface *iface; navigate(Child,child,&iface); - if(iface) + if (iface) { return iface->state(0); + } } return QAccessible::Normal | QAccessible::HasInvokeExtension; } @@ -209,25 +186,6 @@ int KItemListViewAccessible::childCount() const int KItemListViewAccessible::indexOfChild(const QAccessibleInterface *iface) const { - /*Q_ASSERT(iface->role(0) != QAccessible::TreeItem); // should be handled by tree class - if (iface->role(0) == QAccessible::Cell || iface->role(0) == QAccessible::ListItem) { - const QAccessibleTable2Cell* cell = static_cast(iface); - return logicalIndex(cell->m_index); - } else if (iface->role(0) == QAccessible::ColumnHeader){ - const QAccessibleTable2HeaderCell* cell = static_cast(iface); - return cell->index + (verticalHeader() ? 1 : 0) + 1; - } else if (iface->role(0) == QAccessible::RowHeader){ - const QAccessibleTable2HeaderCell* cell = static_cast(iface); - return (cell->index+1) * (view()->model()->rowCount()+1) + 1; - } else if (iface->role(0) == QAccessible::Pane) { - return 1; // corner button - } else { - qWarning() << "WARNING QAccessibleTable2::indexOfChild Fix my children..." - << iface->role(0) << iface->text(QAccessible::Name, 0); - } - // FIXME: we are in denial of our children. this should stop. - return -1;*/ - const KItemListAccessibleCell *widget = static_cast(iface); return widget->getIndex(); } @@ -235,17 +193,18 @@ int KItemListViewAccessible::indexOfChild(const QAccessibleInterface *iface) con QString KItemListViewAccessible::text(Text t, int child) const { Q_ASSERT(child == 0); - // FIXME: I don't think this is needed, but if at all it needs i18n - if (t == QAccessible::Description) + if (t == QAccessible::Description) { return QObject::tr("List of files present in the current directory"); + } return QObject::tr("File List"); } QRect KItemListViewAccessible::rect(int child) const { Q_UNUSED(child) - if (!view()->isVisible()) + if (!view()->isVisible()) { return QRect(); + } QPoint origin = view()->scene()->views()[0]->mapToGlobal(QPoint(0, 0)); QRect viewRect = view()->geometry().toRect(); return viewRect.translated(origin); @@ -255,24 +214,16 @@ int KItemListViewAccessible::navigate(RelationFlag relation, int index, QAccessi { *iface = 0; switch (relation) { - /*case Ancestor: { - if (index == 1 && view()->parent()) { - *iface = QAccessible::queryAccessibleInterface(view()->parent()); - if (*iface) + case QAccessible::Child: { + Q_ASSERT(index > 0); + *iface = cell(index); + if (*iface) { return 0; + } + break; } - break; - }*/ - case QAccessible::Child: { - Q_ASSERT(index > 0); - *iface = cell(index); - if (*iface) { - return 0; - } - break; - } - default: - break; + default: + break; } return -1; } @@ -300,7 +251,7 @@ bool KItemListViewAccessible::doAction(int, int, const QVariantList &) // TABLE CELL KItemListAccessibleCell::KItemListAccessibleCell(KItemListView *view_, int index_) - : /* QAccessibleSimpleEditableTextInterface(this), */ view(view_) + : view(view_) , index(index_) { Q_ASSERT(index_ > 0); @@ -318,20 +269,12 @@ int KItemListAccessibleCell::rowExtent() const QList KItemListAccessibleCell::rowHeaderCells() const { - QList headerCell; - /*if (verticalHeader()) { - headerCell.append(new QAccessibleTable2HeaderCell(view, m_index.row(), Qt::Vertical)); - }*/ - return headerCell; + return QList(); } QList KItemListAccessibleCell::columnHeaderCells() const { - QList headerCell; - /*if (horizontalHeader()) { - headerCell.append(new QAccessibleTable2HeaderCell(view, m_index.column(), Qt::Horizontal)); - }*/ - return headerCell; + return QList(); } int KItemListAccessibleCell::columnIndex() const @@ -341,12 +284,6 @@ int KItemListAccessibleCell::columnIndex() const int KItemListAccessibleCell::rowIndex() const { - /*if (role(0) == QAccessible::TreeItem) { - const QTreeView *treeView = qobject_cast(view); - Q_ASSERT(treeView); - int row = treeView->d_func()->viewIndex(m_index); - return row; - }*/ return view->layouter()->itemRow(index); } @@ -381,46 +318,34 @@ QAccessible::State KItemListAccessibleCell::state(int child) const Q_ASSERT(child == 0); QAccessible::State st = Normal; - //QRect globalRect = view->rect(); - //globalRect.translate(view->mapToGlobal(QPoint(0,0))); - //if (!globalRect.intersects(rect(0))) - // st |= Invisible; - - if (isSelected()) + if (isSelected()) { st |= Selected; - if (view->controller()->selectionManager()->currentItem() == index) + } + if (view->controller()->selectionManager()->currentItem() == index) { st |= Focused; + } - //if (m_index.model()->data(m_index, Qt::CheckStateRole).toInt() == Qt::Checked) - // st |= Checked; - //if (flags & Qt::ItemIsSelectable) { st |= Selectable; st |= Focusable; - if (view->controller()->selectionBehavior() == KItemListController::MultiSelection) - st |= MultiSelectable; - //if (view->selectionMode() == QAbstractItemView::ExtendedSelection) - //st |= ExtSelectable; - //} - //if (m_role == QAccessible::TreeItem) { - // const QTreeView *treeView = qobject_cast(view); - // if (treeView->isExpanded(m_index)) - // st |= Expanded; - //} + if (view->controller()->selectionBehavior() == KItemListController::MultiSelection){ + st |= MultiSelectable; + } return st; } bool KItemListAccessibleCell::isExpandable() const { - return false; //view->model()->hasChildren(m_index); + return false; } QRect KItemListAccessibleCell::rect(int) const { QRect r = view->itemRect(index-1).toRect(); - if (r.isNull()) + if (r.isNull()) { return QRect(); + } r.translate(view->mapToScene(QPointF(0.0, 0.0)).toPoint()); r.translate(view->scene()->views()[0]->mapToGlobal(QPoint(0, 0))); return r; @@ -435,8 +360,6 @@ QString KItemListAccessibleCell::text(QAccessible::Text t, int child) const case QAccessible::Value: case QAccessible::Name: return data["text"].toString(); - //case QAccessible::Description: - //return data["text"].toString() + " : " + data["group"].toString(); default: break; } @@ -457,16 +380,14 @@ bool KItemListAccessibleCell::isValid() const int KItemListAccessibleCell::navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const { if (relation == Ancestor && index == 1) { - //if (m_role == QAccessible::TreeItem) { - // *iface = new QAccessibleTree(view); - //} else { *iface = new KItemListViewAccessible(view); return 0; } *iface = 0; - if (!view) + if (!view) { return -1; + } switch (relation) { @@ -478,8 +399,9 @@ int KItemListAccessibleCell::navigate(RelationFlag relation, int index, QAccessi QAccessibleInterface *parent = queryAccessibleInterface(view); int ret = parent->navigate(QAccessible::Child, index, iface); delete parent; - if (*iface) + if (*iface) { return ret; + } } return -1; default: @@ -493,16 +415,6 @@ QAccessible::Relation KItemListAccessibleCell::relationTo(int child, const QAcce { Q_ASSERT(child == 0); Q_ASSERT(otherChild == 0); - /* we only check for parent-child relationships in trees - if (m_role == QAccessible::TreeItem && other->role(0) == QAccessible::TreeItem) { - QModelIndex otherIndex = static_cast(other)->m_index; - // is the other our parent? - if (otherIndex.parent() == m_index) - return QAccessible::Ancestor; - // are we the other's child? - if (m_index.parent() == otherIndex) - return QAccessible::Child; - }*/ return QAccessible::Unrelated; } @@ -538,8 +450,9 @@ int KItemListContainerAccessible::childCount () const int KItemListContainerAccessible::indexOfChild ( const QAccessibleInterface * child ) const { - if(child->object() == container()->controller()->view()) + if (child->object() == container()->controller()->view()) { return 1; + } return -1; } diff --git a/src/kitemviews/kitemlistviewaccessible.h b/src/kitemviews/kitemlistviewaccessible.h index 105978c94..5fd22712c 100644 --- a/src/kitemviews/kitemlistviewaccessible.h +++ b/src/kitemviews/kitemlistviewaccessible.h @@ -84,28 +84,8 @@ protected: protected: inline QAccessibleTable2CellInterface *cell(int index) const; inline QAccessible::Role cellRole() const { - /* - switch (m_role) { - case QAccessible::List: - return QAccessible::ListItem; - case QAccessible::Table: - return QAccessible::Cell; - case QAccessible::Tree: - return QAccessible::TreeItem; - default: - Q_ASSERT(0); - } - return QAccessible::NoRole; - */ - return QAccessible::Cell; + return QAccessible::Cell; } - -private: - //QAccessible::Role m_role; - // the child index for a model index - //inline int logicalIndex(const QModelIndex &index) const; - // the model index from the child index - //QAccessibleInterface *childFromLogical(int logicalIndex) const; }; class KItemListAccessibleCell: public QAccessibleTable2CellInterface @@ -113,15 +93,24 @@ class KItemListAccessibleCell: public QAccessibleTable2CellInterface public: KItemListAccessibleCell(KItemListView *view, int m_index); - QObject *object() const { return 0; } + QObject *object() const + { + return 0; + } Role role(int) const; State state(int) const; QRect rect(int) const; bool isValid() const; - int childAt(int, int) const { return 0; } - int childCount() const { return 0; } - int indexOfChild(const QAccessibleInterface *) const { return -1; } + inline int childAt(int, int) const { + return 0; + } + inline int childCount() const { + return 0; + } + inline int indexOfChild(const QAccessibleInterface *) const { + return -1; + } QString text(Text t, int child) const; void setText(Text t, int child, const QString &text); @@ -148,15 +137,15 @@ public: virtual void rowColumnExtents(int *row, int *column, int *rowExtents, int *columnExtents, bool *selected) const; virtual QAccessibleTable2Interface* table() const; - inline int getIndex() const - { return index; } + inline int getIndex() const { + return index; + } private: QPointer view; int index; friend class KItemListViewAccessible; -//friend class QAccessibleTree; }; class KItemListContainerAccessible : public QAccessibleWidgetEx -- cgit v1.3 From 7ac839a234d89f130f9be31992b565ec0d71a960 Mon Sep 17 00:00:00 2001 From: Amandeep Singh Date: Mon, 13 Aug 2012 23:32:50 +0530 Subject: Reverting KListSelectionManager, removing unneccessary a11y factories --- src/kitemviews/kitemlistcontainer.cpp | 27 --------------------- src/kitemviews/kitemlistselectionmanager.cpp | 1 - src/kitemviews/kitemlistview.cpp | 10 ++++---- src/kitemviews/kitemlistviewaccessible.cpp | 35 +++++++++++++--------------- src/kitemviews/kitemlistviewaccessible.h | 12 +++------- 5 files changed, 25 insertions(+), 60 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp index cc7c95391..5500851c8 100644 --- a/src/kitemviews/kitemlistcontainer.cpp +++ b/src/kitemviews/kitemlistcontainer.cpp @@ -23,7 +23,6 @@ #include "kitemlistcontainer.h" #include "kitemlistcontroller.h" -#include "kitemlistselectionmanager.h" #include "kitemlistview.h" #include "kitemmodelbase.h" @@ -39,8 +38,6 @@ #include -#include "kitemlistviewaccessible.h" - /** * Replaces the default viewport of KItemListContainer by a * non-scrollable viewport. The scrolling is done in an optimized @@ -70,16 +67,6 @@ void KItemListContainerViewport::wheelEvent(QWheelEvent* event) event->ignore(); } -QAccessibleInterface* accessibleContainerFactory(const QString &key, QObject *object) -{ - Q_UNUSED(key) - if (KItemListContainer*view = qobject_cast(object)) - return new KItemListContainerAccessible(view); - if (KItemListView *view = qobject_cast(object)) - return new KItemListViewAccessible(view); - return 0; -} - KItemListContainer::KItemListContainer(KItemListController* controller, QWidget* parent) : QAbstractScrollArea(parent), m_controller(controller), @@ -106,10 +93,6 @@ KItemListContainer::KItemListContainer(KItemListController* controller, QWidget* this, SLOT(slotModelChanged(KItemModelBase*,KItemModelBase*))); connect(controller, SIGNAL(viewChanged(KItemListView*,KItemListView*)), this, SLOT(slotViewChanged(KItemListView*,KItemListView*))); - -#ifndef QT_NO_ACCESSIBILITY - QAccessible::installFactory(accessibleContainerFactory); -#endif } KItemListContainer::~KItemListContainer() @@ -118,9 +101,6 @@ KItemListContainer::~KItemListContainer() // the QGraphicsScene might get deleted before the view. delete m_controller; m_controller = 0; -#ifndef QT_NO_ACCESSIBIILTY - QAccessible::removeFactory(accessibleContainerFactory); -#endif } KItemListController* KItemListContainer::controller() const @@ -167,8 +147,6 @@ void KItemListContainer::keyPressEvent(QKeyEvent* event) if (view) { QApplication::sendEvent(view, event); } - QAccessible::updateAccessibility(view, m_controller->selectionManager()->currentItem()+1, QAccessible::Focus); - QAccessible::updateAccessibility(view, m_controller->selectionManager()->currentItem()+1, QAccessible::LocationChanged); } void KItemListContainer::showEvent(QShowEvent* event) @@ -187,8 +165,6 @@ void KItemListContainer::scrollContentsBy(int dx, int dy) { m_horizontalSmoothScroller->scrollContentsBy(dx); m_verticalSmoothScroller->scrollContentsBy(dy); - QAccessible::updateAccessibility(m_controller->view(), m_controller->selectionManager()->currentItem()+1, QAccessible::Focus); - QAccessible::updateAccessibility(m_controller->view(), m_controller->selectionManager()->currentItem()+1, QAccessible::LocationChanged); } void KItemListContainer::wheelEvent(QWheelEvent* event) @@ -376,9 +352,6 @@ void KItemListContainer::updateGeometries() updateScrollOffsetScrollBar(); updateItemOffsetScrollBar(); - QAccessible::updateAccessibility(m_controller->view(), 0, QAccessible::LocationChanged); - QAccessible::updateAccessibility(m_controller->view(), m_controller->selectionManager()->currentItem()+1, QAccessible::LocationChanged); - QAccessible::updateAccessibility(m_controller->view(), m_controller->selectionManager()->currentItem()+1, QAccessible::Focus); } } diff --git a/src/kitemviews/kitemlistselectionmanager.cpp b/src/kitemviews/kitemlistselectionmanager.cpp index 899a66f94..d444bcffe 100644 --- a/src/kitemviews/kitemlistselectionmanager.cpp +++ b/src/kitemviews/kitemlistselectionmanager.cpp @@ -24,7 +24,6 @@ #include "kitemlistselectionmanager.h" #include "kitemmodelbase.h" #include -#include KItemListSelectionManager::KItemListSelectionManager(QObject* parent) : QObject(parent), diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index 0689b0758..48dab4b04 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -54,13 +54,16 @@ namespace { const int RepeatingAutoScrollDelay = 1000 / 60; } +#ifndef QT_NO_ACCESSIBILITY QAccessibleInterface* accessibleViewFactory(const QString &key, QObject *object) { Q_UNUSED(key) - if (KItemListView *view = qobject_cast(object)) + if (KItemListView *view = qobject_cast(object)) { return new KItemListViewAccessible(view); + } return 0; } +#endif KItemListView::KItemListView(QGraphicsWidget* parent) : QGraphicsWidget(parent), @@ -120,9 +123,11 @@ KItemListView::KItemListView(QGraphicsWidget* parent) : m_headerWidget->setVisible(false); m_header = new KItemListHeader(this); + #ifndef QT_NO_ACCESSIBILITY QAccessible::installFactory(accessibleViewFactory); #endif + } KItemListView::~KItemListView() @@ -138,9 +143,6 @@ KItemListView::~KItemListView() delete m_sizeHintResolver; m_sizeHintResolver = 0; -#ifndef QT_NO_ACCESSIBILITY - QAccessible::removeFactory(accessibleViewFactory); -#endif } void KItemListView::setScrollOffset(qreal offset) diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index 980c31064..d0fd4f57a 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -2,6 +2,7 @@ #include "kitemlistcontroller.h" #include "kitemlistselectionmanager.h" #include "private/kitemlistviewlayouter.h" +#include #include #include @@ -13,8 +14,6 @@ #ifndef QT_NO_ACCESSIBILITY -#ifndef QT_NO_ITEMVIEWS - KItemListView *KItemListViewAccessible::view() const { return qobject_cast(object()); @@ -194,9 +193,9 @@ QString KItemListViewAccessible::text(Text t, int child) const { Q_ASSERT(child == 0); if (t == QAccessible::Description) { - return QObject::tr("List of files present in the current directory"); + return i18n("List of files present in the current directory"); } - return QObject::tr("File List"); + return i18n("File List"); } QRect KItemListViewAccessible::rect(int child) const @@ -250,11 +249,11 @@ bool KItemListViewAccessible::doAction(int, int, const QVariantList &) // TABLE CELL -KItemListAccessibleCell::KItemListAccessibleCell(KItemListView *view_, int index_) - : view(view_) - , index(index_) +KItemListAccessibleCell::KItemListAccessibleCell(KItemListView *view, int index) + : m_view(view) + , m_index(index) { - Q_ASSERT(index_ > 0); + Q_ASSERT(index > 0); } int KItemListAccessibleCell::columnExtent() const @@ -279,24 +278,24 @@ QList KItemListAccessibleCell::columnHeaderCells() const int KItemListAccessibleCell::columnIndex() const { - return view->layouter()->itemColumn(index); + return view->layouter()->itemColumn(m_index); } int KItemListAccessibleCell::rowIndex() const { - return view->layouter()->itemRow(index); + return view->layouter()->itemRow(m_index); } bool KItemListAccessibleCell::isSelected() const { - return view->controller()->selectionManager()->isSelected(index-1); + return view->controller()->selectionManager()->isSelected(m_index-1); } void KItemListAccessibleCell::rowColumnExtents(int *row, int *column, int *rowExtents, int *columnExtents, bool *selected) const { KItemListViewLayouter* layouter = view->layouter(); - *row = layouter->itemRow(index); - *column = layouter->itemColumn(index); + *row = layouter->itemRow(m_index); + *column = layouter->itemColumn(m_index); *rowExtents = 1; *columnExtents = 1; *selected = isSelected(); @@ -321,7 +320,7 @@ QAccessible::State KItemListAccessibleCell::state(int child) const if (isSelected()) { st |= Selected; } - if (view->controller()->selectionManager()->currentItem() == index) { + if (view->controller()->selectionManager()->currentItem() == m_index) { st |= Focused; } @@ -342,7 +341,7 @@ bool KItemListAccessibleCell::isExpandable() const QRect KItemListAccessibleCell::rect(int) const { - QRect r = view->itemRect(index-1).toRect(); + QRect r = view->itemRect(m_index-1).toRect(); if (r.isNull()) { return QRect(); } @@ -355,7 +354,7 @@ QString KItemListAccessibleCell::text(QAccessible::Text t, int child) const { Q_ASSERT(child == 0); Q_UNUSED(child) - const QHash data = view->model()->data(index-1); + const QHash data = view->model()->data(m_index-1); switch (t) { case QAccessible::Value: case QAccessible::Name: @@ -374,7 +373,7 @@ void KItemListAccessibleCell::setText(QAccessible::Text /*t*/, int child, const bool KItemListAccessibleCell::isValid() const { - return view && (index > 0); + return view && (m_index > 0); } int KItemListAccessibleCell::navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const @@ -465,6 +464,4 @@ int KItemListContainerAccessible::navigate ( QAccessible::RelationFlag relation, return QAccessibleWidgetEx::navigate(relation, index, target); } -#endif // QT_NO_ITEMVIEWS - #endif // QT_NO_ACCESSIBILITY diff --git a/src/kitemviews/kitemlistviewaccessible.h b/src/kitemviews/kitemlistviewaccessible.h index 5fd22712c..a858005a4 100644 --- a/src/kitemviews/kitemlistviewaccessible.h +++ b/src/kitemviews/kitemlistviewaccessible.h @@ -2,8 +2,6 @@ #define ACCESSIBLE_ITEMVIEWS_H #include "QtCore/qpointer.h" -#include -#include #include #include #include @@ -13,8 +11,6 @@ #ifndef QT_NO_ACCESSIBILITY -#ifndef QT_NO_ITEMVIEWS - class KItemListAccessibleCell; class KItemListViewAccessible: public QAccessibleTable2Interface, public QAccessibleObjectEx @@ -137,13 +133,13 @@ public: virtual void rowColumnExtents(int *row, int *column, int *rowExtents, int *columnExtents, bool *selected) const; virtual QAccessibleTable2Interface* table() const; - inline int getIndex() const { + inline int index() const { return index; } private: - QPointer view; - int index; + QPointer m_view; + int m_index; friend class KItemListViewAccessible; }; @@ -165,8 +161,6 @@ private: } }; -#endif // QT_NO_ITEMVIEWS - #endif // QT_NO_ACCESSIBILITY #endif // ACCESSIBLE_ITEMVIEWS_H -- cgit v1.3 From 0d2f099e86a6ba7cea2489a00e61144523e4417b Mon Sep 17 00:00:00 2001 From: David Faure Date: Wed, 18 Jul 2012 20:40:56 +0200 Subject: Fix open-in-new-window to work with remote URLs FIXED-IN: 4.9.0 BUGS: 274655, 292822 --- src/dolphinmainwindow.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index fe3024d23..f3d23d686 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -434,7 +434,7 @@ void DolphinMainWindow::updateFilterBarAction(bool show) void DolphinMainWindow::openNewMainWindow() { - KRun::run("dolphin", KUrl::List(), this); + KRun::run("dolphin %u", KUrl::List(), this); } void DolphinMainWindow::openNewTab() @@ -545,7 +545,7 @@ void DolphinMainWindow::openInNewWindow() } if (!newWindowUrl.isEmpty()) { - KRun::run("dolphin", KUrl::List() << newWindowUrl, this); + KRun::run("dolphin %u", KUrl::List() << newWindowUrl, this); } } @@ -1299,7 +1299,7 @@ void DolphinMainWindow::openContextMenu(const QPoint& pos, switch (command) { case DolphinContextMenu::OpenParentFolderInNewWindow: { - KRun::run("dolphin", KUrl::List() << item.url().upUrl(), this); + KRun::run("dolphin %u", KUrl::List() << item.url().upUrl(), this); break; } -- cgit v1.3 From bbf6c3af888c0c674fca58a3c10182082638f9c0 Mon Sep 17 00:00:00 2001 From: David Faure Date: Fri, 20 Jul 2012 12:09:04 +0200 Subject: Fix bug 303375 - Dots in directory names treated as file extension. Patch by Emmanuel Pescosta BUG: 303375 REVIEW: 105575 FIXED-IN: 4.9.0 --- src/kitemviews/kfileitemlistwidget.cpp | 31 ++++++++++++++++++++++++++++++ src/kitemviews/kfileitemlistwidget.h | 5 +++++ src/kitemviews/kstandarditemlistwidget.cpp | 24 ++++++++--------------- src/kitemviews/kstandarditemlistwidget.h | 13 +++++++++++++ src/views/renamedialog.cpp | 4 +++- 5 files changed, 60 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kfileitemlistwidget.cpp b/src/kitemviews/kfileitemlistwidget.cpp index c99da383f..3a7724134 100644 --- a/src/kitemviews/kfileitemlistwidget.cpp +++ b/src/kitemviews/kfileitemlistwidget.cpp @@ -19,6 +19,7 @@ #include "kfileitemlistwidget.h" +#include #include #include #include @@ -101,4 +102,34 @@ QFont KFileItemListWidget::customizedFont(const QFont& baseFont) const return font; } +int KFileItemListWidget::selectionLength(const QString& text) const +{ + // Select the text without MIME-type extension + int selectionLength = text.length(); + + // If item is a directory, use the whole text length for + // selection (ignore all points) + if(data().value("isDir").toBool()) { + return selectionLength; + } + + const QString extension = KMimeType::extractKnownExtension(text); + if (extension.isEmpty()) { + // For an unknown extension just exclude the extension after + // the last point. This does not work for multiple extensions like + // *.tar.gz but usually this is anyhow a known extension. + selectionLength = text.lastIndexOf(QLatin1Char('.')); + + // If no point could be found, use whole text length for selection. + if (selectionLength < 1) { + selectionLength = text.length(); + } + + } else { + selectionLength -= extension.length() + 1; + } + + return selectionLength; +} + #include "kfileitemlistwidget.moc" diff --git a/src/kitemviews/kfileitemlistwidget.h b/src/kitemviews/kfileitemlistwidget.h index b0d8e1cd7..24c677828 100644 --- a/src/kitemviews/kfileitemlistwidget.h +++ b/src/kitemviews/kfileitemlistwidget.h @@ -48,6 +48,11 @@ protected: virtual bool isRoleRightAligned(const QByteArray& role) const; virtual bool isHidden() const; virtual QFont customizedFont(const QFont& baseFont) const; + + /** + * @return Selection length without MIME-type extension + */ + virtual int selectionLength(const QString& text) const; }; #endif diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp index d41b9161b..69c5602c7 100644 --- a/src/kitemviews/kstandarditemlistwidget.cpp +++ b/src/kitemviews/kstandarditemlistwidget.cpp @@ -581,6 +581,11 @@ void KStandardItemListWidget::siblingsInformationChanged(const QBitArray& curren m_dirtyLayout = true; } +int KStandardItemListWidget::selectionLength(const QString& text) const +{ + return text.length(); +} + void KStandardItemListWidget::editedRoleChanged(const QByteArray& current, const QByteArray& previous) { Q_UNUSED(previous); @@ -610,25 +615,12 @@ void KStandardItemListWidget::editedRoleChanged(const QByteArray& current, const QTextOption textOption = textInfo->staticText.textOption(); m_roleEditor->document()->setDefaultTextOption(textOption); - // Select the text without MIME-type extension - // TODO: This is file-item-specific and should be moved - // into KFileItemListWidget. - int selectionLength = text.length(); - - const QString extension = KMimeType::extractKnownExtension(text); - if (extension.isEmpty()) { - // For an unknown extension just exclude the extension after - // the last point. This does not work for multiple extensions like - // *.tar.gz but usually this is anyhow a known extension. - selectionLength = text.lastIndexOf(QLatin1Char('.')); - } else { - selectionLength -= extension.length() + 1; - } + const int textSelectionLength = selectionLength(text); - if (selectionLength > 0) { + if (textSelectionLength > 0) { QTextCursor cursor = m_roleEditor->textCursor(); cursor.movePosition(QTextCursor::StartOfBlock); - cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, selectionLength); + cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, textSelectionLength); m_roleEditor->setTextCursor(cursor); } diff --git a/src/kitemviews/kstandarditemlistwidget.h b/src/kitemviews/kstandarditemlistwidget.h index f559f3d22..462d83d0f 100644 --- a/src/kitemviews/kstandarditemlistwidget.h +++ b/src/kitemviews/kstandarditemlistwidget.h @@ -133,6 +133,19 @@ protected: */ QString roleText(const QByteArray& role, const QHash& values) const; + /** + * Fixes: + * Select the text without MIME-type extension + * This is file-item-specific and should be moved + * into KFileItemListWidget. + * + * Inherited classes can define, if the MIME-type extension + * should be selected or not. + * + * @return Selection length (with or without MIME-type extension) + */ + virtual int selectionLength(const QString& text) const; + virtual void dataChanged(const QHash& current, const QSet& roles = QSet()); virtual void visibleRolesChanged(const QList& current, const QList& previous); virtual void columnWidthChanged(const QByteArray& role, qreal current, qreal previous); diff --git a/src/views/renamedialog.cpp b/src/views/renamedialog.cpp index e232b9614..a91f91b1b 100644 --- a/src/views/renamedialog.cpp +++ b/src/views/renamedialog.cpp @@ -87,7 +87,9 @@ RenameDialog::RenameDialog(QWidget *parent, const KFileItemList& items) : if (m_renameOneItem) { const QString fileName = items.first().url().prettyUrl(); const QString extension = KMimeType::extractKnownExtension(fileName.toLower()); - if (extension.length() > 0) { + + // If the current item is a directory, select the whole file name. + if ((extension.length() > 0) && !items.first().isDir()) { // Don't select the extension selectionLength -= extension.length() + 1; } -- cgit v1.3 From 2517b66b796e62e03437dd42cf992d720b283e2a Mon Sep 17 00:00:00 2001 From: David Faure Date: Fri, 20 Jul 2012 12:11:45 +0200 Subject: Fix compiler warning, which spotted a real bug. ItemLayout is an enum, not a flag, so == is even more correct than '&'. --- src/views/dolphinitemlistview.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/views/dolphinitemlistview.cpp b/src/views/dolphinitemlistview.cpp index a031b1699..039b5f230 100644 --- a/src/views/dolphinitemlistview.cpp +++ b/src/views/dolphinitemlistview.cpp @@ -90,7 +90,7 @@ void DolphinItemListView::readSettings() setEnabledSelectionToggles(GeneralSettings::showSelectionToggle()); - const bool expandableFolders = (itemLayout() && KFileItemListView::DetailsLayout) && + const bool expandableFolders = (itemLayout() == KFileItemListView::DetailsLayout) && DetailsModeSettings::expandableFolders(); setSupportsItemExpanding(expandableFolders); -- cgit v1.3 From 9140d00259e250d3cfadb777ca4707f01c844b81 Mon Sep 17 00:00:00 2001 From: Amandeep Singh Date: Tue, 14 Aug 2012 20:27:35 +0530 Subject: Correcting code according to KDE Policy --- src/kitemviews/kitemlistselectionmanager.cpp | 1 + src/kitemviews/kitemlistviewaccessible.cpp | 50 ++++++++++++---------------- src/kitemviews/kitemlistviewaccessible.h | 20 +++++------ 3 files changed, 30 insertions(+), 41 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistselectionmanager.cpp b/src/kitemviews/kitemlistselectionmanager.cpp index d444bcffe..383914df0 100644 --- a/src/kitemviews/kitemlistselectionmanager.cpp +++ b/src/kitemviews/kitemlistselectionmanager.cpp @@ -22,6 +22,7 @@ ***************************************************************************/ #include "kitemlistselectionmanager.h" + #include "kitemmodelbase.h" #include diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index d0fd4f57a..529506cb9 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -2,7 +2,6 @@ #include "kitemlistcontroller.h" #include "kitemlistselectionmanager.h" #include "private/kitemlistviewlayouter.h" -#include #include #include @@ -25,10 +24,6 @@ KItemListViewAccessible::KItemListViewAccessible(KItemListView *view_) Q_ASSERT(view()); } -KItemListViewAccessible::~KItemListViewAccessible() -{ -} - void KItemListViewAccessible::modelReset() {} @@ -52,7 +47,7 @@ QAccessibleInterface *KItemListViewAccessible::caption() const QString KItemListViewAccessible::columnDescription(int) const { - return ""; + return QString(); } int KItemListViewAccessible::columnCount() const @@ -87,7 +82,7 @@ int KItemListViewAccessible::selectedRowCount() const QString KItemListViewAccessible::rowDescription(int) const { - return ""; + return QString(); } QList KItemListViewAccessible::selectedCells() const @@ -124,7 +119,7 @@ bool KItemListViewAccessible::isRowSelected(int) const return false; } -bool KItemListViewAccessible::selectRow(int row) +bool KItemListViewAccessible::selectRow(int) { return true; } @@ -186,16 +181,13 @@ int KItemListViewAccessible::childCount() const int KItemListViewAccessible::indexOfChild(const QAccessibleInterface *iface) const { const KItemListAccessibleCell *widget = static_cast(iface); - return widget->getIndex(); + return widget->index(); } QString KItemListViewAccessible::text(Text t, int child) const { Q_ASSERT(child == 0); - if (t == QAccessible::Description) { - return i18n("List of files present in the current directory"); - } - return i18n("File List"); + return QString(); } QRect KItemListViewAccessible::rect(int child) const @@ -247,7 +239,7 @@ bool KItemListViewAccessible::doAction(int, int, const QVariantList &) } #endif -// TABLE CELL +// Table Cell KItemListAccessibleCell::KItemListAccessibleCell(KItemListView *view, int index) : m_view(view) @@ -278,22 +270,22 @@ QList KItemListAccessibleCell::columnHeaderCells() const int KItemListAccessibleCell::columnIndex() const { - return view->layouter()->itemColumn(m_index); + return m_view->layouter()->itemColumn(m_index); } int KItemListAccessibleCell::rowIndex() const { - return view->layouter()->itemRow(m_index); + return m_view->layouter()->itemRow(m_index); } bool KItemListAccessibleCell::isSelected() const { - return view->controller()->selectionManager()->isSelected(m_index-1); + return m_view->controller()->selectionManager()->isSelected(m_index-1); } void KItemListAccessibleCell::rowColumnExtents(int *row, int *column, int *rowExtents, int *columnExtents, bool *selected) const { - KItemListViewLayouter* layouter = view->layouter(); + KItemListViewLayouter* layouter = m_view->layouter(); *row = layouter->itemRow(m_index); *column = layouter->itemColumn(m_index); *rowExtents = 1; @@ -303,7 +295,7 @@ void KItemListAccessibleCell::rowColumnExtents(int *row, int *column, int *rowEx QAccessibleTable2Interface* KItemListAccessibleCell::table() const { - return QAccessible::queryAccessibleInterface(view)->table2Interface(); + return QAccessible::queryAccessibleInterface(m_view)->table2Interface(); } QAccessible::Role KItemListAccessibleCell::role(int child) const @@ -320,14 +312,14 @@ QAccessible::State KItemListAccessibleCell::state(int child) const if (isSelected()) { st |= Selected; } - if (view->controller()->selectionManager()->currentItem() == m_index) { + if (m_view->controller()->selectionManager()->currentItem() == m_index) { st |= Focused; } st |= Selectable; st |= Focusable; - if (view->controller()->selectionBehavior() == KItemListController::MultiSelection){ + if (m_view->controller()->selectionBehavior() == KItemListController::MultiSelection){ st |= MultiSelectable; } @@ -341,12 +333,12 @@ bool KItemListAccessibleCell::isExpandable() const QRect KItemListAccessibleCell::rect(int) const { - QRect r = view->itemRect(m_index-1).toRect(); + QRect r = m_view->itemRect(m_index-1).toRect(); if (r.isNull()) { return QRect(); } - r.translate(view->mapToScene(QPointF(0.0, 0.0)).toPoint()); - r.translate(view->scene()->views()[0]->mapToGlobal(QPoint(0, 0))); + r.translate(m_view->mapToScene(QPointF(0.0, 0.0)).toPoint()); + r.translate(m_view->scene()->views()[0]->mapToGlobal(QPoint(0, 0))); return r; } @@ -354,7 +346,7 @@ QString KItemListAccessibleCell::text(QAccessible::Text t, int child) const { Q_ASSERT(child == 0); Q_UNUSED(child) - const QHash data = view->model()->data(m_index-1); + const QHash data = m_view->model()->data(m_index-1); switch (t) { case QAccessible::Value: case QAccessible::Name: @@ -373,18 +365,18 @@ void KItemListAccessibleCell::setText(QAccessible::Text /*t*/, int child, const bool KItemListAccessibleCell::isValid() const { - return view && (m_index > 0); + return m_view && (m_index > 0); } int KItemListAccessibleCell::navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const { if (relation == Ancestor && index == 1) { - *iface = new KItemListViewAccessible(view); + *iface = new KItemListViewAccessible(m_view); return 0; } *iface = 0; - if (!view) { + if (!m_view) { return -1; } @@ -395,7 +387,7 @@ int KItemListAccessibleCell::navigate(RelationFlag relation, int index, QAccessi } case Sibling: if (index > 0) { - QAccessibleInterface *parent = queryAccessibleInterface(view); + QAccessibleInterface *parent = queryAccessibleInterface(m_view); int ret = parent->navigate(QAccessible::Child, index, iface); delete parent; if (*iface) { diff --git a/src/kitemviews/kitemlistviewaccessible.h b/src/kitemviews/kitemlistviewaccessible.h index a858005a4..afc04797f 100644 --- a/src/kitemviews/kitemlistviewaccessible.h +++ b/src/kitemviews/kitemlistviewaccessible.h @@ -40,7 +40,7 @@ public: #endif QVariant invokeMethodEx(Method, int, const QVariantList &) { return QVariant(); } - // table2 interface + // Table2 interface virtual QAccessibleTable2CellInterface *cellAt(int row, int column) const; virtual QAccessibleInterface *caption() const; virtual QAccessibleInterface *summary() const; @@ -49,8 +49,6 @@ public: virtual int columnCount() const; virtual int rowCount() const; virtual QAccessible2::TableModelChange modelChange() const; - - //Table virtual void rowsInserted(const QModelIndex&, int, int) {} virtual void rowsRemoved(const QModelIndex&, int, int) {} virtual void columnsInserted(const QModelIndex&, int, int) {} @@ -58,7 +56,7 @@ public: 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 selectedColumnCount() const; virtual int selectedRowCount() const; @@ -76,8 +74,6 @@ public: protected: virtual void modelReset(); - -protected: inline QAccessibleTable2CellInterface *cell(int index) const; inline QAccessible::Role cellRole() const { return QAccessible::Cell; @@ -122,7 +118,7 @@ public: bool doAction(int action, int child, const QVariantList ¶ms); #endif - // cell interface + // Cell Interface virtual int columnExtent() const; virtual QList columnHeaderCells() const; virtual int columnIndex() const; @@ -134,7 +130,7 @@ public: virtual QAccessibleTable2Interface* table() const; inline int index() const { - return index; + return m_index; } private: @@ -149,10 +145,10 @@ class KItemListContainerAccessible : public QAccessibleWidgetEx Q_ACCESSIBLE_OBJECT public: explicit KItemListContainerAccessible(KItemListContainer*); - virtual ~KItemListContainerAccessible(); - int childCount () const; - int indexOfChild ( const QAccessibleInterface * child ) const; - int navigate ( RelationFlag relation, int entry, QAccessibleInterface ** target ) const; + virtual ~KItemListContainerAccessible(); + int childCount () const; + int indexOfChild ( const QAccessibleInterface * child ) const; + int navigate ( RelationFlag relation, int entry, QAccessibleInterface ** target ) const; private: inline KItemListContainer *container() const -- cgit v1.3 From 0ae031a4e6bdd702da573ac7ce048b6cf825e32e Mon Sep 17 00:00:00 2001 From: Amandeep Singh Date: Tue, 14 Aug 2012 22:52:21 +0530 Subject: Modify code according to dolphin policy --- src/CMakeLists.txt | 2 +- src/kitemviews/kitemlistview.cpp | 5 ++ src/kitemviews/kitemlistview.h | 5 +- src/kitemviews/kitemlistviewaccessible.cpp | 119 +++++++++++++++++++---------- src/kitemviews/kitemlistviewaccessible.h | 72 +++++++---------- 5 files changed, 113 insertions(+), 90 deletions(-) (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1a0460e87..624b30704 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -34,8 +34,8 @@ set(dolphinprivate_LIB_SRCS kitemviews/kitemmodelbase.cpp kitemviews/kstandarditem.cpp kitemviews/kstandarditemlistgroupheader.cpp - kitemviews/kstandarditemlistview.cpp kitemviews/kstandarditemlistwidget.cpp + kitemviews/kstandarditemlistview.cpp kitemviews/kstandarditemmodel.cpp kitemviews/private/kfileitemclipboard.cpp kitemviews/private/kfileitemmodeldirlister.cpp diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index 48dab4b04..07150a0d3 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -659,6 +659,11 @@ void KItemListView::paint(QPainter* painter, const QStyleOptionGraphicsItem* opt } } +KItemListViewLayouter* layouter() const +{ + return m_layouter; +} + void KItemListView::setItemSize(const QSizeF& size) { const QSizeF previousSize = m_itemSize; diff --git a/src/kitemviews/kitemlistview.h b/src/kitemviews/kitemlistview.h index d4602d729..4460a36a5 100644 --- a/src/kitemviews/kitemlistview.h +++ b/src/kitemviews/kitemlistview.h @@ -278,10 +278,7 @@ public: /** * @return The Layouter for the view */ - inline KItemListViewLayouter *layouter() const - { - return m_layouter; - } + inline KItemListViewLayouter* layouter() const; signals: void scrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous); diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index 529506cb9..c0b64fcdc 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -3,7 +3,6 @@ #include "kitemlistselectionmanager.h" #include "private/kitemlistviewlayouter.h" -#include #include #include #include @@ -13,13 +12,13 @@ #ifndef QT_NO_ACCESSIBILITY -KItemListView *KItemListViewAccessible::view() const +KItemListView* KItemListViewAccessible::view() const { return qobject_cast(object()); } -KItemListViewAccessible::KItemListViewAccessible(KItemListView *view_) - : QAccessibleObjectEx(view_) +KItemListViewAccessible::KItemListViewAccessible(KItemListView* view_) : + QAccessibleObjectEx(view_) { Q_ASSERT(view()); } @@ -27,7 +26,12 @@ KItemListViewAccessible::KItemListViewAccessible(KItemListView *view_) void KItemListViewAccessible::modelReset() {} -QAccessibleTable2CellInterface *KItemListViewAccessible::cell(int index) const +QAccessible::Role KItemListViewAccessible::cellRole() const +{ + return QAccessible::Cell; +} + +QAccessibleTable2CellInterface* KItemListViewAccessible::cell(int index) const { if (index > 0) { return new KItemListAccessibleCell(view(), index); @@ -35,12 +39,17 @@ QAccessibleTable2CellInterface *KItemListViewAccessible::cell(int index) const return 0; } -QAccessibleTable2CellInterface *KItemListViewAccessible::cellAt(int row, int column) const +QVariant KItemListViewAccessible::invokeMethodEx(Method, int, const QVariantList &) { - return cell(column * (row - 1) + column) ; + return QVariant(); } -QAccessibleInterface *KItemListViewAccessible::caption() const +QAccessibleTable2CellInterface* KItemListViewAccessible::cellAt(int row, int column) const +{ + return cell(column* (row - 1) + column) ; +} + +QAccessibleInterface* KItemListViewAccessible::caption() const { return 0; } @@ -104,7 +113,7 @@ QList KItemListViewAccessible::selectedRows() const return QList(); } -QAccessibleInterface *KItemListViewAccessible::summary() const +QAccessibleInterface* KItemListViewAccessible::summary() const { return 0; } @@ -142,7 +151,6 @@ bool KItemListViewAccessible::unselectColumn(int) QAccessible2::TableModelChange KItemListViewAccessible::modelChange() const { QAccessible2::TableModelChange change; - // FIXME return change; } @@ -158,7 +166,7 @@ QAccessible::Role KItemListViewAccessible::role(int child) const QAccessible::State KItemListViewAccessible::state(int child) const { if (child) { - QAccessibleInterface *iface; + QAccessibleInterface* iface; navigate(Child,child,&iface); if (iface) { return iface->state(0); @@ -175,16 +183,16 @@ int KItemListViewAccessible::childAt(int x, int y) const int KItemListViewAccessible::childCount() const { - return rowCount() * columnCount(); + return view()->model()->count(); } -int KItemListViewAccessible::indexOfChild(const QAccessibleInterface *iface) const +int KItemListViewAccessible::indexOfChild(const QAccessibleInterface* iface) const { - const KItemListAccessibleCell *widget = static_cast(iface); + const KItemListAccessibleCell* widget = static_cast(iface); return widget->index(); } -QString KItemListViewAccessible::text(Text t, int child) const +QString KItemListViewAccessible::text(Text , int child) const { Q_ASSERT(child == 0); return QString(); @@ -201,7 +209,7 @@ QRect KItemListViewAccessible::rect(int child) const return viewRect.translated(origin); } -int KItemListViewAccessible::navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const +int KItemListViewAccessible::navigate(RelationFlag relation, int index, QAccessibleInterface* *iface) const { *iface = 0; switch (relation) { @@ -219,31 +227,35 @@ int KItemListViewAccessible::navigate(RelationFlag relation, int index, QAccessi return -1; } -QAccessible::Relation KItemListViewAccessible::relationTo(int, const QAccessibleInterface *, int) const +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 -KItemListAccessibleCell::KItemListAccessibleCell(KItemListView *view, int index) - : m_view(view) - , m_index(index) +KItemListAccessibleCell::KItemListAccessibleCell(KItemListView* view, int index) : + m_view(view), + m_index(index) { Q_ASSERT(index > 0); } @@ -283,7 +295,7 @@ bool KItemListAccessibleCell::isSelected() const return m_view->controller()->selectionManager()->isSelected(m_index-1); } -void KItemListAccessibleCell::rowColumnExtents(int *row, int *column, int *rowExtents, int *columnExtents, bool *selected) const +void KItemListAccessibleCell::rowColumnExtents(int* row, int* column, int* rowExtents, int* columnExtents, bool* selected) const { KItemListViewLayouter* layouter = m_view->layouter(); *row = layouter->itemRow(m_index); @@ -307,23 +319,23 @@ QAccessible::Role KItemListAccessibleCell::role(int child) const QAccessible::State KItemListAccessibleCell::state(int child) const { Q_ASSERT(child == 0); - QAccessible::State st = Normal; + QAccessible::State state = Normal; if (isSelected()) { - st |= Selected; + state |= Selected; } if (m_view->controller()->selectionManager()->currentItem() == m_index) { - st |= Focused; + state |= Focused; } - st |= Selectable; - st |= Focusable; + state |= Selectable; + state |= Focusable; if (m_view->controller()->selectionBehavior() == KItemListController::MultiSelection){ - st |= MultiSelectable; + state |= MultiSelectable; } - return st; + return state; } bool KItemListAccessibleCell::isExpandable() const @@ -333,13 +345,13 @@ bool KItemListAccessibleCell::isExpandable() const QRect KItemListAccessibleCell::rect(int) const { - QRect r = m_view->itemRect(m_index-1).toRect(); - if (r.isNull()) { + QRect rect = m_view->itemRect(m_index-1).toRect(); + if (rect.isNull()) { return QRect(); } - r.translate(m_view->mapToScene(QPointF(0.0, 0.0)).toPoint()); - r.translate(m_view->scene()->views()[0]->mapToGlobal(QPoint(0, 0))); - return r; + rect.translate(m_view->mapToScene(QPointF(0.0, 0.0)).toPoint()); + rect.translate(m_view->scene()->views()[0]->mapToGlobal(QPoint(0, 0))); + return rect; } QString KItemListAccessibleCell::text(QAccessible::Text t, int child) const @@ -360,7 +372,6 @@ QString KItemListAccessibleCell::text(QAccessible::Text t, int child) const void KItemListAccessibleCell::setText(QAccessible::Text /*t*/, int child, const QString &/*text*/) { Q_ASSERT(child == 0); - // FIXME - is this even allowed on the KItemListWidget? } bool KItemListAccessibleCell::isValid() const @@ -368,7 +379,22 @@ bool KItemListAccessibleCell::isValid() const return m_view && (m_index > 0); } -int KItemListAccessibleCell::navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const +int KItemListAccessibleCell::childAt(int, int) const +{ + return 0; +} + +int KItemListAccessibleCell::childCount() const +{ + return 0; +} + +int KItemListAccessibleCell::indexOfChild(const QAccessibleInterface* child) const +{ + return -1; +} + +int KItemListAccessibleCell::navigate(RelationFlag relation, int index, QAccessibleInterface* *iface) const { if (relation == Ancestor && index == 1) { *iface = new KItemListViewAccessible(m_view); @@ -387,7 +413,7 @@ int KItemListAccessibleCell::navigate(RelationFlag relation, int index, QAccessi } case Sibling: if (index > 0) { - QAccessibleInterface *parent = queryAccessibleInterface(m_view); + QAccessibleInterface* parent = queryAccessibleInterface(m_view); int ret = parent->navigate(QAccessible::Child, index, iface); delete parent; if (*iface) { @@ -402,7 +428,7 @@ int KItemListAccessibleCell::navigate(RelationFlag relation, int index, QAccessi return -1; } -QAccessible::Relation KItemListAccessibleCell::relationTo(int child, const QAccessibleInterface *, int otherChild) const +QAccessible::Relation KItemListAccessibleCell::relationTo(int child, const QAccessibleInterface* , int otherChild) const { Q_ASSERT(child == 0); Q_ASSERT(otherChild == 0); @@ -410,6 +436,7 @@ QAccessible::Relation KItemListAccessibleCell::relationTo(int child, const QAcce } #ifndef QT_NO_ACTION + int KItemListAccessibleCell::userActionCount(int) const { return 0; @@ -427,8 +454,18 @@ bool KItemListAccessibleCell::doAction(int, int, const QVariantList &) #endif -KItemListContainerAccessible::KItemListContainerAccessible(KItemListContainer *container) - : QAccessibleWidgetEx(container) +int KItemListAccessibleCell::index() const +{ + return m_index; +} + +QObject* KItemListAccessibleCell::object() const +{ + return 0; +} + +KItemListContainerAccessible::KItemListContainerAccessible(KItemListContainer* container) : + QAccessibleWidgetEx(container) {} KItemListContainerAccessible::~KItemListContainerAccessible () @@ -439,7 +476,7 @@ int KItemListContainerAccessible::childCount () const return 1; } -int KItemListContainerAccessible::indexOfChild ( const QAccessibleInterface * child ) const +int KItemListContainerAccessible::indexOfChild ( const QAccessibleInterface* child ) const { if (child->object() == container()->controller()->view()) { return 1; @@ -447,7 +484,7 @@ int KItemListContainerAccessible::indexOfChild ( const QAccessibleInterface * ch return -1; } -int KItemListContainerAccessible::navigate ( QAccessible::RelationFlag relation, int index, QAccessibleInterface ** target ) const +int KItemListContainerAccessible::navigate ( QAccessible::RelationFlag relation, int index, QAccessibleInterface** target ) const { if (relation == QAccessible::Child) { *target = new KItemListViewAccessible(container()->controller()->view()); diff --git a/src/kitemviews/kitemlistviewaccessible.h b/src/kitemviews/kitemlistviewaccessible.h index afc04797f..bd1ca254d 100644 --- a/src/kitemviews/kitemlistviewaccessible.h +++ b/src/kitemviews/kitemlistviewaccessible.h @@ -5,6 +5,7 @@ #include #include #include +#include #include "kitemlistview.h" #include "kitemlistcontainer.h" @@ -17,7 +18,7 @@ class KItemListViewAccessible: public QAccessibleTable2Interface, public QAccess { Q_ACCESSIBLE_OBJECT public: - explicit KItemListViewAccessible(KItemListView *view); + explicit KItemListViewAccessible(KItemListView* view); virtual ~KItemListViewAccessible(); @@ -28,22 +29,22 @@ public: int childAt(int x, int y) const; int childCount() const; - int indexOfChild(const QAccessibleInterface *) const; + int indexOfChild(const QAccessibleInterface* ) const; - int navigate(RelationFlag relation, int index, QAccessibleInterface **iface) const; - Relation relationTo(int child, const QAccessibleInterface *other, int otherChild) const; + int navigate(RelationFlag relation, int index, QAccessibleInterface** iface) const; + Relation relationTo(int child, const QAccessibleInterface* other, int otherChild) 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 ¶ms); #endif - QVariant invokeMethodEx(Method, int, const QVariantList &) { return QVariant(); } + QVariant invokeMethodEx(Method, int, const QVariantList &); // Table2 interface - virtual QAccessibleTable2CellInterface *cellAt(int row, int column) const; - virtual QAccessibleInterface *caption() const; - virtual QAccessibleInterface *summary() const; + 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; @@ -70,46 +71,31 @@ public: virtual bool unselectRow(int row); virtual bool unselectColumn(int column); - KItemListView *view() const; + KItemListView* view() const; protected: virtual void modelReset(); - inline QAccessibleTable2CellInterface *cell(int index) const; - inline QAccessible::Role cellRole() const { - return QAccessible::Cell; - } + inline QAccessibleTable2CellInterface* cell(int index) const; + inline QAccessible::Role cellRole() const; }; class KItemListAccessibleCell: public QAccessibleTable2CellInterface { public: - KItemListAccessibleCell(KItemListView *view, int m_index); + KItemListAccessibleCell(KItemListView* view, int m_index); - QObject *object() const - { - return 0; - } + QObject* object() const; Role role(int) const; State state(int) const; QRect rect(int) const; bool isValid() const; - - inline int childAt(int, int) const { - return 0; - } - inline int childCount() const { - return 0; - } - inline int indexOfChild(const QAccessibleInterface *) const { - return -1; - } - + int childAt(int, int) const; + int childCount() const; + int indexOfChild(const QAccessibleInterface*) const; QString text(Text t, int child) const; - void setText(Text t, int child, const QString &text); - - int navigate(RelationFlag relation, int m_index, QAccessibleInterface **iface) const; - Relation relationTo(int child, const QAccessibleInterface *other, int otherChild) const; - + void setText(Text t, int child, const QString& text); + int navigate(RelationFlag relation, int m_index, QAccessibleInterface** iface) const; + Relation relationTo(int child, const QAccessibleInterface* other, int otherChild) const; bool isExpandable() const; #ifndef QT_NO_ACTION @@ -120,18 +106,16 @@ public: // Cell Interface virtual int columnExtent() const; - virtual QList columnHeaderCells() const; + virtual QList columnHeaderCells() const; virtual int columnIndex() const; virtual int rowExtent() const; - virtual QList rowHeaderCells() const; + virtual QList rowHeaderCells() const; virtual int rowIndex() const; virtual bool isSelected() const; - virtual void rowColumnExtents(int *row, int *column, int *rowExtents, int *columnExtents, bool *selected) const; + virtual void rowColumnExtents(int* row, int* column, int* rowExtents, int* columnExtents, bool* selected) const; virtual QAccessibleTable2Interface* table() const; - inline int index() const { - return m_index; - } + inline int index() const; private: QPointer m_view; @@ -147,13 +131,13 @@ public: explicit KItemListContainerAccessible(KItemListContainer*); virtual ~KItemListContainerAccessible(); int childCount () const; - int indexOfChild ( const QAccessibleInterface * child ) const; - int navigate ( RelationFlag relation, int entry, QAccessibleInterface ** target ) const; + int indexOfChild ( const QAccessibleInterface* child ) const; + int navigate ( RelationFlag relation, int entry, QAccessibleInterface** target ) const; private: - inline KItemListContainer *container() const + inline KItemListContainer* container() const { - return static_cast(object()); + return static_cast(object()); } }; -- cgit v1.3 From 28239e6ca82961983f4421a2d485296ef546b05a Mon Sep 17 00:00:00 2001 From: Amandeep Singh Date: Wed, 15 Aug 2012 12:27:00 +0530 Subject: Removing in-class functions and unnecessary destructor --- src/kitemviews/kitemlistview.cpp | 2 +- src/kitemviews/kitemlistview.h | 2 +- src/kitemviews/kitemlistviewaccessible.cpp | 1 + src/kitemviews/kitemlistviewaccessible.h | 2 -- 4 files changed, 3 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index 07150a0d3..681b37b5f 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -659,7 +659,7 @@ void KItemListView::paint(QPainter* painter, const QStyleOptionGraphicsItem* opt } } -KItemListViewLayouter* layouter() const +KItemListViewLayouter* KItemListView::layouter() const { return m_layouter; } diff --git a/src/kitemviews/kitemlistview.h b/src/kitemviews/kitemlistview.h index 4460a36a5..2c30c6f43 100644 --- a/src/kitemviews/kitemlistview.h +++ b/src/kitemviews/kitemlistview.h @@ -278,7 +278,7 @@ public: /** * @return The Layouter for the view */ - inline KItemListViewLayouter* layouter() const; + KItemListViewLayouter* layouter() const; signals: void scrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous); diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index c0b64fcdc..70cf0896e 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -464,6 +464,7 @@ QObject* KItemListAccessibleCell::object() const return 0; } +// Container Interface KItemListContainerAccessible::KItemListContainerAccessible(KItemListContainer* container) : QAccessibleWidgetEx(container) {} diff --git a/src/kitemviews/kitemlistviewaccessible.h b/src/kitemviews/kitemlistviewaccessible.h index bd1ca254d..821b483a1 100644 --- a/src/kitemviews/kitemlistviewaccessible.h +++ b/src/kitemviews/kitemlistviewaccessible.h @@ -20,8 +20,6 @@ class KItemListViewAccessible: public QAccessibleTable2Interface, public QAccess public: explicit KItemListViewAccessible(KItemListView* view); - virtual ~KItemListViewAccessible(); - Role role(int child) const; State state(int child) const; QString text(Text t, int child) const; -- cgit v1.3 From 4196026cd8a625e8c091f149a9cef0aded416fe7 Mon Sep 17 00:00:00 2001 From: Amandeep Singh Date: Sat, 22 Sep 2012 14:27:17 +0530 Subject: Making code confirm to policy --- src/kitemviews/kitemlistview.cpp | 7 +++++-- src/kitemviews/kitemlistviewaccessible.cpp | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index 681b37b5f..580cf5bbe 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -55,9 +55,12 @@ namespace { } #ifndef QT_NO_ACCESSIBILITY -QAccessibleInterface* accessibleViewFactory(const QString &key, QObject *object) +QAccessibleInterface* accessibleInterfaceFactory(const QString &key, QObject *object) { Q_UNUSED(key) + if (KItemListContainer*view = qobject_cast(object)) { + return new KItemListContainerAccessible(view); + } if (KItemListView *view = qobject_cast(object)) { return new KItemListViewAccessible(view); } @@ -125,7 +128,7 @@ KItemListView::KItemListView(QGraphicsWidget* parent) : m_header = new KItemListHeader(this); #ifndef QT_NO_ACCESSIBILITY - QAccessible::installFactory(accessibleViewFactory); + QAccessible::installFactory(accessibleInterfaceFactory); #endif } diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index 70cf0896e..48bafc39a 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -46,7 +46,7 @@ QVariant KItemListViewAccessible::invokeMethodEx(Method, int, const QVariantList QAccessibleTable2CellInterface* KItemListViewAccessible::cellAt(int row, int column) const { - return cell(column* (row - 1) + column) ; + return cell(column * (row-1) + column) ; } QAccessibleInterface* KItemListViewAccessible::caption() const -- cgit v1.3 From 990c7d260ffdca52496d05b88b763ab4566b8c0a Mon Sep 17 00:00:00 2001 From: Amandeep Singh Date: Sat, 22 Sep 2012 23:44:42 +0530 Subject: Returning correct rowCount. --- src/kitemviews/kitemlistviewaccessible.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index 48bafc39a..80a6d1cf9 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -66,8 +66,14 @@ int KItemListViewAccessible::columnCount() const int KItemListViewAccessible::rowCount() const { + if(columnCount()<=0) { + return 0; + } int itemCount = view()->model()->count(); int rowCount = itemCount / columnCount(); + if(rowCount <= 0){ + return 0; + } if (itemCount % rowCount) { ++rowCount; } @@ -257,7 +263,7 @@ KItemListAccessibleCell::KItemListAccessibleCell(KItemListView* view, int index) m_view(view), m_index(index) { - Q_ASSERT(index > 0); + Q_ASSERT(index >= 0); } int KItemListAccessibleCell::columnExtent() const -- cgit v1.3