┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dolphinmainwindow.cpp47
-rw-r--r--src/dolphinmainwindow.h12
-rw-r--r--src/dolphinviewcontainer.cpp9
3 files changed, 33 insertions, 35 deletions
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index 5741e8943..0aafe3ad6 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -57,13 +57,13 @@
#include <KIO/CommandLauncherJob>
#include <KIO/JobUiDelegate>
#include <KIO/OpenFileManagerWindowJob>
+#include <KIO/OpenUrlJob>
#include <KJobWidgets>
#include <KLocalizedString>
#include <KMessageBox>
#include <KNS3/KMoreToolsMenuFactory>
#include <KProtocolInfo>
#include <KProtocolManager>
-#include <KRun>
#include <KShell>
#include <KStandardAction>
#include <KStartupInfo>
@@ -114,7 +114,7 @@ DolphinMainWindow::DolphinMainWindow() :
m_bookmarkHandler(nullptr),
m_controlButton(nullptr),
m_updateToolBarTimer(nullptr),
- m_lastHandleUrlStatJob(nullptr),
+ m_lastHandleUrlOpenJob(nullptr),
m_terminalPanel(nullptr),
m_placesPanel(nullptr),
m_tearDownFromPlacesRequested(false),
@@ -1036,34 +1036,31 @@ void DolphinMainWindow::editSettings()
void DolphinMainWindow::handleUrl(const QUrl& url)
{
- delete m_lastHandleUrlStatJob;
- m_lastHandleUrlStatJob = nullptr;
+ delete m_lastHandleUrlOpenJob;
+ m_lastHandleUrlOpenJob = nullptr;
if (url.isLocalFile() && QFileInfo(url.toLocalFile()).isDir()) {
activeViewContainer()->setUrl(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->uiDelegate()) {
- KJobWidgets::setWindow(m_lastHandleUrlStatJob, this);
- }
- connect(m_lastHandleUrlStatJob, &KIO::Job::result,
- this, &DolphinMainWindow::slotHandleUrlStatFinished);
-
} else {
- new KRun(url, this); // Automatically deletes itself after being finished
- }
-}
+ m_lastHandleUrlOpenJob = new KIO::OpenUrlJob(url);
+ m_lastHandleUrlOpenJob->setUiDelegate(new KIO::JobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, this));
+ m_lastHandleUrlOpenJob->setRunExecutables(true);
-void DolphinMainWindow::slotHandleUrlStatFinished(KJob* job)
-{
- m_lastHandleUrlStatJob = nullptr;
- const KIO::UDSEntry entry = static_cast<KIO::StatJob*>(job)->statResult();
- const QUrl url = static_cast<KIO::StatJob*>(job)->url();
- if (entry.isDir()) {
- activeViewContainer()->setUrl(url);
- } else {
- new KRun(url, this); // Automatically deletes itself after being finished
+ connect(m_lastHandleUrlOpenJob, &KIO::OpenUrlJob::mimeTypeFound, this,
+ [this, url](const QString &mimetype) {
+ if (mimetype == QLatin1String("inode/directory")) {
+ // If it's a dir, we'll take it from here
+ m_lastHandleUrlOpenJob->kill();
+ m_lastHandleUrlOpenJob = nullptr;
+ activeViewContainer()->setUrl(url);
+ }
+ });
+
+ connect(m_lastHandleUrlOpenJob, &KIO::OpenUrlJob::result, this, [this]() {
+ m_lastHandleUrlOpenJob = nullptr;
+ });
+
+ m_lastHandleUrlOpenJob->start();
}
}
diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h
index 9c36c98b2..59e0afa31 100644
--- a/src/dolphinmainwindow.h
+++ b/src/dolphinmainwindow.h
@@ -54,6 +54,10 @@ class QIcon;
class PlacesPanel;
class TerminalPanel;
+namespace KIO {
+ class OpenUrlJob;
+}
+
/**
* @short Main window for Dolphin.
*
@@ -433,12 +437,6 @@ private slots:
void handleUrl(const QUrl& url);
/**
- * handleUrl() can trigger a stat job to see if the url can actually
- * be listed.
- */
- void slotHandleUrlStatFinished(KJob* job);
-
- /**
* Is invoked when the write state of a folder has been changed and
* enables/disables the "Create New..." menu entry.
*/
@@ -644,7 +642,7 @@ private:
QToolButton* m_controlButton;
QTimer* m_updateToolBarTimer;
- KIO::Job* m_lastHandleUrlStatJob;
+ KIO::OpenUrlJob *m_lastHandleUrlOpenJob;
TerminalPanel* m_terminalPanel;
PlacesPanel* m_placesPanel;
diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp
index 4ab34a06a..7809ca7e3 100644
--- a/src/dolphinviewcontainer.cpp
+++ b/src/dolphinviewcontainer.cpp
@@ -38,10 +38,11 @@
#include <KFileItemActions>
#include <KFilePlacesModel>
#include <KIO/PreviewJob>
+#include <KIO/OpenUrlJob>
+#include <KIO/JobUiDelegate>
#include <KLocalizedString>
#include <KMessageWidget>
#include <KProtocolManager>
-#include <KRun>
#include <KShell>
#include <KUrlComboBox>
#include <KUrlNavigator>
@@ -645,8 +646,10 @@ void DolphinViewContainer::slotItemActivated(const KFileItem& item)
return;
}
- KRun *run = new KRun(item.targetUrl(), this);
- run->setShowScriptExecutionPrompt(true);
+ KIO::OpenUrlJob *job = new KIO::OpenUrlJob(item.targetUrl());
+ job->setUiDelegate(new KIO::JobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, this));
+ job->setShowOpenOrExecuteDialog(true);
+ job->start();
}
void DolphinViewContainer::slotItemsActivated(const KFileItemList& items)