]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphindetailsview.cpp
create modal dialogs on stack as David suggested
[dolphin.git] / src / dolphindetailsview.cpp
index 88537471bbd10a01d4241c11216f7a4539899f94..87fa851655ae943578544918769f73ecf10b6f80 100644 (file)
 #include <kdirmodel.h>
 #include <kfileitemdelegate.h>
 
-#include <QHeaderView>
+#include <QtGui/QHeaderView>
 
 DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* controller) :
-        QTreeView(parent),
-        m_controller(controller)
+    QTreeView(parent),
+    m_controller(controller)
 {
     Q_ASSERT(controller != 0);
 
@@ -46,6 +46,7 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr
     setDragDropMode(QAbstractItemView::DragDrop);
     setDropIndicatorShown(false);
 
+    setMouseTracking(true);
     viewport()->setAttribute(Qt::WA_Hover);
 
     const ViewProperties props(controller->url());
@@ -60,11 +61,19 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr
     connect(parent, SIGNAL(sortOrderChanged(Qt::SortOrder)),
             this, SLOT(setSortIndicatorOrder(Qt::SortOrder)));
 
-    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(this, SIGNAL(entered(const QModelIndex&)),
+            this, SLOT(slotEntered(const QModelIndex&)));
+    connect(this, SIGNAL(viewportEntered()),
+            controller, SLOT(emitViewportEntered()));
     connect(controller, SIGNAL(zoomIn()),
             this, SLOT(zoomIn()));
     connect(controller, SIGNAL(zoomOut()),
@@ -116,6 +125,10 @@ bool DolphinDetailsView::event(QEvent* event)
         if (!settings->showGroup()) {
             hideColumn(KDirModel::Group);
         }
+
+        if (!settings->showType()) {
+            hideColumn(KDirModel::Type);
+        }
     }
 
     return QTreeView::event(event);
@@ -179,6 +192,18 @@ void DolphinDetailsView::synchronizeSortingState(int column)
     m_controller->indicateSortOrderChange(sortOrder);
 }
 
+void DolphinDetailsView::slotEntered(const QModelIndex& index)
+{
+    const QPoint pos = viewport()->mapFromGlobal(QCursor::pos());
+    const int nameColumnWidth = header()->sectionSize(KDirModel::Name);
+    if (pos.x() < nameColumnWidth) {
+        m_controller->emitItemEntered(index);
+    }
+    else {
+        m_controller->emitViewportEntered();
+    }
+}
+
 void DolphinDetailsView::zoomIn()
 {
     if (isZoomInPossible()) {