]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Implement DolphinView::setItemSelectionEnabled()
authorFrank Reininghaus <frank78ac@googlemail.com>
Sun, 14 Aug 2011 09:34:03 +0000 (11:34 +0200)
committerFrank Reininghaus <frank78ac@googlemail.com>
Sun, 14 Aug 2011 09:34:03 +0000 (11:34 +0200)
src/views/dolphinview.cpp
src/views/dolphinview.h

index de54b9bb6435413bf28b84ba116ad08a45a96f85..a3e1a082e886ada241ab3b197507c8e62caf52cf 100644 (file)
@@ -297,13 +297,22 @@ void DolphinView::markUrlsAsSelected(const QList<KUrl>& 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<int> and
+            // select them in one go after the loop, but we'd need a new function
+            // KItemListSelectionManager::setSelected(QSet<int>, 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;
index f49bd3f7ba409b5a9ac604cfdd547a776a484f61..12683dbbb8031fa2d45562d444a39118c4df034f 100644 (file)
@@ -35,7 +35,6 @@
 #include <QBoxLayout>
 #include <QKeyEvent>
 #include <QLinkedList>
-#include <QListView>
 #include <QSet>
 #include <QWidget>
 
@@ -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