]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Prefer place name over actual name in title bar
authorKai Uwe Broulik <kde@privat.broulik.de>
Tue, 29 Aug 2017 15:15:24 +0000 (17:15 +0200)
committerKai Uwe Broulik <kde@privat.broulik.de>
Tue, 29 Aug 2017 15:15:24 +0000 (17:15 +0200)
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

index ff834700bf0bab311ed1f6c24b1f2cda1123c43f..3df25001c986407440743d7d694b6cdc319db878 100644 (file)
@@ -62,6 +62,7 @@
 #include <KProtocolInfo>
 #include <QMenu>
 #include <KMessageBox>
+#include <KFilePlacesModel>
 #include <KFileItemListProperties>
 #include <KRun>
 #include <KShell>
@@ -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()