]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Ensure authentication data is cached properly
authorPeter Penz <peter.penz19@gmail.com>
Tue, 17 Apr 2012 20:19:18 +0000 (22:19 +0200)
committerPeter Penz <peter.penz19@gmail.com>
Tue, 17 Apr 2012 20:21:55 +0000 (22:21 +0200)
The attached patch sets the main window on the main directory
lister in DolphinView and KIO jobs in DolphinMainWindow to ensure
that login data for remote protocols such as sftp, ftp are cached
properly for the duration of the application. Otherwise, the end
user is going to end up being unnecessarily re-prompted to enter
password login information.

Thanks to Dawit Alemayehu for the patch!

REVIEW: 104614
FIXED-IN: 4.9.0

12 files changed:
src/dolphinmainwindow.cpp
src/dolphinmainwindow.h
src/kitemviews/kfileitemmodel.cpp
src/kitemviews/kfileitemmodelrolesupdater.cpp
src/panels/information/informationpanel.cpp
src/panels/information/informationpanel.h
src/panels/information/informationpanelcontent.cpp
src/panels/search/searchpanel.cpp
src/panels/search/searchpanel.h
src/panels/terminal/terminalpanel.cpp
src/views/dolphinview.cpp
src/views/tooltips/tooltipmanager.cpp

index dc413dcbff07e1607bfb07a09a11b7d4cdb05ddb..6800daefbefc5d60ab5eee6fc6bd4572c012f31d 100644 (file)
@@ -67,6 +67,7 @@
 #include <KIcon>
 #include <KIconLoader>
 #include <KIO/NetAccess>
+#include <KIO/JobUiDelegate>
 #include <KInputDialog>
 #include <KLocale>
 #include <KProtocolManager>
@@ -1284,6 +1285,9 @@ void DolphinMainWindow::handleUrl(const KUrl& url)
     } else if (KProtocolManager::supportsListing(url)) {
         // stat the URL to see if it is a dir or not
         m_lastHandleUrlStatJob = KIO::stat(url, KIO::HideProgressInfo);
+        if (m_lastHandleUrlStatJob->ui()) {
+            m_lastHandleUrlStatJob->ui()->setWindow(this);
+        }
         connect(m_lastHandleUrlStatJob, SIGNAL(result(KJob*)),
                 this, SLOT(slotHandleUrlStatFinished(KJob*)));
 
index d4ca11adf386e57b16f562042b109da0ad2926a1..7e143f720aaffb3aff2dec92b3b89678ea21bf33 100644 (file)
@@ -587,7 +587,7 @@ private:
     QToolButton* m_controlButton;
     QTimer* m_updateToolBarTimer;
 
-    KJob* m_lastHandleUrlStatJob;
+    KIO::Job* m_lastHandleUrlStatJob;
 
     /**
      * Set to true, if the filter dock visibility is only temporary set
index 8b6522c07ed7d71b6c47d9594aabab135b034e8f..8710f4440980a0258b790e955db7a90640bbb4be 100644 (file)
@@ -28,6 +28,7 @@
 #include "private/kfileitemmodelsortalgorithm.h"
 #include "private/kfileitemmodeldirlister.h"
 
+#include <QApplication>
 #include <QMimeData>
 #include <QTimer>
 
@@ -58,6 +59,7 @@ KFileItemModel::KFileItemModel(QObject* parent) :
     m_dirLister = new KFileItemModelDirLister(this);
     m_dirLister->setAutoUpdate(true);
     m_dirLister->setDelayedMimeTypes(true);
+    m_dirLister->setMainWindow(qApp->activeWindow());
 
     connect(m_dirLister, SIGNAL(started(KUrl)), this, SIGNAL(directoryLoadingStarted()));
     connect(m_dirLister, SIGNAL(canceled()), this, SLOT(slotCanceled()));
index 942db2bbd9fe306d71795354cbc243b34f940bc4..e2e348f79d18922a0d1866e439031b53607636f2 100644 (file)
 #include <KDebug>
 #include <KFileItem>
 #include <KGlobal>
+#include <KIO/JobUiDelegate>
 #include <KIO/PreviewJob>
 
 #include "private/kpixmapmodifier.h"
 
+#include <QApplication>
 #include <QPainter>
 #include <QPixmap>
 #include <QElapsedTimer>
@@ -655,6 +657,9 @@ void KFileItemModelRolesUpdater::startPreviewJob(const KFileItemList& items)
     }
     KIO::PreviewJob* job = new KIO::PreviewJob(itemSubSet, cacheSize, &m_enabledPlugins);
     job->setIgnoreMaximumSize(items.first().isLocalFile());
+    if (job->ui()) {
+        job->ui()->setWindow(qApp->activeWindow());
+    }
 
     connect(job,  SIGNAL(gotPreview(KFileItem,QPixmap)),
             this, SLOT(slotGotPreview(KFileItem,QPixmap)));
index 3b4747b77dc51f38ba1d864b14da87822868c90d..eda74f3b506938c9658d12e6b2663d0f1fc124d0 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "informationpanelcontent.h"
 #include <KIO/Job>
+#include <KIO/JobUiDelegate>
 #include <KDirNotify>
 #include <QApplication>
 #include <QShowEvent>
@@ -182,6 +183,9 @@ void InformationPanel::showItemInfo()
             // No item is hovered and no selection has been done: provide
             // an item for the currently shown directory.
             m_folderStatJob = KIO::stat(url(), KIO::HideProgressInfo);
+            if (m_folderStatJob->ui()) {
+                m_folderStatJob->ui()->setWindow(this);
+            }
             connect(m_folderStatJob, SIGNAL(result(KJob*)),
                     this, SLOT(slotFolderStatFinished(KJob*)));
         } else {
index 8a7ad6bb799bf9c4e6e6190fd7f3a9b2b5bb20f9..c68b66ee1f5b7b28b1cab11031c4fff5c52ba48f 100644 (file)
 #include <panels/panel.h>
 
 class InformationPanelContent;
+namespace KIO
+{
+    class Job;
+}
 
 /**
  * @brief Panel for showing meta information of one ore more selected items.
@@ -147,7 +151,7 @@ private:
     KFileItem m_fileItem; // file item for m_shownUrl if available (otherwise null)
     KFileItemList m_selection;
 
-    KJob* m_folderStatJob;
+    KIO::Job* m_folderStatJob;
 
     InformationPanelContent* m_content;
 };
index a82319ef990fcd3d4831cf3d6fbe9ace7e5a4d44..4a96bd1b6f266f3f0e4e7153f061f43aac554ffc 100644 (file)
@@ -24,6 +24,7 @@
 #include <kfilemetadatawidget.h>
 #include <KFilePlacesModel>
 #include <KGlobalSettings>
+#include <KIO/JobUiDelegate>
 #include <KIO/PreviewJob>
 #include <KIconEffect>
 #include <KIconLoader>
@@ -176,6 +177,9 @@ void InformationPanelContent::showItem(const KFileItem& item)
             KIO::PreviewJob* job = new KIO::PreviewJob(KFileItemList() << item, QSize(m_preview->width(), m_preview->height()));
             job->setScaleType(KIO::PreviewJob::Unscaled);
             job->setIgnoreMaximumSize(item.isLocalFile());
+            if (job->ui()) {
+                job->ui()->setWindow(this);
+            }
 
             connect(job, SIGNAL(gotPreview(KFileItem,QPixmap)),
                     this, SLOT(showPreview(KFileItem,QPixmap)));
index a78828e0d6a440a4962e891476892e5f592a5601..fd4195f54c6a9e9622af73fe1849384a0553d0e0 100644 (file)
@@ -38,8 +38,9 @@
 #include <search/dolphinsearchinformation.h>
 
 #include <KFileItem>
-#include <KIO/JobClasses>
 #include <KIO/Job>
+#include <KIO/JobClasses>
+#include <KIO/JobUiDelegate>
 #include <KMenu>
 
 #include <QPushButton>
@@ -101,6 +102,9 @@ bool SearchPanel::urlChanged()
             // Reset the current query and disable the facet-widget until
             // the new query has been determined by KIO::stat():
             m_lastSetUrlStatJob = KIO::stat(url(), KIO::HideProgressInfo);
+            if (m_lastSetUrlStatJob->ui()) {
+                m_lastSetUrlStatJob->ui()->setWindow(this);
+            }
             connect(m_lastSetUrlStatJob, SIGNAL(result(KJob*)),
                     this, SLOT(slotSetUrlStatFinished(KJob*)));
         } else {
index ae34b20c69b9951ed43ba4db118b1fad1c8927f0..4ea7e121e95209fe4614656ca6a3e76e3b6f4464 100644 (file)
 #include <Nepomuk/Query/Query>
 #include <panels/panel.h>
 
-class KJob;
+namespace KIO
+{
+    class Job;
+};
 
-namespace Nepomuk {
-    namespace Utils {
+namespace Nepomuk
+{
+    namespace Utils
+    {
         class FacetWidget;
     }
 }
@@ -92,7 +97,7 @@ private:
 private:
     bool m_initialized;
     SearchLocation m_searchLocation;
-    KJob* m_lastSetUrlStatJob;
+    KIO::Job* m_lastSetUrlStatJob;
 
     KUrl m_startedFromDir;
     Nepomuk::Utils::FacetWidget* m_facetWidget;
index 19c6cb1b7b2bd8af53ed934d3483164dad9332e4..51df818069fd2f84c9f5d9b97d456d58c5cea61e 100644 (file)
@@ -115,7 +115,9 @@ void TerminalPanel::changeDir(const KUrl& url)
         sendCdToTerminal(url.toLocalFile());
     } else {
         m_mostLocalUrlJob = KIO::mostLocalUrl(url, KIO::HideProgressInfo);
-        m_mostLocalUrlJob->ui()->setWindow(this);
+        if (m_mostLocalUrlJob->ui()) {
+            m_mostLocalUrlJob->ui()->setWindow(this);
+        }
         connect(m_mostLocalUrlJob, SIGNAL(result(KJob*)), this, SLOT(slotMostLocalUrlResult(KJob*)));
     }
 }
index 3e1ed34ec83f5b8e7863c5738367323f79d60452..7494ac5e6ecb02ed922bc5224196e1f0850ece78 100644 (file)
@@ -47,6 +47,7 @@
 #include <kitemviews/kitemlistview.h>
 #include <kitemviews/kitemlistcontroller.h>
 #include <KIO/DeleteJob>
+#include <KIO/JobUiDelegate>
 #include <KIO/NetAccess>
 #include <KIO/PreviewJob>
 #include <KJob>
@@ -638,6 +639,9 @@ void DolphinView::deleteSelectedItems()
 
     if (del) {
         KIO::Job* job = KIO::del(list);
+        if (job->ui()) {
+            job->ui()->setWindow(this);
+        }
         connect(job, SIGNAL(result(KJob*)),
                 this, SLOT(slotDeleteFileFinished(KJob*)));
     }
index 8b2e98dae3c59c03f65d2216a4af52dc334dcbb5..d948bfd866cef405e432ed2a67b85b4a85b28a5c 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "filemetadatatooltip.h"
 #include <KIcon>
+#include <KIO/JobUiDelegate>
 #include <KIO/PreviewJob>
 
 #include <QApplication>
@@ -128,6 +129,9 @@ void ToolTipManager::startContentRetrieval()
 
     KIO::PreviewJob* job = new KIO::PreviewJob(KFileItemList() << m_item, QSize(256, 256));
     job->setIgnoreMaximumSize(m_item.isLocalFile());
+    if (job->ui()) {
+        job->ui()->setWindow(qApp->activeWindow());
+    }
 
     connect(job, SIGNAL(gotPreview(KFileItem,QPixmap)),
             this, SLOT(setPreviewPix(KFileItem,QPixmap)));