From 652f57d28152491c42ad740d2bacd12a12d3d3d7 Mon Sep 17 00:00:00 2001 From: Kai Uwe Broulik Date: Tue, 29 Aug 2017 17:15:24 +0200 Subject: [PATCH] Prefer place name over actual name in title bar When inside a place, the address bar already gives it precedence over the actual folder name. By doing this in the title bar also, we make it consistent and can mask ugly technical terminology like "trash:/" and instead show the nice localized "Trash" place name as well as "Home" instead of lowercase internal user name. BUG: 211959 Differential Revision: https://phabricator.kde.org/D4826 --- src/dolphinmainwindow.cpp | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index ff834700b..3df25001c 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -62,6 +62,7 @@ #include #include #include +#include #include #include #include @@ -962,26 +963,35 @@ void DolphinMainWindow::tabCountChanged(int count) void DolphinMainWindow::setUrlAsCaption(const QUrl& url) { - QString caption; + static KFilePlacesModel s_placesModel; + + QString schemePrefix; if (!url.isLocalFile()) { - caption.append(url.scheme() + " - "); + schemePrefix.append(url.scheme() + " - "); if (!url.host().isEmpty()) { - caption.append(url.host() + " - "); + schemePrefix.append(url.host() + " - "); } } if (GeneralSettings::showFullPathInTitlebar()) { const QString path = url.adjusted(QUrl::StripTrailingSlash).path(); - caption.append(path); - } else { - QString fileName = url.adjusted(QUrl::StripTrailingSlash).fileName(); - if (fileName.isEmpty()) { - fileName = '/'; - } - caption.append(fileName); + setWindowTitle(schemePrefix + path); + return; + } + + const auto& matchedPlaces = s_placesModel.match(s_placesModel.index(0,0), KFilePlacesModel::UrlRole, url, 1, Qt::MatchExactly); + + if (!matchedPlaces.isEmpty()) { + setWindowTitle(s_placesModel.text(matchedPlaces.first())); + return; + } + + QString fileName = url.adjusted(QUrl::StripTrailingSlash).fileName(); + if (fileName.isEmpty()) { + fileName = '/'; } - setWindowTitle(caption); + setWindowTitle(schemePrefix + fileName); } void DolphinMainWindow::setupActions() -- 2.47.3