X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/41f7f4e4e89b97b5c7f31452774c37ce953dd125..7a6956da997a39a22c1f08138674459c3c3aa32b:/src/dolphinviewcontainer.cpp diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index 93e785f0d..3a17805ab 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -50,6 +50,7 @@ #include #include #include +#include DolphinViewContainer::DolphinViewContainer(const QUrl& url, QWidget* parent) : QWidget(parent), @@ -385,6 +386,14 @@ bool DolphinViewContainer::isFilterBarVisible() const void DolphinViewContainer::setSearchModeEnabled(bool enabled) { + m_searchBox->setVisible(enabled); + m_navigatorWidget->setVisible(!enabled); + + if (enabled) { + const QUrl& locationUrl = m_urlNavigator->locationUrl(); + m_searchBox->fromSearchUrl(locationUrl); + } + if (enabled == isSearchModeEnabled()) { if (enabled && !m_searchBox->hasFocus()) { m_searchBox->setFocus(); @@ -393,13 +402,7 @@ void DolphinViewContainer::setSearchModeEnabled(bool enabled) return; } - m_searchBox->setVisible(enabled); - m_navigatorWidget->setVisible(!enabled); - - if (enabled) { - const QUrl& locationUrl = m_urlNavigator->locationUrl(); - m_searchBox->fromSearchUrl(locationUrl); - } else { + if (!enabled) { m_view->setViewPropertiesContext(QString()); // Restore the URL for the URL navigator. If Dolphin has been @@ -428,7 +431,7 @@ QString DolphinViewContainer::placesText() const if (isSearchModeEnabled()) { text = i18n("Search for %1 in %2", m_searchBox->text(), m_searchBox->searchPath().fileName()); } else { - text = url().fileName(); + text = url().adjusted(QUrl::StripTrailingSlash).fileName(); if (text.isEmpty()) { text = url().host(); } @@ -448,6 +451,14 @@ void DolphinViewContainer::reload() QString DolphinViewContainer::caption() const { + if (isSearchModeEnabled()) { + if (currentSearchText().isEmpty()){ + return i18n("Search"); + } else { + return i18n("Search for %1", currentSearchText()); + } + } + if (GeneralSettings::showFullPathInTitlebar()) { if (!url().isLocalFile()) { return url().adjusted(QUrl::StripTrailingSlash).toString(); @@ -456,19 +467,12 @@ QString DolphinViewContainer::caption() const } KFilePlacesModel *placesModel = DolphinPlacesModelSingleton::instance().placesModel(); - const auto& matchedPlaces = placesModel->match(placesModel->index(0,0), KFilePlacesModel::UrlRole, url(), 1, Qt::MatchExactly); + const auto& matchedPlaces = placesModel->match(placesModel->index(0,0), KFilePlacesModel::UrlRole, QUrl(url().adjusted(QUrl::StripTrailingSlash).toString(QUrl::FullyEncoded).append("/?")), 1, Qt::MatchRegExp); if (!matchedPlaces.isEmpty()) { return placesModel->text(matchedPlaces.first()); } - if (isSearchModeEnabled()) { - if (currentSearchText().isEmpty()){ - return i18n("Search"); - } else { - return i18n("Search for %1", currentSearchText()); - } - } if (!url().isLocalFile()) { QUrl adjustedUrl = url().adjusted(QUrl::StripTrailingSlash); @@ -508,6 +512,7 @@ void DolphinViewContainer::setFilterBarVisible(bool visible) { Q_ASSERT(m_filterBar); if (visible) { + m_view->hideToolTip(ToolTipManager::HideBehavior::Instantly); m_filterBar->show(); m_filterBar->setFocus(); m_filterBar->selectAll(); @@ -657,6 +662,7 @@ void DolphinViewContainer::closeFilterBar() void DolphinViewContainer::setNameFilter(const QString& nameFilter) { + m_view->hideToolTip(ToolTipManager::HideBehavior::Instantly); m_view->setNameFilter(nameFilter); delayedStatusBarUpdate(); } @@ -687,30 +693,18 @@ void DolphinViewContainer::slotUrlNavigatorLocationChanged(const QUrl& url) QTimer::singleShot(0, this, &DolphinViewContainer::requestFocus); } } else if (KProtocolManager::isSourceProtocol(url)) { - QString app = QStringLiteral("konqueror"); if (url.scheme().startsWith(QLatin1String("http"))) { showMessage(i18nc("@info:status", // krazy:exclude=qmethods "Dolphin does not support web pages, the web browser has been launched"), Information); - - const KConfigGroup config(KSharedConfig::openConfig(QStringLiteral("kdeglobals")), "General"); - const QString browser = config.readEntry("BrowserApplication"); - if (!browser.isEmpty()) { - app = browser; - if (app.startsWith('!')) { - // a literal command has been configured, remove the '!' prefix - app = app.mid(1); - } - } } else { showMessage(i18nc("@info:status", - "Protocol not supported by Dolphin, Konqueror has been launched"), + "Protocol not supported by Dolphin, default application has been launched"), Information); } - const QString secureUrl = KShell::quoteArg(url.toDisplayString(QUrl::PreferLocalFile)); - const QString command = app + ' ' + secureUrl; - KRun::runCommand(command, app, app, this); + QDesktopServices::openUrl(url); + redirect(QUrl(), m_urlNavigator->locationUrl(1)); } else { showMessage(i18nc("@info:status", "Invalid protocol"), Error); } @@ -724,7 +718,7 @@ void DolphinViewContainer::slotUrlSelectionRequested(const QUrl& url) void DolphinViewContainer::redirect(const QUrl& oldUrl, const QUrl& newUrl) { - Q_UNUSED(oldUrl); + Q_UNUSED(oldUrl) const bool block = m_urlNavigator->signalsBlocked(); m_urlNavigator->blockSignals(true); @@ -787,7 +781,7 @@ void DolphinViewContainer::showErrorMessage(const QString& msg) bool DolphinViewContainer::isSearchUrl(const QUrl& url) const { - return url.scheme().contains(QStringLiteral("search")); + return url.scheme().contains(QLatin1String("search")); } void DolphinViewContainer::saveViewState()