]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincolumnview.cpp
Let the user choose if folders are always shown first in the views of
[dolphin.git] / src / dolphincolumnview.cpp
index 7de261dab4c886b3a5efda80af3b4870a54e1384..f34be92e9b58e96809a1c3ef9a0eaeb66108cea5 100644 (file)
 
 #include "dolphincolumnwidget.h"
 #include "dolphincontroller.h"
-#include "dolphinsettings.h"
+#include "settings/dolphinsettings.h"
+#include "zoomlevelinfo.h"
 
 #include "dolphin_columnmodesettings.h"
 
+#include <kfilepreviewgenerator.h>
+
 #include <QPoint>
 #include <QScrollBar>
 #include <QTimeLine>
@@ -62,6 +65,8 @@ DolphinColumnView::DolphinColumnView(QWidget* parent, DolphinController* control
             this, SLOT(slotSortingChanged(DolphinView::Sorting)));
     connect(view, SIGNAL(sortOrderChanged(Qt::SortOrder)),
             this, SLOT(slotSortOrderChanged(Qt::SortOrder)));
+    connect(view, SIGNAL(sortFoldersFirstChanged(bool)),
+            this, SLOT(slotSortFoldersFirstChanged(bool)));
     connect(view, SIGNAL(showHiddenFilesChanged()),
             this, SLOT(slotShowHiddenFilesChanged()));
     connect(view, SIGNAL(showPreviewChanged()),
@@ -268,6 +273,11 @@ KFileItemList DolphinColumnView::selectedItems() const
     return activeColumn()->selectedItems();
 }
 
+QMimeData* DolphinColumnView::selectionMimeData() const
+{
+    return activeColumn()->selectionMimeData();
+}
+
 void DolphinColumnView::selectAll()
 {
     activeColumn()->selectAll();
@@ -361,23 +371,23 @@ void DolphinColumnView::wheelEvent(QWheelEvent* event)
     // let Ctrl+wheel events propagate to the DolphinView for icon zooming
     if ((event->modifiers() & Qt::ControlModifier) == Qt::ControlModifier) {
         event->ignore();
-       return;
+    } else {
+        QAbstractItemView::wheelEvent(event);
     }
-    QAbstractItemView::wheelEvent(event);
 }
 
 void DolphinColumnView::setZoomLevel(int level)
 {
-    const int size = DolphinController::iconSizeForZoomLevel(level);
+    const int size = ZoomLevelInfo::iconSizeForZoomLevel(level);
     ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
-    
+
     const bool showPreview = m_controller->dolphinView()->showPreview();
     if (showPreview) {
         settings->setPreviewSize(size);
     } else {
         settings->setIconSize(size);
     }
-    
+
     updateDecorationSize(showPreview);
 }
 
@@ -440,6 +450,13 @@ void DolphinColumnView::slotSortOrderChanged(Qt::SortOrder order)
     }
 }
 
+void DolphinColumnView::slotSortFoldersFirstChanged(bool foldersFirst)
+{
+    foreach (DolphinColumnWidget* column, m_columns) {
+        column->setSortFoldersFirst(foldersFirst);
+    }
+}
+
 void DolphinColumnView::slotShowHiddenFilesChanged()
 {
     const bool show = m_controller->dolphinView()->showHiddenFiles();
@@ -588,9 +605,17 @@ void DolphinColumnView::deleteColumn(DolphinColumnWidget* column)
         if (m_controller->itemView() == column) {
             m_controller->setItemView(0);
         }
+        // deleteWhenNotDragSource(column) does not necessarily delete column,
+        // and we want its preview generator destroyed immediately.
+        column->m_previewGenerator->deleteLater();
+        column->m_previewGenerator = 0;
+        column->hide();
+        // Prevent automatic destruction of column when this DolphinColumnView
+        // is destroyed.
+        column->setParent(0);
         column->disconnect();
-        column->deleteLater();
-    }   
+        emit requestColumnDeletion(column);
+    }
 }
 
 #include "dolphincolumnview.moc"