X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/caf49dafa557caa9bd985702a240284348c82b40..86df5ae994e96483559020befd96b838aee4d3ee:/src/views/dolphinview.cpp diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index bb537b982..e6aecff80 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -8,6 +8,7 @@ #include "dolphinview.h" #include "dolphin_generalsettings.h" +#include "dolphin_detailsmodesettings.h" #include "dolphinitemlistview.h" #include "dolphinnewfilemenuobserver.h" #include "draganddrophelper.h" @@ -59,6 +60,7 @@ #include #include #include +#include #include DolphinView::DolphinView(const QUrl& url, QWidget* parent) : @@ -200,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, @@ -918,6 +922,11 @@ bool DolphinView::eventFilter(QObject* watched, QEvent* event) if (watched == m_view) { m_dragging = false; } + break; + + case QEvent::ToolTip: + tryShowNameToolTip(event); + default: break; } @@ -1049,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()); + Q_EMIT requestContextMenu(pos.toPoint(), item, selectedItems(), url()); } void DolphinView::slotViewContextMenuRequested(const QPointF& pos) { - Q_EMIT requestContextMenu(pos.toPoint(), KFileItem(), url(), QList()); + Q_EMIT requestContextMenu(pos.toPoint(), KFileItem(), selectedItems(), url()); } void DolphinView::slotHeaderContextMenuRequested(const QPointF& pos) @@ -1111,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); @@ -1141,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(); @@ -1193,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); @@ -1637,13 +1659,15 @@ void DolphinView::updateViewState() void DolphinView::hideToolTip(const ToolTipManager::HideBehavior behavior) { -#ifdef HAVE_BALOO if (GeneralSettings::showToolTips()) { +#ifdef HAVE_BALOO m_toolTipManager->hideToolTip(behavior); - } #else Q_UNUSED(behavior) #endif + } else if (m_mode == DolphinView::IconsView) { + QToolTip::hideText(); + } } void DolphinView::slotTwoClicksRenamingTimerTimeout() @@ -1984,6 +2008,7 @@ void DolphinView::applyViewProperties(const ViewProperties& props) } else { header->setAutomaticColumnResizing(true); } + header->setLeadingPadding(DetailsModeSettings::leadingPadding()); } m_view->endTransaction(); @@ -2141,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")) { @@ -2158,3 +2189,25 @@ void DolphinView::updatePlaceholderLabel() m_placeholderLabel->setVisible(true); } + +void DolphinView::tryShowNameToolTip(QEvent* event) +{ + if (!GeneralSettings::showToolTips() && m_mode == DolphinView::IconsView) { + QHelpEvent *hoverEvent = reinterpret_cast(event); + const std::optional index = m_view->itemAt(hoverEvent->pos()); + + if (!index.has_value()) { + return; + } + + // Check whether the filename has been elided + const bool isElided = m_view->isElided(index.value()); + + if(isElided) { + const KFileItem item = m_model->fileItem(index.value()); + const QString text = item.text(); + const QPoint pos = mapToGlobal(hoverEvent->pos()); + QToolTip::showText(pos, text); + } + } +}