]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincolumnview.cpp
Make use of the error messages coming from the places model.
[dolphin.git] / src / dolphincolumnview.cpp
index 41fb89f97bfbb24ca7401d4ed3e401062946682b..72173538e3c56b70fad9ae82752f011a67e67f47 100644 (file)
 #include "dolphincontroller.h"
 #include "dolphinsettings.h"
 
-//#include "dolphin_iconsmodesettings.h"
+#include "dolphin_columnmodesettings.h"
 
-#include <kdirmodel.h>
-#include <kfileitem.h>
-#include <kfileitemdelegate.h>
-
-#include <QAbstractProxyModel>
-#include <QPoint>
+#include <QtGui/QAbstractProxyModel>
+#include <QtCore/QPoint>
 
 DolphinColumnView::DolphinColumnView(QWidget* parent, DolphinController* controller) :
     QColumnView(parent),
@@ -37,40 +33,44 @@ DolphinColumnView::DolphinColumnView(QWidget* parent, DolphinController* control
 {
     Q_ASSERT(controller != 0);
 
+    setAcceptDrops(true);
+    setSelectionBehavior(SelectItems);
+    setDragDropMode(QAbstractItemView::DragDrop);
+    setDropIndicatorShown(false);
+
+    setMouseTracking(true);
     viewport()->setAttribute(Qt::WA_Hover);
 
-    connect(this, SIGNAL(clicked(const QModelIndex&)),
-            controller, SLOT(triggerItem(const QModelIndex&)));
+    if (KGlobalSettings::singleClick()) {
+        connect(this, SIGNAL(clicked(const QModelIndex&)),
+                controller, SLOT(triggerItem(const QModelIndex&)));
+    } else {
+        connect(this, SIGNAL(doubleClicked(const QModelIndex&)),
+                controller, SLOT(triggerItem(const QModelIndex&)));
+    }
     connect(this, SIGNAL(activated(const QModelIndex&)),
             controller, SLOT(triggerItem(const QModelIndex&)));
-    connect(controller, SIGNAL(showPreviewChanged(bool)),
-            this, SLOT(updateGridSize(bool)));
+    connect(this, SIGNAL(entered(const QModelIndex&)),
+            controller, SLOT(emitItemEntered(const QModelIndex&)));
+    connect(this, SIGNAL(viewportEntered()),
+            controller, SLOT(emitViewportEntered()));
     connect(controller, SIGNAL(zoomIn()),
             this, SLOT(zoomIn()));
     connect(controller, SIGNAL(zoomOut()),
             this, SLOT(zoomOut()));
 
-    // apply the icons mode settings to the widget
-    //const IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings();
-    //Q_ASSERT(settings != 0);
+    // apply the column mode settings to the widget
+    const ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
+    Q_ASSERT(settings != 0);
 
     m_viewOptions = QColumnView::viewOptions();
 
-    /*QFont font(settings->fontFamily(), settings->fontSize());
+    QFont font(settings->fontFamily(), settings->fontSize());
     font.setItalic(settings->italicFont());
     font.setBold(settings->boldFont());
     m_viewOptions.font = font;
 
-    updateGridSize(controller->showPreview());
-
-    if (settings->arrangement() == QColumnView::TopToBottom) {
-        setFlow(QColumnView::LeftToRight);
-        m_viewOptions.decorationPosition = QStyleOptionViewItem::Top;
-    }
-    else {
-        setFlow(QColumnView::TopToBottom);
-        m_viewOptions.decorationPosition = QStyleOptionViewItem::Left;
-    }*/
+    updateDecorationSize();
 }
 
 DolphinColumnView::~DolphinColumnView()
@@ -88,10 +88,10 @@ void DolphinColumnView::contextMenuEvent(QContextMenuEvent* event)
     m_controller->triggerContextMenuRequest(event->pos());
 }
 
-void DolphinColumnView::mouseReleaseEvent(QMouseEvent* event)
+void DolphinColumnView::mousePressEvent(QMouseEvent* event)
 {
-    QColumnView::mouseReleaseEvent(event);
     m_controller->triggerActivation();
+    QColumnView::mousePressEvent(event);
 }
 
 void DolphinColumnView::dragEnterEvent(QDragEnterEvent* event)
@@ -115,20 +115,54 @@ void DolphinColumnView::dropEvent(QDropEvent* event)
 
 void DolphinColumnView::zoomIn()
 {
+    if (isZoomInPossible()) {
+        ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
+        // TODO: get rid of K3Icon sizes
+        switch (settings->iconSize()) {
+        case K3Icon::SizeSmall:  settings->setIconSize(K3Icon::SizeMedium); break;
+        case K3Icon::SizeMedium: settings->setIconSize(K3Icon::SizeLarge); break;
+        default: Q_ASSERT(false); break;
+        }
+        updateDecorationSize();
+    }
 }
 
 void DolphinColumnView::zoomOut()
 {
+    if (isZoomOutPossible()) {
+        ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
+        // TODO: get rid of K3Icon sizes
+        switch (settings->iconSize()) {
+        case K3Icon::SizeLarge:  settings->setIconSize(K3Icon::SizeMedium); break;
+        case K3Icon::SizeMedium: settings->setIconSize(K3Icon::SizeSmall); break;
+        default: Q_ASSERT(false); break;
+        }
+        updateDecorationSize();
+    }
 }
 
 bool DolphinColumnView::isZoomInPossible() const
 {
-    return false;
+    ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
+    return settings->iconSize() < K3Icon::SizeLarge;
 }
 
 bool DolphinColumnView::isZoomOutPossible() const
 {
-    return false;
+    ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
+    return settings->iconSize() > K3Icon::SizeSmall;
+}
+
+void DolphinColumnView::updateDecorationSize()
+{
+    ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
+    const int iconSize = settings->iconSize();
+    m_viewOptions.decorationSize = QSize(iconSize, iconSize);
+
+    m_controller->setZoomInPossible(isZoomInPossible());
+    m_controller->setZoomOutPossible(isZoomOutPossible());
+
+    doItemsLayout();
 }
 
 #include "dolphincolumnview.moc"