┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/settings
diff options
context:
space:
mode:
authorDerek Christ <[email protected]>2020-12-21 13:08:12 +0100
committerElvis Angelaccio <[email protected]>2020-12-21 21:28:50 +0000
commit87bb0ca10b9a486d982ceadf9be3d0dad68cf437 (patch)
tree08543ebf17864201df2bade341a502db4bf45914 /src/settings
parentecd5c7d678cdd607c8f9bafa8fcdf66a3f9bace7 (diff)
Allow non-local startup location
Only local directories were supported to be set as the starting location of Dolphin. This commit fixes this by using an KIO::StatJob to determine if the path is actually pointing to a directory or a file regardless if it is a local or a remote path. Additionaly a hard-coded exception for urls with the scheme "timeline" was removed because with the new fix it is now obsolete. BUG: 428885
Diffstat (limited to 'src/settings')
-rw-r--r--src/settings/startup/startupsettingspage.cpp20
-rw-r--r--src/settings/startup/startupsettingspage.h1
2 files changed, 17 insertions, 4 deletions
diff --git a/src/settings/startup/startupsettingspage.cpp b/src/settings/startup/startupsettingspage.cpp
index 6c3f6bdad..a7fcec4fa 100644
--- a/src/settings/startup/startupsettingspage.cpp
+++ b/src/settings/startup/startupsettingspage.cpp
@@ -13,6 +13,7 @@
#include <KLocalizedString>
#include <KMessageBox>
+#include <KProtocolManager>
#include <QButtonGroup>
#include <QCheckBox>
@@ -138,11 +139,17 @@ void StartupSettingsPage::applySettings()
GeneralSettings* settings = GeneralSettings::self();
const QUrl url(QUrl::fromUserInput(m_homeUrl->text(), QString(), QUrl::AssumeLocalFile));
- KFileItem fileItem(url);
- if ((url.isValid() && fileItem.isDir()) || (url.scheme() == QLatin1String("timeline"))) {
- settings->setHomeUrl(url.toDisplayString(QUrl::PreferLocalFile));
+ if (url.isValid() && KProtocolManager::supportsListing(url)) {
+ KIO::StatJob* job = KIO::statDetails(url, KIO::StatJob::SourceSide, KIO::StatDetail::StatBasic, KIO::JobFlag::HideProgressInfo);
+ connect(job, &KJob::result, this, [this, settings, url](KJob* job) {
+ if (job->error() == 0 && qobject_cast<KIO::StatJob*>(job)->statResult().isDir()) {
+ settings->setHomeUrl(url.toDisplayString(QUrl::PreferLocalFile));
+ } else {
+ showSetDefaultDirectoryError();
+ }
+ });
} else {
- KMessageBox::error(this, i18nc("@info", "The location for the home folder is invalid or does not exist, it will not be applied."));
+ showSetDefaultDirectoryError();
}
// Remove saved state if "remember open tabs" has been turned off
@@ -222,3 +229,8 @@ void StartupSettingsPage::loadSettings()
m_showFullPathInTitlebar->setChecked(GeneralSettings::showFullPathInTitlebar());
m_openExternallyCalledFolderInNewTab->setChecked(GeneralSettings::openExternallyCalledFolderInNewTab());
}
+
+void StartupSettingsPage::showSetDefaultDirectoryError()
+{
+ KMessageBox::error(this, i18nc("@info", "The location for the home folder is invalid or does not exist, it will not be applied."));
+}
diff --git a/src/settings/startup/startupsettingspage.h b/src/settings/startup/startupsettingspage.h
index ff3ffcb12..1090e0822 100644
--- a/src/settings/startup/startupsettingspage.h
+++ b/src/settings/startup/startupsettingspage.h
@@ -43,6 +43,7 @@ private slots:
private:
void loadSettings();
+ void showSetDefaultDirectoryError();
private:
QUrl m_url;