]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinview.cpp
just assert we're not hiting new modes (CID 3211)
[dolphin.git] / src / dolphinview.cpp
index 50f56a478435500fdd94c6506706dd07bd212a41..6569530cea1fc6705a2b5f100c1d7bf6fa0db836 100644 (file)
@@ -71,6 +71,7 @@ DolphinView::DolphinView(DolphinMainWindow* mainWindow,
     m_controller(0),
     m_iconsView(0),
     m_detailsView(0),
+    m_fileItemDelegate(0),
     m_filterBar(0),
     m_statusBar(0),
     m_dirModel(0),
@@ -132,8 +133,8 @@ DolphinView::DolphinView(DolphinMainWindow* mainWindow,
     m_controller = new DolphinController(this);
     connect(m_controller, SIGNAL(requestContextMenu(const QPoint&)),
             this, SLOT(openContextMenu(const QPoint&)));
-    connect(m_controller, SIGNAL(urlsDropped(const KUrl::List&, const QPoint&)),
-            this, SLOT(dropUrls(const KUrl::List&, const QPoint&)));
+    connect(m_controller, SIGNAL(urlsDropped(const KUrl::List&, const QModelIndex&, QWidget*)),
+            this, SLOT(dropUrls(const KUrl::List&, const QModelIndex&, QWidget*)));
     connect(m_controller, SIGNAL(sortingChanged(DolphinView::Sorting)),
             this, SLOT(updateSorting(DolphinView::Sorting)));
     connect(m_controller, SIGNAL(sortOrderChanged(Qt::SortOrder)),
@@ -425,6 +426,22 @@ Qt::SortOrder DolphinView::sortOrder() const
     return m_proxyModel->sortOrder();
 }
 
+void DolphinView::setAdditionalInfo(KFileItemDelegate::AdditionalInformation info)
+{
+    ViewProperties props(m_urlNavigator->url());
+    props.setAdditionalInfo(info);
+
+    m_fileItemDelegate->setAdditionalInformation(info);
+
+    emit additionalInfoChanged(info);
+    reload();
+}
+
+KFileItemDelegate::AdditionalInformation DolphinView::additionalInfo() const
+{
+    return m_fileItemDelegate->additionalInformation();
+}
+
 void DolphinView::goBack()
 {
     m_urlNavigator->goBack();
@@ -613,6 +630,13 @@ void DolphinView::loadDirectory(const KUrl& url)
         emit sortOrderChanged(sortOrder);
     }
 
+    KFileItemDelegate::AdditionalInformation info = props.additionalInfo();
+    if (info != m_fileItemDelegate->additionalInformation()) {
+        m_fileItemDelegate->setAdditionalInformation(info);
+
+        emit additionalInfoChanged(info);
+    }
+
     const bool showPreview = props.showPreview();
     if (showPreview != m_controller->showPreview()) {
         m_controller->setShowPreview(showPreview);
@@ -732,7 +756,7 @@ void DolphinView::generatePreviews(const KFileItemList& items)
 
     const QMimeData* mimeData = QApplication::clipboard()->mimeData();
     if (KonqMimeData::decodeIsCutSelection(mimeData)) {
-        QTimer::singleShot(1000, this, SLOT(applyCutEffect()));
+        QTimer::singleShot(0, this, SLOT(applyCutEffect()));
     }
 }
 
@@ -971,10 +995,10 @@ void DolphinView::openContextMenu(const QPoint& pos)
 }
 
 void DolphinView::dropUrls(const KUrl::List& urls,
-                           const QPoint& pos)
+                           const QModelIndex& index,
+                           QWidget* source)
 {
     KFileItem* directory = 0;
-    const QModelIndex index = itemView()->indexAt(pos);
     if (isValidNameIndex(index)) {
         KFileItem* item = fileItem(index);
         assert(item != 0);
@@ -984,8 +1008,17 @@ void DolphinView::dropUrls(const KUrl::List& urls,
         }
     }
 
+    if ((directory == 0) && (source == itemView())) {
+        // The dropping is done into the same viewport where
+        // the dragging has been started. Just ignore this...
+        return;
+    }
+
     const KUrl& destination = (directory == 0) ? url() :
                                                  directory->url();
+
+    kDebug() << "DolphinView::dropUrls() - destination: " << destination.prettyUrl() << endl;
+
     dropUrls(urls, destination);
 }
 
@@ -1034,8 +1067,10 @@ void DolphinView::createView()
         m_topLayout->removeWidget(view);
         view->close();
         view->deleteLater();
+        view = 0;
         m_iconsView = 0;
         m_detailsView = 0;
+        m_fileItemDelegate = 0;
     }
 
     assert(m_iconsView == 0);
@@ -1054,6 +1089,11 @@ void DolphinView::createView()
             break;
     }
 
+    assert(view != 0);
+
+    m_fileItemDelegate = new KFileItemDelegate(view);
+    view->setItemDelegate(m_fileItemDelegate);
+
     view->setModel(m_proxyModel);
     view->setSelectionMode(QAbstractItemView::ExtendedSelection);