From 1e13c6abb6fc179fa8da32fe62df89560a801b3d Mon Sep 17 00:00:00 2001 From: Felix Ernst Date: Thu, 23 Apr 2026 18:22:49 +0200 Subject: Show type-ahead typing feedback in the status bar The typed keys are displayed in the status bar while also displaying which file name they were auto-completed to (i.e. which file was selected because of the typing). This commit contains some refactoring to keep the original status bar functionality working as expected. This commit also separates DolphinMainWindow from DolphinStatusBar which is great news architecture-wise. The status bar is encapsulated within the DolphinViewContainer. --- src/views/dolphinview.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/views/dolphinview.cpp') diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index 794223861..3c973618c 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -130,6 +130,25 @@ DolphinView::DolphinView(const QUrl &url, QWidget *parent) KItemListController *controller = new KItemListController(m_model, m_view, this); controller->setAutoActivationEnabled(GeneralSettings::autoExpandFolders()); connect(controller, &KItemListController::doubleClickViewBackground, this, &DolphinView::doubleClickViewBackground); + connect(controller, &KItemListController::typeAheadUsed, this, [this](const QString &typedString, std::optional foundIndex) { + if (foundIndex.has_value()) { + const KFileItem item = m_model->fileItem(foundIndex.value()); + if (item.isNull()) { + return; + } + const KColorScheme colorScheme = KColorScheme(QPalette::Normal, KColorScheme::Tooltip); + const QColor autoCompleteTextColor = colorScheme.foreground(KColorScheme::InactiveText).color(); + + Q_EMIT showTypeAheadFeedback(QStringLiteral("%1%3") + .arg(typedString.toHtmlEscaped()) + .arg(autoCompleteTextColor.name()) + .arg(item.name().toHtmlEscaped().mid(typedString.size()))); + } else { + const KColorScheme colorScheme = KColorScheme(QPalette::Normal, KColorScheme::Tooltip); + const QColor noMatchTextColor = colorScheme.foreground(KColorScheme::NegativeText).color(); + Q_EMIT showTypeAheadFeedback(QStringLiteral("%2").arg(noMatchTextColor.name()).arg(typedString.toHtmlEscaped())); + } + }); // The EnlargeSmallPreviews setting can only be changed after the model // has been set in the view by KItemListController. -- cgit v1.3