]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinview.cpp
minor adjustment to prevent code duplication
[dolphin.git] / src / dolphinview.cpp
index 24b331d84b9607a0940f56b79722131979aaf508..6f5aa8d6f61d99ca688c4fcb437e00253c5e4b00 100644 (file)
 #include "dolphincontroller.h"
 #include "dolphinsortfilterproxymodel.h"
 #include "dolphindetailsview.h"
+#include "dolphin_detailsmodesettings.h"
 #include "dolphiniconsview.h"
 #include "dolphinsettings.h"
 #include "dolphin_generalsettings.h"
+#include "folderexpander.h"
 #include "iconmanager.h"
 #include "renamedialog.h"
 #include "tooltipmanager.h"
@@ -603,12 +605,13 @@ void DolphinView::renameSelectedItems()
 void DolphinView::trashSelectedItems()
 {
     emit doingOperation(KIO::FileUndoManager::Trash);
-    KonqOperations::del(this, KonqOperations::TRASH, selectedUrls());
+    const KUrl::List list = simplifiedSelectedUrls();
+    KonqOperations::del(this, KonqOperations::TRASH, list);
 }
 
 void DolphinView::deleteSelectedItems()
 {
-    const KUrl::List list = selectedUrls();
+    const KUrl::List list = simplifiedSelectedUrls();
     const bool del = KonqOperations::askDeleteConfirmation(list,
                      KonqOperations::DEL,
                      KonqOperations::DEFAULT_CONFIRMATION,
@@ -624,7 +627,7 @@ void DolphinView::deleteSelectedItems()
 void DolphinView::cutSelectedItems()
 {
     QMimeData* mimeData = new QMimeData();
-    const KUrl::List kdeUrls = selectedUrls();
+    const KUrl::List kdeUrls = simplifiedSelectedUrls();
     const KUrl::List mostLocalUrls;
     KonqMimeData::populateMimeData(mimeData, kdeUrls, mostLocalUrls, true);
     QApplication::clipboard()->setMimeData(mimeData);
@@ -741,7 +744,6 @@ void DolphinView::toggleAdditionalInfo(QAction* action)
     }
 }
 
-
 void DolphinView::mouseReleaseEvent(QMouseEvent* event)
 {
     QWidget::mouseReleaseEvent(event);
@@ -1155,6 +1157,20 @@ void DolphinView::createView()
     Q_ASSERT(view != 0);
     view->installEventFilter(this);
 
+    if (m_mode != ColumnView) {
+        // Give the view the ability to auto-expand its directories on hovering
+        // (the column view takes care about this itself). If the details view
+        // uses expandable folders, the auto-expanding should be used always.
+        DolphinSettings& settings = DolphinSettings::instance();
+        const bool enabled = settings.generalSettings()->autoExpandFolders() ||
+                            ((m_detailsView != 0) && settings.detailsModeSettings()->expandableFolders());
+
+        FolderExpander* folderExpander = new FolderExpander(view, m_proxyModel);
+        folderExpander->setEnabled(enabled);
+        connect(folderExpander, SIGNAL(enterDir(const QModelIndex&)),
+                m_controller, SLOT(triggerItem(const QModelIndex&)));
+    }
+
     m_controller->setItemView(view);
 
     m_fileItemDelegate = new KFileItemDelegate(view);
@@ -1267,4 +1283,13 @@ void DolphinView::updateZoomLevel(int oldZoomLevel)
     }
 }
 
+KUrl::List DolphinView::simplifiedSelectedUrls() const
+{
+    KUrl::List list = selectedUrls();
+    if ((m_detailsView != 0) && m_detailsView->itemsExpandable()) {
+        list = KonqOperations::simplifiedUrlList(list);
+    }
+    return list;
+}
+
 #include "dolphinview.moc"