]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinview.cpp
show column mode in viewport context menu (thanks to Thomas Georgiou for the patch)
[dolphin.git] / src / dolphinview.cpp
index 47664da62f600b59f8deb3a2131187717edb1b0d..5dc0c0e16c761fe22fc1d203c2d9538b0902cb8b 100644 (file)
@@ -83,8 +83,7 @@ DolphinView::DolphinView(DolphinMainWindow* mainWindow,
     m_statusBar(0),
     m_dirModel(0),
     m_dirLister(0),
-    m_proxyModel(0),
-    m_previewJob(0)
+    m_proxyModel(0)
 {
     hide();
     setFocusPolicy(Qt::StrongFocus);
@@ -178,11 +177,6 @@ DolphinView::DolphinView(DolphinMainWindow* mainWindow,
 
 DolphinView::~DolphinView()
 {
-    if (m_previewJob != 0) {
-        m_previewJob->doKill();
-        m_previewJob = 0;
-    }
-
     delete m_dirLister;
     m_dirLister = 0;
 }
@@ -229,12 +223,11 @@ void DolphinView::setShowPreview(bool show)
 {
     ViewProperties props(m_urlNavigator->url());
     props.setShowPreview(show);
-    props.save();
 
     m_controller->setShowPreview(show);
-
     emit showPreviewChanged();
-    reload();
+
+    startDirLister(m_urlNavigator->url(), true);
 }
 
 bool DolphinView::showPreview() const
@@ -250,12 +243,11 @@ void DolphinView::setShowHiddenFiles(bool show)
 
     ViewProperties props(m_urlNavigator->url());
     props.setShowHiddenFiles(show);
-    props.save();
 
     m_dirLister->setShowingDotFiles(show);
     emit showHiddenFilesChanged();
 
-    reload();
+    startDirLister(m_urlNavigator->url(), true);
 }
 
 bool DolphinView::showHiddenFiles() const
@@ -463,7 +455,7 @@ void DolphinView::setAdditionalInfo(KFileItemDelegate::AdditionalInformation inf
     m_fileItemDelegate->setAdditionalInformation(info);
 
     emit additionalInfoChanged(info);
-    reload();
+    startDirLister(m_urlNavigator->url(), true);
 }
 
 KFileItemDelegate::AdditionalInformation DolphinView::additionalInfo() const
@@ -590,7 +582,6 @@ void DolphinView::rename(const KUrl& source, const QString& newName)
 
         default:
             // the renaming operation has been canceled
-            reload();
             return;
         }
     } else {
@@ -608,7 +599,6 @@ void DolphinView::rename(const KUrl& source, const QString& newName)
     } else {
         m_statusBar->setMessage(i18n("Renaming of file '%1' to '%2' failed.", source.fileName(), destFileName),
                                 DolphinStatusBar::Error);
-        reload();
     }
 }
 
@@ -802,20 +792,21 @@ void DolphinView::updateItemCount()
 void DolphinView::generatePreviews(const KFileItemList& items)
 {
     if (m_controller->showPreview()) {
-        if (m_previewJob != 0) {
-            m_previewJob->doKill();
-        }
-        m_previewJob = KIO::filePreview(items, 128);
-        connect(m_previewJob, SIGNAL(gotPreview(const KFileItem*, const QPixmap&)),
+        KIO::PreviewJob* job = KIO::filePreview(items, 128);
+        connect(job, SIGNAL(gotPreview(const KFileItem*, const QPixmap&)),
                 this, SLOT(showPreview(const KFileItem*, const QPixmap&)));
-        connect(m_previewJob, SIGNAL(result(KJob*)),
-                this, SLOT(slotPreviewResult(KJob*)));
     }
 }
 
 void DolphinView::showPreview(const KFileItem* item, const QPixmap& pixmap)
 {
     Q_ASSERT(item != 0);
+    if (item->url().directory() != m_dirLister->url().path()) {
+        // the preview job is still working on items of an older URL, hence
+        // the item is not part of the directory model anymore
+        return;
+    }
+
     const QModelIndex idx = m_dirModel->indexForItem(*item);
     if (idx.isValid() && (idx.column() == 0)) {
         const QMimeData* mimeData = QApplication::clipboard()->mimeData();
@@ -890,11 +881,6 @@ void DolphinView::startDirLister(const KUrl& url, bool reload)
     m_blockContentsMovedSignal = true;
     m_dirLister->stop();
 
-    if (m_previewJob != 0) {
-        m_previewJob->doKill();
-        m_previewJob = 0;
-    }
-
     bool openDir = true;
     bool keepOldDirs = isColumnViewActive();
     if (keepOldDirs) {
@@ -1163,12 +1149,6 @@ void DolphinView::updateCutItems()
     applyCutItemEffect();
 }
 
-void DolphinView::slotPreviewResult(KJob* job)
-{
-    Q_UNUSED(job);
-    m_previewJob = 0;
-}
-
 void DolphinView::createView()
 {
     // delete current view