From 769084221f062231ac848b013f968883e67aa3db Mon Sep 17 00:00:00 2001 From: Frank Reininghaus Date: Sun, 14 Aug 2011 11:34:03 +0200 Subject: [PATCH] Implement DolphinView::setItemSelectionEnabled() --- src/views/dolphinview.cpp | 49 +++++++++++++-------------------------- src/views/dolphinview.h | 7 ------ 2 files changed, 16 insertions(+), 40 deletions(-) diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index de54b9bb6..a3e1a082e 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -297,13 +297,22 @@ void DolphinView::markUrlsAsSelected(const QList& urls) void DolphinView::setItemSelectionEnabled(const QRegExp& pattern, bool enabled) { - Q_UNUSED(pattern); - Q_UNUSED(enabled); - /*const QItemSelection matchingIndexes = childrenMatchingPattern(QModelIndex(), pattern); - const QItemSelectionModel::SelectionFlags command = enabled - ? QItemSelectionModel::Select - : QItemSelectionModel::Deselect; - m_viewAccessor.itemView()->selectionModel()->select(matchingIndexes, command);*/ + const KItemListSelectionManager::SelectionMode mode = enabled + ? KItemListSelectionManager::Select + : KItemListSelectionManager::Deselect; + const KFileItemModel* model = fileItemModel(); + KItemListSelectionManager* selectionManager = m_container->controller()->selectionManager(); + + for (int index = 0; index < model->count(); index++) { + const KFileItem item = model->fileItem(index); + if (pattern.exactMatch(item.name())) { + // An alternative approach would be to store the matching items in a QSet and + // select them in one go after the loop, but we'd need a new function + // KItemListSelectionManager::setSelected(QSet, SelectionMode mode) + // for that. + selectionManager->setSelected(index, 1, mode); + } + } } void DolphinView::setZoomLevel(int level) @@ -1162,32 +1171,6 @@ void DolphinView::markPastedUrlsAsSelected(const QMimeData* mimeData) markUrlsAsSelected(urls); } -QItemSelection DolphinView::childrenMatchingPattern(const QModelIndex& parent, const QRegExp& pattern) const -{ - Q_UNUSED(parent); - Q_UNUSED(pattern); - 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; -} - void DolphinView::updateWritableState() { const bool wasFolderWritable = m_isFolderWritable; diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h index f49bd3f7b..12683dbbb 100644 --- a/src/views/dolphinview.h +++ b/src/views/dolphinview.h @@ -35,7 +35,6 @@ #include #include #include -#include #include #include @@ -720,12 +719,6 @@ private: */ void markPastedUrlsAsSelected(const QMimeData* mimeData); - /** - * Helper method for DolphinView::setItemSelectionEnabled(): Returns the selection for - * all items of \p parent that match with the regular expression defined by \p pattern. - */ - QItemSelection childrenMatchingPattern(const QModelIndex& parent, const QRegExp& pattern) const; - /** * Updates m_isFolderWritable dependent on whether the folder represented by * the current URL is writable. If the state has changed, the signal -- 2.47.3