diff --git a/src/dolphinnavigatorswidgetaction.cpp b/src/dolphinnavigatorswidgetaction.cpp index cabeac4ed2..6b76aad084 100644 --- a/src/dolphinnavigatorswidgetaction.cpp +++ b/src/dolphinnavigatorswidgetaction.cpp @@ -212,11 +212,24 @@ QWidget *DolphinNavigatorsWidgetAction::createNavigatorWidget(Side side) const auto emptyTrashButton = newEmptyTrashButton(urlNavigator, navigatorWidget); layout->addWidget(emptyTrashButton); - connect(urlNavigator, &KUrlNavigator::urlChanged, this, [this]() { + connect(urlNavigator, &KUrlNavigator::urlChanged, this, [urlNavigator, this]() { + // Update URL navigator to show a server URL entry placeholder text if we + // just loaded the remote:/ page, to make it easier for users to figure out + // that they can enter arbitrary remote URLs. See bug 414670 + if (urlNavigator->locationUrl().scheme() == QLatin1String("remote")) { + if (!urlNavigator->isUrlEditable()) { + urlNavigator->setUrlEditable(true); + } + urlNavigator->clearText(); + urlNavigator->setPlaceholderText(i18n("Enter server URL (e.g. smb://[ip address])")); + } else { + urlNavigator->setPlaceholderText(QString()); + } + // We have to wait for DolphinUrlNavigator::sizeHint() to update which // happens a little bit later than when urlChanged is emitted. this->m_adjustSpacingTimer->start(); - }); + }, Qt::QueuedConnection); auto trailingSpacing = new QWidget{navigatorWidget}; layout->addWidget(trailingSpacing); diff --git a/src/dolphinurlnavigator.cpp b/src/dolphinurlnavigator.cpp index 1dfe5420f1..d8d325bb43 100644 --- a/src/dolphinurlnavigator.cpp +++ b/src/dolphinurlnavigator.cpp @@ -101,6 +101,16 @@ void DolphinUrlNavigator::setVisualState(const VisualState& visualState) } } +void DolphinUrlNavigator::clearText() const +{ + editor()->lineEdit()->clear(); +} + +void DolphinUrlNavigator::setPlaceholderText(const QString &text) +{ + editor()->lineEdit()->setPlaceholderText(text); +} + void DolphinUrlNavigator::slotReturnPressed() { if (!GeneralSettings::editableUrl()) { diff --git a/src/dolphinurlnavigator.h b/src/dolphinurlnavigator.h index 9bcc32b4d1..1962e2f062 100644 --- a/src/dolphinurlnavigator.h +++ b/src/dolphinurlnavigator.h @@ -66,6 +66,16 @@ public: */ void setVisualState(const VisualState &visualState); + /** + * Clears the text in the text field + */ + void clearText() const; + + /** + * Displays placeholder text in the URL navigator + */ + void setPlaceholderText(const QString &text); + public slots: /** * Switches to "breadcrumb" mode if the editable mode is not set to be