From 5dd5eaf08da4b7d11e53c90096c2ea0e6a19e840 Mon Sep 17 00:00:00 2001 From: Emmanuel Pescosta Date: Sat, 10 Oct 2015 15:09:48 +0200 Subject: [PATCH] Allow home directories with non-local file paths. Paths like file:/home/me work now instead of showing an error message. BUG: 352743 BUG: 353550 FIXED-IN: 15.08.3 REVIEW: 125586 --- src/dolphinmainwindow.cpp | 3 ++- src/dolphinviewcontainer.cpp | 7 ++++--- src/global.cpp | 7 +++++++ src/global.h | 5 +++++ src/main.cpp | 3 +-- src/settings/startup/startupsettingspage.cpp | 9 +++++---- 6 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index f7a761307..1cde29ce2 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -21,6 +21,7 @@ #include "dolphinmainwindow.h" +#include "global.h" #include "dolphindockwidget.h" #include "dolphincontextmenu.h" #include "dolphinnewfilemenu.h" @@ -639,7 +640,7 @@ void DolphinMainWindow::goHome(Qt::MouseButtons buttons) { // The default case (left button pressed) is handled in goHome(). if (buttons == Qt::MiddleButton) { - openNewTab(GeneralSettings::self()->homeUrl()); + openNewTab(Dolphin::homeUrl()); } } diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index 8fea3ba9d..6ceb18d6f 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -39,6 +39,7 @@ #ifdef KActivities_FOUND #endif +#include "global.h" #include "dolphin_generalsettings.h" #include "filterbar/filterbar.h" #include "search/dolphinsearchbox.h" @@ -77,7 +78,7 @@ DolphinViewContainer::DolphinViewContainer(const QUrl& url, QWidget* parent) : const GeneralSettings* settings = GeneralSettings::self(); m_urlNavigator->setUrlEditable(settings->editableUrl()); m_urlNavigator->setShowFullPath(settings->showFullPath()); - m_urlNavigator->setHomeUrl(QUrl::fromLocalFile(settings->homeUrl())); + m_urlNavigator->setHomeUrl(Dolphin::homeUrl()); KUrlComboBox* editor = m_urlNavigator->editor(); editor->setCompletionMode(KCompletion::CompletionMode(settings->urlCompletionMode())); @@ -304,7 +305,7 @@ void DolphinViewContainer::readSettings() // settings of the URL navigator and the filterbar. m_urlNavigator->setUrlEditable(GeneralSettings::editableUrl()); m_urlNavigator->setShowFullPath(GeneralSettings::showFullPath()); - m_urlNavigator->setHomeUrl(QUrl::fromLocalFile(GeneralSettings::homeUrl())); + m_urlNavigator->setHomeUrl(Dolphin::homeUrl()); setFilterBarVisible(GeneralSettings::filterBar()); } @@ -340,7 +341,7 @@ void DolphinViewContainer::setSearchModeEnabled(bool enabled) // started with a search-URL, the home URL is used as fallback. QUrl url = m_searchBox->searchPath(); if (url.isEmpty() || !url.isValid() || isSearchUrl(url)) { - url = QUrl::fromLocalFile(GeneralSettings::self()->homeUrl()); + url = Dolphin::homeUrl(); } m_urlNavigator->setLocationUrl(url); } diff --git a/src/global.cpp b/src/global.cpp index 2f23ae4d4..d87a29c7a 100644 --- a/src/global.cpp +++ b/src/global.cpp @@ -20,6 +20,8 @@ #include "global.h" #include "dolphindebug.h" +#include "dolphin_generalsettings.h" + QList Dolphin::validateUris(const QStringList& uriList) { QList urls; @@ -33,3 +35,8 @@ QList Dolphin::validateUris(const QStringList& uriList) } return urls; } + +QUrl Dolphin::homeUrl() +{ + return QUrl::fromUserInput(GeneralSettings::homeUrl(), QString(), QUrl::AssumeLocalFile); +} diff --git a/src/global.h b/src/global.h index 7f1931f0d..0ac2e9acb 100644 --- a/src/global.h +++ b/src/global.h @@ -25,6 +25,11 @@ namespace Dolphin { QList validateUris(const QStringList& uriList); + + /** + * Returns the home url which is defined in General Settings + */ + QUrl homeUrl(); } #endif //GLOBAL_H diff --git a/src/main.cpp b/src/main.cpp index b4ca2c6af..bcc9f8a85 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -113,8 +113,7 @@ extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv) if (urls.isEmpty()) { // We need at least one URL to open Dolphin - const QUrl homeUrl(QUrl::fromLocalFile(GeneralSettings::homeUrl())); - urls.append(homeUrl); + urls.append(Dolphin::homeUrl()); } const bool splitView = parser.isSet("split") || GeneralSettings::splitView(); diff --git a/src/settings/startup/startupsettingspage.cpp b/src/settings/startup/startupsettingspage.cpp index 48d2a7b75..03258cf04 100644 --- a/src/settings/startup/startupsettingspage.cpp +++ b/src/settings/startup/startupsettingspage.cpp @@ -19,6 +19,7 @@ #include "startupsettingspage.h" +#include "global.h" #include "dolphinmainwindow.h" #include "dolphinviewcontainer.h" @@ -128,7 +129,7 @@ void StartupSettingsPage::applySettings() { GeneralSettings* settings = GeneralSettings::self(); - const QUrl url(QUrl::fromLocalFile(m_homeUrl->text())); + 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)); @@ -163,8 +164,8 @@ void StartupSettingsPage::slotSettingsChanged() void StartupSettingsPage::selectHomeUrl() { - const QString homeUrl = m_homeUrl->text(); - QUrl url = QFileDialog::getExistingDirectoryUrl(this, QString(), QUrl::fromLocalFile(homeUrl)); + const QUrl homeUrl(QUrl::fromUserInput(m_homeUrl->text(), QString(), QUrl::AssumeLocalFile)); + QUrl url = QFileDialog::getExistingDirectoryUrl(this, QString(), homeUrl); if (!url.isEmpty()) { m_homeUrl->setText(url.toDisplayString(QUrl::PreferLocalFile)); slotSettingsChanged(); @@ -183,7 +184,7 @@ void StartupSettingsPage::useDefaultLocation() void StartupSettingsPage::loadSettings() { - const QUrl url(QUrl::fromLocalFile(GeneralSettings::homeUrl())); + const QUrl url(Dolphin::homeUrl()); m_homeUrl->setText(url.toDisplayString(QUrl::PreferLocalFile)); m_splitView->setChecked(GeneralSettings::splitView()); m_editableUrl->setChecked(GeneralSettings::editableUrl());