]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinview.cpp
Reactivate drop-above-places-panel functionality
[dolphin.git] / src / views / dolphinview.cpp
index 379cd9f902d975c90ce32b791a0f3c03113bb6e8..455905f6a6a07cb0c4cac132727b4f6d0688d6e1 100644 (file)
@@ -135,8 +135,11 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) :
 
     KItemListController* controller = m_container->controller();
     controller->setSelectionBehavior(KItemListController::MultiSelection);
-    connect(controller, SIGNAL(itemActivated(int)),
-            this, SLOT(slotItemActivated(int)));
+    if (GeneralSettings::autoExpandFolders()) {
+        controller->setAutoActivationDelay(750);
+    }
+    connect(controller, SIGNAL(itemActivated(int)), this, SLOT(slotItemActivated(int)));
+    connect(controller, SIGNAL(itemsActivated(QSet<int>)), this, SLOT(slotItemsActivated(QSet<int>)));
     connect(controller, SIGNAL(itemMiddleClicked(int)), this, SLOT(slotItemMiddleClicked(int)));
     connect(controller, SIGNAL(itemContextMenuRequested(int,QPointF)), this, SLOT(slotItemContextMenuRequested(int,QPointF)));
     connect(controller, SIGNAL(viewContextMenuRequested(QPointF)), this, SLOT(slotViewContextMenuRequested(QPointF)));
@@ -456,13 +459,12 @@ void DolphinView::refresh()
 
 void DolphinView::setNameFilter(const QString& nameFilter)
 {
-    Q_UNUSED(nameFilter);
-    //m_viewModeController->setNameFilter(nameFilter);
+    fileItemModel()->setNameFilter(nameFilter);
 }
 
 QString DolphinView::nameFilter() const
 {
-    return QString(); //m_viewModeController->nameFilter();
+    return fileItemModel()->nameFilter();
 }
 
 void DolphinView::calculateItemCount(int& fileCount,
@@ -692,22 +694,30 @@ void DolphinView::activate()
 
 void DolphinView::slotItemActivated(int index)
 {
-    Q_UNUSED(index);
+    const KFileItem item = fileItemModel()->fileItem(index);
+    if (!item.isNull()) {
+        emit itemActivated(item);
+    }
+}
 
-    const KFileItemList items = selectedItems();
-    if (items.isEmpty()) {
-        return;
+void DolphinView::slotItemsActivated(const QSet<int>& indexes)
+{
+    Q_ASSERT(indexes.count() >= 2);
+
+    KFileItemList items;
+
+    KFileItemModel* model = fileItemModel();
+    QSetIterator<int> it(indexes);
+    while (it.hasNext()) {
+        const int index = it.next();
+        items.append(model->fileItem(index));
     }
 
-    if (items.count() == 1) {
-        emit itemActivated(items.at(0)); // caught by DolphinViewContainer or DolphinPart
-    } else {
-        foreach (const KFileItem& item, items) {
-            if (item.isDir()) {
-                emit tabRequested(item.url());
-            } else {
-                emit itemActivated(item);
-            }
+    foreach (const KFileItem& item, items) {
+        if (item.isDir()) {
+            emit tabRequested(item.url());
+        } else {
+            emit itemActivated(item);
         }
     }
 }
@@ -940,6 +950,7 @@ void DolphinView::saveState(QDataStream& stream)
     const int currentIndex = m_container->controller()->selectionManager()->currentItem();
     if (currentIndex != -1) {
         KFileItem item = fileItemModel()->fileItem(currentIndex);
+        Q_ASSERT(!item.isNull()); // If the current index is valid a item must exist
         KUrl currentItemUrl = item.url();
         stream << currentItemUrl;
     } else {