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:
#include <KIcon>
#include <KIconLoader>
#include <KIO/NetAccess>
#include <KIcon>
#include <KIconLoader>
#include <KIO/NetAccess>
+#include <KIO/JobUiDelegate>
#include <KInputDialog>
#include <KLocale>
#include <KProtocolManager>
#include <KInputDialog>
#include <KLocale>
#include <KProtocolManager>
} else if (KProtocolManager::supportsListing(url)) {
// stat the URL to see if it is a dir or not
m_lastHandleUrlStatJob = KIO::stat(url, KIO::HideProgressInfo);
} 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*)));
connect(m_lastHandleUrlStatJob, SIGNAL(result(KJob*)),
this, SLOT(slotHandleUrlStatFinished(KJob*)));
QToolButton* m_controlButton;
QTimer* m_updateToolBarTimer;
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
/**
* Set to true, if the filter dock visibility is only temporary set
#include "private/kfileitemmodelsortalgorithm.h"
#include "private/kfileitemmodeldirlister.h"
#include "private/kfileitemmodelsortalgorithm.h"
#include "private/kfileitemmodeldirlister.h"
#include <QMimeData>
#include <QTimer>
#include <QMimeData>
#include <QTimer>
m_dirLister = new KFileItemModelDirLister(this);
m_dirLister->setAutoUpdate(true);
m_dirLister->setDelayedMimeTypes(true);
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()));
connect(m_dirLister, SIGNAL(started(KUrl)), this, SIGNAL(directoryLoadingStarted()));
connect(m_dirLister, SIGNAL(canceled()), this, SLOT(slotCanceled()));
#include <KDebug>
#include <KFileItem>
#include <KGlobal>
#include <KDebug>
#include <KFileItem>
#include <KGlobal>
+#include <KIO/JobUiDelegate>
#include <KIO/PreviewJob>
#include "private/kpixmapmodifier.h"
#include <KIO/PreviewJob>
#include "private/kpixmapmodifier.h"
#include <QPainter>
#include <QPixmap>
#include <QElapsedTimer>
#include <QPainter>
#include <QPixmap>
#include <QElapsedTimer>
}
KIO::PreviewJob* job = new KIO::PreviewJob(itemSubSet, cacheSize, &m_enabledPlugins);
job->setIgnoreMaximumSize(items.first().isLocalFile());
}
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)));
connect(job, SIGNAL(gotPreview(KFileItem,QPixmap)),
this, SLOT(slotGotPreview(KFileItem,QPixmap)));
#include "informationpanelcontent.h"
#include <KIO/Job>
#include "informationpanelcontent.h"
#include <KIO/Job>
+#include <KIO/JobUiDelegate>
#include <KDirNotify>
#include <QApplication>
#include <QShowEvent>
#include <KDirNotify>
#include <QApplication>
#include <QShowEvent>
// 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);
// 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 {
connect(m_folderStatJob, SIGNAL(result(KJob*)),
this, SLOT(slotFolderStatFinished(KJob*)));
} else {
#include <panels/panel.h>
class InformationPanelContent;
#include <panels/panel.h>
class InformationPanelContent;
+namespace KIO
+{
+ class Job;
+}
/**
* @brief Panel for showing meta information of one ore more selected items.
/**
* @brief Panel for showing meta information of one ore more selected items.
KFileItem m_fileItem; // file item for m_shownUrl if available (otherwise null)
KFileItemList m_selection;
KFileItem m_fileItem; // file item for m_shownUrl if available (otherwise null)
KFileItemList m_selection;
+ KIO::Job* m_folderStatJob;
InformationPanelContent* m_content;
};
InformationPanelContent* m_content;
};
#include <kfilemetadatawidget.h>
#include <KFilePlacesModel>
#include <KGlobalSettings>
#include <kfilemetadatawidget.h>
#include <KFilePlacesModel>
#include <KGlobalSettings>
+#include <KIO/JobUiDelegate>
#include <KIO/PreviewJob>
#include <KIconEffect>
#include <KIconLoader>
#include <KIO/PreviewJob>
#include <KIconEffect>
#include <KIconLoader>
KIO::PreviewJob* job = new KIO::PreviewJob(KFileItemList() << item, QSize(m_preview->width(), m_preview->height()));
job->setScaleType(KIO::PreviewJob::Unscaled);
job->setIgnoreMaximumSize(item.isLocalFile());
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)));
connect(job, SIGNAL(gotPreview(KFileItem,QPixmap)),
this, SLOT(showPreview(KFileItem,QPixmap)));
#include <search/dolphinsearchinformation.h>
#include <KFileItem>
#include <search/dolphinsearchinformation.h>
#include <KFileItem>
-#include <KIO/JobClasses>
+#include <KIO/JobClasses>
+#include <KIO/JobUiDelegate>
#include <KMenu>
#include <QPushButton>
#include <KMenu>
#include <QPushButton>
// 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);
// 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 {
connect(m_lastSetUrlStatJob, SIGNAL(result(KJob*)),
this, SLOT(slotSetUrlStatFinished(KJob*)));
} else {
#include <Nepomuk/Query/Query>
#include <panels/panel.h>
#include <Nepomuk/Query/Query>
#include <panels/panel.h>
+namespace KIO
+{
+ class Job;
+};
-namespace Nepomuk {
- namespace Utils {
+namespace Nepomuk
+{
+ namespace Utils
+ {
private:
bool m_initialized;
SearchLocation m_searchLocation;
private:
bool m_initialized;
SearchLocation m_searchLocation;
- KJob* m_lastSetUrlStatJob;
+ KIO::Job* m_lastSetUrlStatJob;
KUrl m_startedFromDir;
Nepomuk::Utils::FacetWidget* m_facetWidget;
KUrl m_startedFromDir;
Nepomuk::Utils::FacetWidget* m_facetWidget;
sendCdToTerminal(url.toLocalFile());
} else {
m_mostLocalUrlJob = KIO::mostLocalUrl(url, KIO::HideProgressInfo);
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*)));
}
}
connect(m_mostLocalUrlJob, SIGNAL(result(KJob*)), this, SLOT(slotMostLocalUrlResult(KJob*)));
}
}
#include <kitemviews/kitemlistview.h>
#include <kitemviews/kitemlistcontroller.h>
#include <KIO/DeleteJob>
#include <kitemviews/kitemlistview.h>
#include <kitemviews/kitemlistcontroller.h>
#include <KIO/DeleteJob>
+#include <KIO/JobUiDelegate>
#include <KIO/NetAccess>
#include <KIO/PreviewJob>
#include <KJob>
#include <KIO/NetAccess>
#include <KIO/PreviewJob>
#include <KJob>
if (del) {
KIO::Job* job = KIO::del(list);
if (del) {
KIO::Job* job = KIO::del(list);
+ if (job->ui()) {
+ job->ui()->setWindow(this);
+ }
connect(job, SIGNAL(result(KJob*)),
this, SLOT(slotDeleteFileFinished(KJob*)));
}
connect(job, SIGNAL(result(KJob*)),
this, SLOT(slotDeleteFileFinished(KJob*)));
}
#include "filemetadatatooltip.h"
#include <KIcon>
#include "filemetadatatooltip.h"
#include <KIcon>
+#include <KIO/JobUiDelegate>
#include <KIO/PreviewJob>
#include <QApplication>
#include <KIO/PreviewJob>
#include <QApplication>
KIO::PreviewJob* job = new KIO::PreviewJob(KFileItemList() << m_item, QSize(256, 256));
job->setIgnoreMaximumSize(m_item.isLocalFile());
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)));
connect(job, SIGNAL(gotPreview(KFileItem,QPixmap)),
this, SLOT(setPreviewPix(KFileItem,QPixmap)));