┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKai Uwe Broulik <[email protected]>2022-03-18 19:56:20 +0100
committerKai Uwe Broulik <[email protected]>2022-03-18 19:57:13 +0100
commit3fab07c967461aa68de98345395a57830abb789d (patch)
treeab348de451c710feb54fbf74cc46970c11932651 /src
parentc6bccbf6de33ba907f1cddfa64dadb8cfeea4d2c (diff)
Prettify labels in back/forward button menu
Adds a compact label based on the closes place similar to the address bar (e.g. instead of /home/user/Pictures/Holidays it will show Pictures/Holidays), unless "show full path in address bar" is enabled. Also, add the folder icon
Diffstat (limited to 'src')
-rw-r--r--src/dolphinmainwindow.cpp36
-rw-r--r--src/dolphinmainwindow.h3
2 files changed, 37 insertions, 2 deletions
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index 166091ca7..d244c4a7c 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -749,13 +749,45 @@ void DolphinMainWindow::slotToolBarActionMiddleClicked(QAction *action)
}
}
+QAction *DolphinMainWindow::urlNavigatorHistoryAction(const KUrlNavigator *urlNavigator, int historyIndex, QObject *parent)
+{
+ const QUrl url = urlNavigator->locationUrl(historyIndex);
+
+ QString text = url.toDisplayString(QUrl::PreferLocalFile);
+
+ if (!urlNavigator->showFullPath()) {
+ const KFilePlacesModel *placesModel = DolphinPlacesModelSingleton::instance().placesModel();
+
+ const QModelIndex closestIdx = placesModel->closestItem(url);
+ if (closestIdx.isValid()) {
+ const QUrl placeUrl = placesModel->url(closestIdx);
+
+ text = placesModel->text(closestIdx);
+
+ QString pathInsidePlace = url.path().mid(placeUrl.path().length());
+
+ if (!pathInsidePlace.isEmpty() && !pathInsidePlace.startsWith(QLatin1Char('/'))) {
+ pathInsidePlace.prepend(QLatin1Char('/'));
+ }
+
+ if (pathInsidePlace != QLatin1Char('/')) {
+ text.append(pathInsidePlace);
+ }
+ }
+ }
+
+ QAction *action = new QAction(QIcon::fromTheme(KIO::iconNameForUrl(url)), text, parent);
+ action->setData(historyIndex);
+ return action;
+}
+
void DolphinMainWindow::slotAboutToShowBackPopupMenu()
{
const KUrlNavigator *urlNavigator = m_activeViewContainer->urlNavigatorInternalWithHistory();
int entries = 0;
m_backAction->menu()->clear();
for (int i = urlNavigator->historyIndex() + 1; i < urlNavigator->historySize() && entries < MaxNumberOfNavigationentries; ++i, ++entries) {
- QAction* action = new QAction(urlNavigator->locationUrl(i).toDisplayString(QUrl::PreferLocalFile), m_backAction->menu());
+ QAction *action = urlNavigatorHistoryAction(urlNavigator, i, m_backAction->menu());
action->setData(i);
m_backAction->menu()->addAction(action);
}
@@ -784,7 +816,7 @@ void DolphinMainWindow::slotAboutToShowForwardPopupMenu()
int entries = 0;
m_forwardAction->menu()->clear();
for (int i = urlNavigator->historyIndex() - 1; i >= 0 && entries < MaxNumberOfNavigationentries; --i, ++entries) {
- QAction* action = new QAction(urlNavigator->locationUrl(i).toDisplayString(QUrl::PreferLocalFile), m_forwardAction->menu());
+ QAction *action = urlNavigatorHistoryAction(urlNavigator, i, m_forwardAction->menu());
action->setData(i);
m_forwardAction->menu()->addAction(action);
}
diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h
index 1a3ec4efb..fbe926cef 100644
--- a/src/dolphinmainwindow.h
+++ b/src/dolphinmainwindow.h
@@ -653,6 +653,9 @@ private:
*/
bool addHamburgerMenuToToolbar();
+ /** Creates an action representing an item in the URL navigator history */
+ static QAction *urlNavigatorHistoryAction(const KUrlNavigator *urlNavigator, int historyIndex, QObject *parent = nullptr);
+
private:
/**
* Implements a custom error handling for the undo manager. This