Commit 3fab07c9 authored by Kai Uwe Broulik's avatar Kai Uwe Broulik 🍇
Browse files

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
parent c6bccbf6
Pipeline #152334 passed with stage
in 2 minutes and 30 seconds
......@@ -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);
}
......
......@@ -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
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment