┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/views/dolphinview.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2010-11-04 17:27:11 +0000
committerPeter Penz <[email protected]>2010-11-04 17:27:11 +0000
commit7e311509a4ac89ebe95f3d81928fe78a9f398aa9 (patch)
tree5a906b0f4df2e2bb37dcd31c80dc97285fba131d /src/views/dolphinview.cpp
parentbd7416d0af9d498d0f2b6611fabd16e8e508f094 (diff)
Interface cleanup: The DolphinView should not expose QAbstractItemView-specific things like QItemSelectionModel. Just providing interfaces for KFileItem and KUrl will make it easier in future to change the view-implementations internally to QML-specific itemviews or whatever.
svn path=/trunk/KDE/kdebase/apps/; revision=1193113
Diffstat (limited to 'src/views/dolphinview.cpp')
-rw-r--r--src/views/dolphinview.cpp64
1 files changed, 46 insertions, 18 deletions
diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp
index 8ed0d993e..2c2dbc231 100644
--- a/src/views/dolphinview.cpp
+++ b/src/views/dolphinview.cpp
@@ -279,18 +279,9 @@ bool DolphinView::supportsCategorizedSorting() const
return m_viewAccessor.supportsCategorizedSorting();
}
-bool DolphinView::hasSelection() const
+KFileItemList DolphinView::items() const
{
- const QAbstractItemView* view = m_viewAccessor.itemView();
- return (view != 0) && view->selectionModel()->hasSelection();
-}
-
-void DolphinView::markUrlsAsSelected(const QList<KUrl>& urls)
-{
- foreach (const KUrl& url, urls) {
- KFileItem item(KFileItem::Unknown, KFileItem::Unknown, url);
- m_selectedItems.append(item);
- }
+ return m_viewAccessor.dirLister()->items();
}
KFileItemList DolphinView::selectedItems() const
@@ -324,9 +315,21 @@ int DolphinView::selectedItemsCount() const
return view->selectionModel()->selectedIndexes().count();
}
-QItemSelectionModel* DolphinView::selectionModel() const
+void DolphinView::markUrlsAsSelected(const QList<KUrl>& urls)
+{
+ foreach (const KUrl& url, urls) {
+ KFileItem item(KFileItem::Unknown, KFileItem::Unknown, url);
+ m_selectedItems.append(item);
+ }
+}
+
+void DolphinView::setItemSelectionEnabled(const QRegExp& pattern, bool enabled)
{
- return m_viewAccessor.itemView()->selectionModel();
+ const QItemSelection matchingIndexes = childrenMatchingPattern(QModelIndex(), pattern);
+ const QItemSelectionModel::SelectionFlags command = enabled
+ ? QItemSelectionModel::Select
+ : QItemSelectionModel::Deselect;
+ m_viewAccessor.itemView()->selectionModel()->select(matchingIndexes, command);
}
void DolphinView::setZoomLevel(int level)
@@ -948,6 +951,12 @@ void DolphinView::saveState(QDataStream& stream)
stream << m_viewAccessor.expandedUrls();
}
+bool DolphinView::hasSelection() const
+{
+ const QAbstractItemView* view = m_viewAccessor.itemView();
+ return (view != 0) && view->selectionModel()->hasSelection();
+}
+
void DolphinView::observeCreatedItem(const KUrl& url)
{
m_createdItemUrl = url;
@@ -1248,6 +1257,30 @@ void DolphinView::addNewFileNames(const QMimeData* mimeData)
}
}
+QItemSelection DolphinView::childrenMatchingPattern(const QModelIndex& parent, const QRegExp& pattern) const
+{
+ QItemSelection matchingIndexes;
+ const DolphinSortFilterProxyModel* proxyModel = m_viewAccessor.proxyModel();
+ const DolphinModel* dolphinModel = m_viewAccessor.dirModel();
+
+ const int rowCount = proxyModel->rowCount(parent);
+
+ for (int row = 0; row < rowCount; ++row) {
+ QModelIndex index = proxyModel->index(row, 0, parent);
+ QModelIndex sourceIndex = proxyModel->mapToSource(index);
+
+ if (sourceIndex.isValid() && pattern.exactMatch(dolphinModel->data(sourceIndex).toString())) {
+ matchingIndexes += QItemSelectionRange(index);
+ }
+
+ if (proxyModel->hasChildren(index)) {
+ matchingIndexes += childrenMatchingPattern(index, pattern);
+ }
+ }
+
+ return matchingIndexes;
+}
+
DolphinView::ViewAccessor::ViewAccessor(DolphinSortFilterProxyModel* proxyModel) :
m_iconsView(0),
m_detailsView(0),
@@ -1458,9 +1491,4 @@ void DolphinView::restoreContentsPosition()
}
}
-KFileItemList DolphinView::allItems() const
-{
- return m_viewAccessor.dirLister()->items();
-}
-
#include "dolphinview.moc"