]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincolumnview.cpp
* Use Nepomuk for getting the meta data instead of KFileMetaInfo.
[dolphin.git] / src / dolphincolumnview.cpp
index 8ca4a6a9bd96ebd3dc24c90a475ab53746b3376c..3b3e86a75578dbd352299f8e6116db2e161ca5c6 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>
@@ -48,6 +51,7 @@ DolphinColumnView::DolphinColumnView(QWidget* parent, DolphinController* control
     setSelectionMode(ExtendedSelection);
     setFocusPolicy(Qt::NoFocus);
     setFrameShape(QFrame::NoFrame);
+    setLayoutDirection(Qt::LeftToRight);
 
     connect(this, SIGNAL(viewportEntered()),
             controller, SLOT(emitViewportEntered()));
@@ -79,7 +83,7 @@ DolphinColumnView::DolphinColumnView(QWidget* parent, DolphinController* control
     m_emptyViewport = new QFrame(viewport());
     m_emptyViewport->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
 
-    updateDecorationSize();
+    updateDecorationSize(view->showPreview());
     updateColumnsBackground(true);
 }
 
@@ -267,6 +271,11 @@ KFileItemList DolphinColumnView::selectedItems() const
     return activeColumn()->selectedItems();
 }
 
+QMimeData* DolphinColumnView::selectionMimeData() const
+{
+    return activeColumn()->selectionMimeData();
+}
+
 void DolphinColumnView::selectAll()
 {
     activeColumn()->selectAll();
@@ -367,11 +376,17 @@ void DolphinColumnView::wheelEvent(QWheelEvent* event)
 
 void DolphinColumnView::setZoomLevel(int level)
 {
-    const int size = DolphinController::iconSizeForZoomLevel(level);
+    const int size = ZoomLevelInfo::iconSizeForZoomLevel(level);
     ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
-    settings->setIconSize(size);
-    
-    updateDecorationSize();
+
+    const bool showPreview = m_controller->dolphinView()->showPreview();
+    if (showPreview) {
+        settings->setPreviewSize(size);
+    } else {
+        settings->setIconSize(size);
+    }
+
+    updateDecorationSize(showPreview);
 }
 
 void DolphinColumnView::moveContentHorizontally(int x)
@@ -380,10 +395,10 @@ void DolphinColumnView::moveContentHorizontally(int x)
     layoutColumns();
 }
 
-void DolphinColumnView::updateDecorationSize()
+void DolphinColumnView::updateDecorationSize(bool showPreview)
 {
     ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
-    const int iconSize = settings->iconSize();
+    const int iconSize = showPreview ? settings->previewSize() : settings->iconSize();
     const QSize size(iconSize, iconSize);
     setIconSize(size);
 
@@ -444,6 +459,7 @@ void DolphinColumnView::slotShowHiddenFilesChanged()
 void DolphinColumnView::slotShowPreviewChanged()
 {
     const bool show = m_controller->dolphinView()->showPreview();
+    updateDecorationSize(show);
     foreach (DolphinColumnWidget* column, m_columns) {
         column->setShowPreview(show);
     }
@@ -580,9 +596,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"