diff options
| author | Amandeep Singh <[email protected]> | 2012-09-22 23:48:54 +0530 |
|---|---|---|
| committer | Amandeep Singh <[email protected]> | 2012-09-22 23:49:15 +0530 |
| commit | 1b5b731621ea79cff04f745890693ebe060515cc (patch) | |
| tree | 0c1affff815043ddffa3151e90e36fe83fc19442 /src | |
| parent | f1b822d926316d739ec10d8b05917b6b0c2d92b5 (diff) | |
| parent | 990c7d260ffdca52496d05b88b763ab4566b8c0a (diff) | |
Merge branch for accessibility
Diffstat (limited to 'src')
| -rw-r--r-- | src/CMakeLists.txt | 3 | ||||
| -rw-r--r-- | src/kitemviews/kitemlistcontroller.cpp | 4 | ||||
| -rw-r--r-- | src/kitemviews/kitemlistview.cpp | 27 | ||||
| -rw-r--r-- | src/kitemviews/kitemlistview.h | 5 | ||||
| -rw-r--r-- | src/kitemviews/kitemlistviewaccessible.cpp | 503 | ||||
| -rw-r--r-- | src/kitemviews/kitemlistviewaccessible.h | 144 | ||||
| -rw-r--r-- | src/kitemviews/private/kitemlistviewlayouter.h | 5 | ||||
| -rw-r--r-- | src/tests/CMakeLists.txt | 2 |
8 files changed, 692 insertions, 1 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b7eec5a65..a914051ec 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -29,12 +29,13 @@ 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 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/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp index 5a7175e4c..c16488f9e 100644 --- a/src/kitemviews/kitemlistcontroller.cpp +++ b/src/kitemviews/kitemlistcontroller.cpp @@ -40,6 +40,7 @@ #include <QGraphicsView> #include <QMimeData> #include <QTimer> +#include <QAccessible> KItemListController::KItemListController(KItemModelBase* model, KItemListView* view, QObject* parent) : QObject(parent), @@ -887,6 +888,8 @@ bool KItemListController::dropEvent(QGraphicsSceneDragDropEvent* event, const QT emit itemDropEvent(m_view->itemAt(pos), event); } + QAccessible::updateAccessibility(view(), 0, QAccessible::DragDropEnd); + return true; } @@ -1134,6 +1137,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/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index 72b3fd8fc..580cf5bbe 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -43,6 +43,8 @@ #include <QStyleOptionRubberBand> #include <QTimer> +#include "kitemlistviewaccessible.h" + namespace { // Time in ms until reaching the autoscroll margin triggers // an initial autoscrolling @@ -52,6 +54,20 @@ namespace { const int RepeatingAutoScrollDelay = 1000 / 60; } +#ifndef QT_NO_ACCESSIBILITY +QAccessibleInterface* accessibleInterfaceFactory(const QString &key, QObject *object) +{ + Q_UNUSED(key) + if (KItemListContainer*view = qobject_cast<KItemListContainer*>(object)) { + return new KItemListContainerAccessible(view); + } + if (KItemListView *view = qobject_cast<KItemListView*>(object)) { + return new KItemListViewAccessible(view); + } + return 0; +} +#endif + KItemListView::KItemListView(QGraphicsWidget* parent) : QGraphicsWidget(parent), m_enabledSelectionToggles(false), @@ -110,6 +126,11 @@ KItemListView::KItemListView(QGraphicsWidget* parent) : m_headerWidget->setVisible(false); m_header = new KItemListHeader(this); + +#ifndef QT_NO_ACCESSIBILITY + QAccessible::installFactory(accessibleInterfaceFactory); +#endif + } KItemListView::~KItemListView() @@ -641,6 +662,11 @@ void KItemListView::paint(QPainter* painter, const QStyleOptionGraphicsItem* opt } } +KItemListViewLayouter* KItemListView::layouter() const +{ + return m_layouter; +} + void KItemListView::setItemSize(const QSizeF& size) { const QSizeF previousSize = m_itemSize; @@ -1251,6 +1277,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<int>& current, const QSet<int>& previous) diff --git a/src/kitemviews/kitemlistview.h b/src/kitemviews/kitemlistview.h index 5723b9aaa..2c30c6f43 100644 --- a/src/kitemviews/kitemlistview.h +++ b/src/kitemviews/kitemlistview.h @@ -275,6 +275,11 @@ public: */ virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0); + /** + * @return The Layouter for the view + */ + KItemListViewLayouter* layouter() const; + 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..80a6d1cf9 --- /dev/null +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -0,0 +1,503 @@ +#include "kitemlistviewaccessible.h" +#include "kitemlistcontroller.h" +#include "kitemlistselectionmanager.h" +#include "private/kitemlistviewlayouter.h" + +#include <QtGui/qaccessible2.h> +#include <qgraphicsscene.h> +#include <qgraphicsview.h> + +#include <KDebug> +#include <QHash> + +#ifndef QT_NO_ACCESSIBILITY + +KItemListView* KItemListViewAccessible::view() const +{ + return qobject_cast<KItemListView*>(object()); +} + +KItemListViewAccessible::KItemListViewAccessible(KItemListView* view_) : + QAccessibleObjectEx(view_) +{ + Q_ASSERT(view()); +} + +void KItemListViewAccessible::modelReset() +{} + +QAccessible::Role KItemListViewAccessible::cellRole() const +{ + return QAccessible::Cell; +} + +QAccessibleTable2CellInterface* KItemListViewAccessible::cell(int index) const +{ + if (index > 0) { + return new KItemListAccessibleCell(view(), index); + } + return 0; +} + +QVariant KItemListViewAccessible::invokeMethodEx(Method, int, const QVariantList &) +{ + return QVariant(); +} + +QAccessibleTable2CellInterface* KItemListViewAccessible::cellAt(int row, int column) const +{ + return cell(column * (row-1) + column) ; +} + +QAccessibleInterface* KItemListViewAccessible::caption() const +{ + return 0; +} + +QString KItemListViewAccessible::columnDescription(int) const +{ + return QString(); +} + +int KItemListViewAccessible::columnCount() const +{ + return view()->layouter()->columnCount(); +} + +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; + } + 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 QString(); +} + +QList<QAccessibleTable2CellInterface*> KItemListViewAccessible::selectedCells() const +{ + QList<QAccessibleTable2CellInterface*> cells; + Q_FOREACH (int index, view()->controller()->selectionManager()->selectedItems()) { + cells.append(cell(index)); + } + return cells; +} + +QList<int> KItemListViewAccessible::selectedColumns() const +{ + return QList<int>(); +} + +QList<int> KItemListViewAccessible::selectedRows() const +{ + return QList<int>(); +} + +QAccessibleInterface* KItemListViewAccessible::summary() const +{ + return 0; +} + +bool KItemListViewAccessible::isColumnSelected(int) const +{ + return false; +} + +bool KItemListViewAccessible::isRowSelected(int) const +{ + return false; +} + +bool KItemListViewAccessible::selectRow(int) +{ + return true; +} + +bool KItemListViewAccessible::selectColumn(int) +{ + return true; +} + +bool KItemListViewAccessible::unselectRow(int) +{ + return true; +} + +bool KItemListViewAccessible::unselectColumn(int) +{ + return true; +} + +QAccessible2::TableModelChange KItemListViewAccessible::modelChange() const +{ + QAccessible2::TableModelChange change; + 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 +{ + if (child) { + QAccessibleInterface* iface; + navigate(Child,child,&iface); + if (iface) { + return iface->state(0); + } + } + return QAccessible::Normal | QAccessible::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 view()->model()->count(); +} + +int KItemListViewAccessible::indexOfChild(const QAccessibleInterface* iface) const +{ + const KItemListAccessibleCell* widget = static_cast<const KItemListAccessibleCell*>(iface); + return widget->index(); +} + +QString KItemListViewAccessible::text(Text , int child) const +{ + Q_ASSERT(child == 0); + return QString(); +} + +QRect KItemListViewAccessible::rect(int child) const +{ + Q_UNUSED(child) + if (!view()->isVisible()) { + return QRect(); + } + 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 +{ + *iface = 0; + switch (relation) { + 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 + +KItemListAccessibleCell::KItemListAccessibleCell(KItemListView* view, int index) : + m_view(view), + m_index(index) +{ + Q_ASSERT(index >= 0); +} + +int KItemListAccessibleCell::columnExtent() const +{ + return 1; +} + +int KItemListAccessibleCell::rowExtent() const +{ + return 1; +} + +QList<QAccessibleInterface*> KItemListAccessibleCell::rowHeaderCells() const +{ + return QList<QAccessibleInterface*>(); +} + +QList<QAccessibleInterface*> KItemListAccessibleCell::columnHeaderCells() const +{ + return QList<QAccessibleInterface*>(); +} + +int KItemListAccessibleCell::columnIndex() const +{ + return m_view->layouter()->itemColumn(m_index); +} + +int KItemListAccessibleCell::rowIndex() const +{ + return m_view->layouter()->itemRow(m_index); +} + +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 +{ + KItemListViewLayouter* layouter = m_view->layouter(); + *row = layouter->itemRow(m_index); + *column = layouter->itemColumn(m_index); + *rowExtents = 1; + *columnExtents = 1; + *selected = isSelected(); +} + +QAccessibleTable2Interface* KItemListAccessibleCell::table() const +{ + return QAccessible::queryAccessibleInterface(m_view)->table2Interface(); +} + +QAccessible::Role KItemListAccessibleCell::role(int child) const +{ + Q_ASSERT(child == 0); + return QAccessible::Cell; +} + +QAccessible::State KItemListAccessibleCell::state(int child) const +{ + Q_ASSERT(child == 0); + QAccessible::State state = Normal; + + if (isSelected()) { + state |= Selected; + } + if (m_view->controller()->selectionManager()->currentItem() == m_index) { + state |= Focused; + } + + state |= Selectable; + state |= Focusable; + + if (m_view->controller()->selectionBehavior() == KItemListController::MultiSelection){ + state |= MultiSelectable; + } + + return state; +} + +bool KItemListAccessibleCell::isExpandable() const +{ + return false; +} + +QRect KItemListAccessibleCell::rect(int) const +{ + QRect rect = m_view->itemRect(m_index-1).toRect(); + if (rect.isNull()) { + return QRect(); + } + 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 +{ + Q_ASSERT(child == 0); + Q_UNUSED(child) + const QHash<QByteArray, QVariant> data = m_view->model()->data(m_index-1); + switch (t) { + case QAccessible::Value: + case QAccessible::Name: + return data["text"].toString(); + default: + break; + } + return QString(); +} + +void KItemListAccessibleCell::setText(QAccessible::Text /*t*/, int child, const QString &/*text*/) +{ + Q_ASSERT(child == 0); +} + +bool KItemListAccessibleCell::isValid() const +{ + return m_view && (m_index > 0); +} + +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); + return 0; + } + + *iface = 0; + if (!m_view) { + return -1; + } + + switch (relation) { + + case Child: { + return -1; + } + case Sibling: + if (index > 0) { + QAccessibleInterface* parent = queryAccessibleInterface(m_view); + int ret = parent->navigate(QAccessible::Child, index, iface); + delete parent; + if (*iface) { + return ret; + } + } + return -1; + default: + break; + } + + return -1; +} + +QAccessible::Relation KItemListAccessibleCell::relationTo(int child, const QAccessibleInterface* , int otherChild) const +{ + Q_ASSERT(child == 0); + Q_ASSERT(otherChild == 0); + return QAccessible::Unrelated; +} + +#ifndef QT_NO_ACTION + +int KItemListAccessibleCell::userActionCount(int) const +{ + return 0; +} + +QString KItemListAccessibleCell::actionText(int, Text, int) const +{ + return QString(); +} + +bool KItemListAccessibleCell::doAction(int, int, const QVariantList &) +{ + return false; +} + +#endif + +int KItemListAccessibleCell::index() const +{ + return m_index; +} + +QObject* KItemListAccessibleCell::object() const +{ + return 0; +} + +// Container Interface +KItemListContainerAccessible::KItemListContainerAccessible(KItemListContainer* container) : + QAccessibleWidgetEx(container) +{} + +KItemListContainerAccessible::~KItemListContainerAccessible () +{} + +int KItemListContainerAccessible::childCount () const +{ + return 1; +} + +int KItemListContainerAccessible::indexOfChild ( const QAccessibleInterface* child ) const +{ + if (child->object() == container()->controller()->view()) { + return 1; + } + return -1; +} + +int KItemListContainerAccessible::navigate ( QAccessible::RelationFlag relation, int index, QAccessibleInterface** target ) const +{ + if (relation == QAccessible::Child) { + *target = new KItemListViewAccessible(container()->controller()->view()); + return 0; + } + return QAccessibleWidgetEx::navigate(relation, index, target); +} + +#endif // QT_NO_ACCESSIBILITY diff --git a/src/kitemviews/kitemlistviewaccessible.h b/src/kitemviews/kitemlistviewaccessible.h new file mode 100644 index 000000000..821b483a1 --- /dev/null +++ b/src/kitemviews/kitemlistviewaccessible.h @@ -0,0 +1,144 @@ +#ifndef ACCESSIBLE_ITEMVIEWS_H +#define ACCESSIBLE_ITEMVIEWS_H + +#include "QtCore/qpointer.h" +#include <QtGui/qaccessible.h> +#include <QtGui/qaccessible2.h> +#include <QtGui/qaccessiblewidget.h> +#include <QtGui/qaccessibleobject.h> + +#include "kitemlistview.h" +#include "kitemlistcontainer.h" + +#ifndef QT_NO_ACCESSIBILITY + +class KItemListAccessibleCell; + +class KItemListViewAccessible: public QAccessibleTable2Interface, public QAccessibleObjectEx +{ + Q_ACCESSIBLE_OBJECT +public: + explicit KItemListViewAccessible(KItemListView* view); + + 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 &); + + // 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; + 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<QAccessibleTable2CellInterface*> selectedCells() const; + virtual QList<int> selectedColumns() const; + virtual QList<int> 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(); + inline QAccessibleTable2CellInterface* cell(int index) const; + inline QAccessible::Role cellRole() const; +}; + +class KItemListAccessibleCell: public QAccessibleTable2CellInterface +{ +public: + KItemListAccessibleCell(KItemListView* view, int m_index); + + QObject* object() const; + Role role(int) const; + State state(int) const; + QRect rect(int) const; + bool isValid() const; + 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; + 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<QAccessibleInterface* > columnHeaderCells() const; + virtual int columnIndex() const; + virtual int rowExtent() const; + virtual QList<QAccessibleInterface* > 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 index() const; + +private: + QPointer<KItemListView> m_view; + int m_index; + +friend class KItemListViewAccessible; +}; + +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; + +private: + inline KItemListContainer* container() const + { + return static_cast<KItemListContainer* >(object()); + } +}; + +#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}) |
