]> 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 48f0214bcbaaa06556d5e87de623ccd253d05902..5dc0c0e16c761fe22fc1d203c2d9538b0902cb8b 100644 (file)
@@ -64,26 +64,26 @@ DolphinView::DolphinView(DolphinMainWindow* mainWindow,
                          const KUrl& url,
                          Mode mode,
                          bool showHiddenFiles) :
-        QWidget(parent),
-        m_showProgress(false),
-        m_blockContentsMovedSignal(false),
-        m_mode(mode),
-        m_iconSize(0),
-        m_folderCount(0),
-        m_fileCount(0),
-        m_mainWindow(mainWindow),
-        m_topLayout(0),
-        m_urlNavigator(0),
-        m_controller(0),
-        m_iconsView(0),
-        m_detailsView(0),
-        m_columnView(0),
-        m_fileItemDelegate(0),
-        m_filterBar(0),
-        m_statusBar(0),
-        m_dirModel(0),
-        m_dirLister(0),
-        m_proxyModel(0)
+    QWidget(parent),
+    m_showProgress(false),
+    m_blockContentsMovedSignal(false),
+    m_mode(mode),
+    m_iconSize(0),
+    m_folderCount(0),
+    m_fileCount(0),
+    m_mainWindow(mainWindow),
+    m_topLayout(0),
+    m_urlNavigator(0),
+    m_controller(0),
+    m_iconsView(0),
+    m_detailsView(0),
+    m_columnView(0),
+    m_fileItemDelegate(0),
+    m_filterBar(0),
+    m_statusBar(0),
+    m_dirModel(0),
+    m_dirLister(0),
+    m_proxyModel(0)
 {
     hide();
     setFocusPolicy(Qt::StrongFocus);
@@ -102,7 +102,7 @@ DolphinView::DolphinView(DolphinMainWindow* mainWindow,
     m_urlNavigator->setUrlEditable(DolphinSettings::instance().generalSettings()->editableUrl());
     m_urlNavigator->setHomeUrl(DolphinSettings::instance().generalSettings()->homeUrl());
     connect(m_urlNavigator, SIGNAL(urlChanged(const KUrl&)),
-            this, SLOT(loadDirectory(const KUrl&)));
+            this, SLOT(changeDirectory(const KUrl&)));
     connect(m_urlNavigator, SIGNAL(urlsDropped(const KUrl::List&, const KUrl&)),
             this, SLOT(dropUrls(const KUrl::List&, const KUrl&)));
     connect(m_urlNavigator, SIGNAL(activated()),
@@ -225,9 +225,9 @@ void DolphinView::setShowPreview(bool show)
     props.setShowPreview(show);
 
     m_controller->setShowPreview(show);
-
     emit showPreviewChanged();
-    reload();
+
+    startDirLister(m_urlNavigator->url(), true);
 }
 
 bool DolphinView::showPreview() const
@@ -243,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
@@ -456,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
@@ -583,7 +582,6 @@ void DolphinView::rename(const KUrl& source, const QString& newName)
 
         default:
             // the renaming operation has been canceled
-            reload();
             return;
         }
     } else {
@@ -601,13 +599,14 @@ 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();
     }
 }
 
 void DolphinView::reload()
 {
-    startDirLister(m_urlNavigator->url(), true);
+    const KUrl& url = m_urlNavigator->url();
+    changeDirectory(url);
+    startDirLister(url, true);
 }
 
 void DolphinView::mouseReleaseEvent(QMouseEvent* event)
@@ -621,7 +620,7 @@ DolphinMainWindow* DolphinView::mainWindow() const
     return m_mainWindow;
 }
 
-void DolphinView::loadDirectory(const KUrl& url)
+void DolphinView::changeDirectory(const KUrl& url)
 {
     if (!isActive()) {
         requestActivation();
@@ -802,6 +801,12 @@ void DolphinView::generatePreviews(const KFileItemList& items)
 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();
@@ -866,9 +871,9 @@ void DolphinView::startDirLister(const KUrl& url, bool reload)
     // the directory loading progress information has the lowest priority.
     const QString progressText(m_statusBar->progressText());
     m_showProgress = progressText.isEmpty() ||
-                     (progressText == i18n("Loading directory..."));
+                     (progressText == i18n("Loading folder..."));
     if (m_showProgress) {
-        m_statusBar->setProgressText(i18n("Loading directory..."));
+        m_statusBar->setProgressText(i18n("Loading folder..."));
         m_statusBar->setProgress(0);
     }