]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinview.cpp
Merge branch 'release/22.04'
[dolphin.git] / src / views / dolphinview.cpp
index 573505e763122478666d1c1dae3c89b092f2ba8d..e6aecff80bad89fafc8909d89e9852061cc9997a 100644 (file)
@@ -8,6 +8,7 @@
 #include "dolphinview.h"
 
 #include "dolphin_generalsettings.h"
+#include "dolphin_detailsmodesettings.h"
 #include "dolphinitemlistview.h"
 #include "dolphinnewfilemenuobserver.h"
 #include "draganddrophelper.h"
@@ -201,6 +202,8 @@ DolphinView::DolphinView(const QUrl& url, QWidget* parent) :
             this, &DolphinView::slotRoleEditingCanceled);
     connect(m_view->header(), &KItemListHeader::columnWidthChangeFinished,
             this, &DolphinView::slotHeaderColumnWidthChangeFinished);
+    connect(m_view->header(), &KItemListHeader::leadingPaddingChanged,
+            this, &DolphinView::slotLeadingPaddingWidthChanged);
 
     KItemListSelectionManager* selectionManager = controller->selectionManager();
     connect(selectionManager, &KItemListSelectionManager::selectionChanged,
@@ -1055,12 +1058,12 @@ void DolphinView::slotItemContextMenuRequested(int index, const QPointF& pos)
     }
 
     const KFileItem item = m_model->fileItem(index);
-    Q_EMIT requestContextMenu(pos.toPoint(), item, url(), QList<QAction*>());
+    Q_EMIT requestContextMenu(pos.toPoint(), item, selectedItems(), url());
 }
 
 void DolphinView::slotViewContextMenuRequested(const QPointF& pos)
 {
-    Q_EMIT requestContextMenu(pos.toPoint(), KFileItem(), url(), QList<QAction*>());
+    Q_EMIT requestContextMenu(pos.toPoint(), KFileItem(), selectedItems(), url());
 }
 
 void DolphinView::slotHeaderContextMenuRequested(const QPointF& pos)
@@ -1117,6 +1120,10 @@ void DolphinView::slotHeaderContextMenuRequested(const QPointF& pos)
     QActionGroup* widthsGroup = new QActionGroup(menu);
     const bool autoColumnWidths = props.headerColumnWidths().isEmpty();
 
+    QAction* toggleLeadingPaddingAction = menu->addAction(i18nc("@action:inmenu", "Leading Column Padding"));
+    toggleLeadingPaddingAction->setCheckable(true);
+    toggleLeadingPaddingAction->setChecked(view->header()->leadingPadding() > 0);
+
     QAction* autoAdjustWidthsAction = menu->addAction(i18nc("@action:inmenu", "Automatic Column Widths"));
     autoAdjustWidthsAction->setCheckable(true);
     autoAdjustWidthsAction->setChecked(autoColumnWidths);
@@ -1147,6 +1154,8 @@ void DolphinView::slotHeaderContextMenuRequested(const QPointF& pos)
             }
             props.setHeaderColumnWidths(columnWidths);
             header->setAutomaticColumnResizing(false);
+        } else if (action == toggleLeadingPaddingAction) {
+            header->setLeadingPadding(toggleLeadingPaddingAction->isChecked() ? 20 : 0);
         } else {
             // Show or hide the selected role
             const QByteArray selectedRole = action->data().toByteArray();
@@ -1199,6 +1208,13 @@ void DolphinView::slotHeaderColumnWidthChangeFinished(const QByteArray& role, qr
     props.setHeaderColumnWidths(columnWidths);
 }
 
+void DolphinView::slotLeadingPaddingWidthChanged(qreal width)
+{
+    ViewProperties props(viewPropertiesUrl());
+    DetailsModeSettings::setLeadingPadding(int(width));
+    m_view->writeSettings();
+}
+
 void DolphinView::slotItemHovered(int index)
 {
     const KFileItem item = m_model->fileItem(index);
@@ -1992,6 +2008,7 @@ void DolphinView::applyViewProperties(const ViewProperties& props)
         } else {
             header->setAutomaticColumnResizing(true);
         }
+        header->setLeadingPadding(DetailsModeSettings::leadingPadding());
     }
 
     m_view->endTransaction();
@@ -2149,7 +2166,13 @@ void DolphinView::updatePlaceholderLabel()
     } else if (m_url.scheme() == QLatin1String("trash") && m_url.path() == QLatin1String("/")) {
         m_placeholderLabel->setText(i18n("Trash is empty"));
     } else if (m_url.scheme() == QLatin1String("tags")) {
-        m_placeholderLabel->setText(i18n("No tags"));
+        if (m_url.path() == QLatin1Char('/')) {
+            m_placeholderLabel->setText(i18n("No tags"));
+        } else {
+            const QString tagName = m_url.path().mid(1); // Remove leading /
+            m_placeholderLabel->setText(i18n("No files tagged with \"%1\"", tagName));
+        }
+
     } else if (m_url.scheme() == QLatin1String("recentlyused")) {
         m_placeholderLabel->setText(i18n("No recently used items"));
     } else if (m_url.scheme() == QLatin1String("smb")) {
@@ -2171,17 +2194,17 @@ void DolphinView::tryShowNameToolTip(QEvent* event)
 {
     if (!GeneralSettings::showToolTips() && m_mode == DolphinView::IconsView) {
         QHelpEvent *hoverEvent = reinterpret_cast<QHelpEvent *>(event);
-        const int index = m_view->itemAt(hoverEvent->pos());
+        const std::optional<int> index = m_view->itemAt(hoverEvent->pos());
 
-        if (index == -1) {
+        if (!index.has_value()) {
             return;
         }
 
         // Check whether the filename has been elided
-        const bool isElided = m_view->isElided(index);
+        const bool isElided = m_view->isElided(index.value());
 
         if(isElided) {
-            const KFileItem item = m_model->fileItem(index);
+            const KFileItem item = m_model->fileItem(index.value());
             const QString text = item.text();
             const QPoint pos = mapToGlobal(hoverEvent->pos());
             QToolTip::showText(pos, text);