]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincolumnwidget.cpp
Hide the "Sort by Rating" and "Sort by Tags" menu entries for KDE 4.0, as currently...
[dolphin.git] / src / dolphincolumnwidget.cpp
index 62e79537e53226d544445ed96e68dc3eb03b3d58..677215972d2b35aa027a6810c538a5e6edbdb72b 100644 (file)
@@ -26,8 +26,8 @@
 #include "dolphinmodel.h"
 #include "dolphinsortfilterproxymodel.h"
 #include "dolphinsettings.h"
-
 #include "dolphin_columnmodesettings.h"
+#include "draganddrophelper.h"
 
 #include <kcolorutils.h>
 #include <kcolorscheme.h>
@@ -111,7 +111,8 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent,
     m_dirLister->setAutoUpdate(true);
     m_dirLister->setMainWindow(this);
     m_dirLister->setDelayedMimeTypes(true);
-    m_dirLister->setShowingDotFiles(m_view->m_controller->showHiddenFiles());
+    const bool showHiddenFiles = m_view->m_controller->dolphinView()->showHiddenFiles();
+    m_dirLister->setShowingDotFiles(showHiddenFiles);
     connect(m_dirLister, SIGNAL(newItems(const KFileItemList&)),
             this, SLOT(generatePreviews(const KFileItemList&)));
 
@@ -196,6 +197,11 @@ void DolphinColumnWidget::setNameFilter(const QString& nameFilter)
     m_proxyModel->setFilterRegExp(nameFilter);
 }
 
+void DolphinColumnWidget::startDrag(Qt::DropActions supportedActions)
+{
+    DragAndDropHelper::startDrag(this, supportedActions);
+}
+
 void DolphinColumnWidget::dragEnterEvent(QDragEnterEvent* event)
 {
     if (event->mimeData()->hasUrls()) {
@@ -221,7 +227,14 @@ void DolphinColumnWidget::dragMoveEvent(QDragMoveEvent* event)
     // TODO: remove this code when the issue #160611 is solved in Qt 4.4
     const QModelIndex index = indexAt(event->pos());
     setDirtyRegion(m_dropRect);
-    m_dropRect = visualRect(index);
+
+    m_dropRect.setSize(QSize()); // set as invalid
+    if (index.isValid()) {
+        const KFileItem item = itemForIndex(index);
+        if (!item.isNull() && item.isDir()) {
+            m_dropRect = visualRect(index);
+        }
+    }
     setDirtyRegion(m_dropRect);
 }
 
@@ -230,14 +243,11 @@ void DolphinColumnWidget::dropEvent(QDropEvent* event)
     const KUrl::List urls = KUrl::List::fromMimeData(event->mimeData());
     if (!urls.isEmpty()) {
         const QModelIndex index = indexAt(event->pos());
-        if (index.isValid()) {
-            const KFileItem item = itemForIndex(index);
-            m_view->m_controller->indicateDroppedUrls(urls,
-                                                      url(),
-                                                      item,
-                                                      event->source());
-            event->acceptProposedAction();
-        }
+        const KFileItem item = itemForIndex(index);
+        m_view->m_controller->indicateDroppedUrls(urls,
+                                                  url(),
+                                                  item);
+        event->acceptProposedAction();
     }
     QListView::dropEvent(event);
     m_dragging = false;
@@ -269,7 +279,7 @@ void DolphinColumnWidget::paintEvent(QPaintEvent* event)
     // TODO: remove this code when the issue #160611 is solved in Qt 4.4
     if (m_dragging) {
         const QBrush& brush = m_viewOptions.palette.brush(QPalette::Normal, QPalette::Highlight);
-        DolphinController::drawHoverIndication(viewport(), m_dropRect, brush);
+        DragAndDropHelper::drawHoverIndication(viewport(), m_dropRect, brush);
     }
 }
 
@@ -324,6 +334,7 @@ void DolphinColumnWidget::selectionChanged(const QItemSelection& selected, const
     selModel->select(selected, QItemSelectionModel::Select);
     selModel->select(deselected, QItemSelectionModel::Deselect);
 }
+
 void DolphinColumnWidget::triggerItem(const QModelIndex& index)
 {
     const KFileItem item = itemForIndex(index);
@@ -335,7 +346,7 @@ void DolphinColumnWidget::generatePreviews(const KFileItemList& items)
     // TODO: same implementation as in DolphinView; create helper class
     // for generatePreviews(), showPreview() and isCutItem()
 
-    if (m_view->m_controller->showPreview()) {
+    if (m_view->m_controller->dolphinView()->showPreview()) {
         KIO::PreviewJob* job = KIO::filePreview(items, 128);
         connect(job, SIGNAL(gotPreview(const KFileItem&, const QPixmap&)),
                 this, SLOT(showPreview(const KFileItem&, const QPixmap&)));