From d953875b60ca372f37d896de955da6e7cf42654c Mon Sep 17 00:00:00 2001 From: Felix Ernst Date: Thu, 20 Jun 2024 12:35:51 +0200 Subject: [PATCH] DolphinViewContainer: Use KMessageWidget::MessageType instead of own type This slightly simplifies code and allows showing KMessageWidget::Positive message boxes. --- src/dolphinmainwindow.cpp | 8 +++---- src/dolphinviewcontainer.cpp | 42 +++++++++++------------------------- src/dolphinviewcontainer.h | 13 +++++------ 3 files changed, 22 insertions(+), 41 deletions(-) diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 8fa891b32d..bc88d643ec 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -184,7 +184,7 @@ DolphinMainWindow::DolphinMainWindow() m_disabledActionNotifier = new DisabledActionNotifier(this); connect(m_disabledActionNotifier, &DisabledActionNotifier::disabledActionTriggered, this, [this](const QAction *, QString reason) { - m_activeViewContainer->showMessage(reason, DolphinViewContainer::Warning); + m_activeViewContainer->showMessage(reason, KMessageWidget::Warning); }); setupDockWidgets(); @@ -562,7 +562,7 @@ void DolphinMainWindow::showTarget() KIO::StatJob *statJob = static_cast(job); if (statJob->error()) { - m_activeViewContainer->showMessage(job->errorString(), DolphinViewContainer::Error); + m_activeViewContainer->showMessage(job->errorString(), KMessageWidget::Error); } else { KIO::highlightInFileManager({destinationUrl}); } @@ -801,7 +801,7 @@ void DolphinMainWindow::quit() void DolphinMainWindow::showErrorMessage(const QString &message) { - m_activeViewContainer->showMessage(message, DolphinViewContainer::Error); + m_activeViewContainer->showMessage(message, KMessageWidget::Error); } void DolphinMainWindow::slotUndoAvailable(bool available) @@ -2898,7 +2898,7 @@ void DolphinMainWindow::UndoUiInterface::jobError(KIO::Job *job) DolphinMainWindow *mainWin = qobject_cast(parentWidget()); if (mainWin) { DolphinViewContainer *container = mainWin->activeViewContainer(); - container->showMessage(job->errorString(), DolphinViewContainer::Error); + container->showMessage(job->errorString(), KMessageWidget::Error); } else { KIO::FileUndoManager::UiInterface::jobError(job); } diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index 0a3dfd8760..fbad258ace 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -109,7 +109,7 @@ DolphinViewContainer::DolphinViewContainer(const QUrl &url, QWidget *parent) #if !defined(Q_OS_WIN) && !defined(Q_OS_HAIKU) if (getuid() == 0) { // We must be logged in as the root user; show a big scary warning - showMessage(i18n("Running Dolphin as root can be dangerous. Please be careful."), Warning); + showMessage(i18n("Running Dolphin as root can be dangerous. Please be careful."), KMessageWidget::Warning); } #endif @@ -366,9 +366,7 @@ void DolphinViewContainer::setSelectionModeEnabled(bool enabled, KActionCollecti connect(m_view, &DolphinView::selectionChanged, this, [this](const KFileItemList &selection) { m_selectionModeBottomBar->slotSelectionChanged(selection, m_view->url()); }); - connect(m_selectionModeBottomBar, &SelectionMode::BottomBar::error, this, [this](const QString &errorMessage) { - showErrorMessage(errorMessage); - }); + connect(m_selectionModeBottomBar, &SelectionMode::BottomBar::error, this, &DolphinViewContainer::showErrorMessage); connect(m_selectionModeBottomBar, &SelectionMode::BottomBar::selectionModeLeavingRequested, this, [this]() { setSelectionModeEnabled(false); }); @@ -408,32 +406,18 @@ void DolphinViewContainer::slotSplitTabDisabled() } } -void DolphinViewContainer::showMessage(const QString &msg, MessageType type) +void DolphinViewContainer::showMessage(const QString &message, KMessageWidget::MessageType messageType) { - if (msg.isEmpty()) { + if (message.isEmpty()) { return; } - m_messageWidget->setText(msg); + m_messageWidget->setText(message); // TODO: wrap at arbitrary character positions once QLabel can do this // https://bugreports.qt.io/browse/QTBUG-1276 m_messageWidget->setWordWrap(true); - - switch (type) { - case Information: - m_messageWidget->setMessageType(KMessageWidget::Information); - break; - case Warning: - m_messageWidget->setMessageType(KMessageWidget::Warning); - break; - case Error: - m_messageWidget->setMessageType(KMessageWidget::Error); - break; - default: - Q_ASSERT(false); - break; - } + m_messageWidget->setMessageType(messageType); m_messageWidget->setWordWrap(false); const int unwrappedWidth = m_messageWidget->sizeHint().width(); @@ -828,18 +812,18 @@ void DolphinViewContainer::slotUrlNavigatorLocationChanged(const QUrl &url) if (url.scheme().startsWith(QLatin1String("http"))) { showMessage(i18nc("@info:status", // krazy:exclude=qmethods "Dolphin does not support web pages, the web browser has been launched"), - Information); + KMessageWidget::Information); } else { - showMessage(i18nc("@info:status", "Protocol not supported by Dolphin, default application has been launched"), Information); + showMessage(i18nc("@info:status", "Protocol not supported by Dolphin, default application has been launched"), KMessageWidget::Information); } QDesktopServices::openUrl(url); redirect(QUrl(), m_urlNavigator->locationUrl(1)); } else { if (!url.scheme().isEmpty()) { - showMessage(i18nc("@info:status", "Invalid protocol '%1'", url.scheme()), Error); + showMessage(i18nc("@info:status", "Invalid protocol '%1'", url.scheme()), KMessageWidget::Error); } else { - showMessage(i18nc("@info:status", "Invalid protocol"), Error); + showMessage(i18nc("@info:status", "Invalid protocol"), KMessageWidget::Error); } m_urlNavigator->goBack(); } @@ -914,9 +898,9 @@ void DolphinViewContainer::slotStatusBarZoomLevelChanged(int zoomLevel) m_view->setZoomLevel(zoomLevel); } -void DolphinViewContainer::showErrorMessage(const QString &msg) +void DolphinViewContainer::showErrorMessage(const QString &message) { - showMessage(msg, Error); + showMessage(message, KMessageWidget::Error); } void DolphinViewContainer::slotPlacesModelChanged() @@ -950,7 +934,7 @@ void DolphinViewContainer::slotCurrentDirectoryRemoved() setUrl(newUrl); } - showMessage(xi18n("Current location changed, %1 is no longer accessible.", location), Warning); + showMessage(xi18n("Current location changed, %1 is no longer accessible.", location), KMessageWidget::Warning); } void DolphinViewContainer::slotOpenUrlFinished(KJob *job) diff --git a/src/dolphinviewcontainer.h b/src/dolphinviewcontainer.h index 9628def633..55d00a3b80 100644 --- a/src/dolphinviewcontainer.h +++ b/src/dolphinviewcontainer.h @@ -14,6 +14,7 @@ #include #include +#include #include #include @@ -25,7 +26,6 @@ namespace Admin class Bar; } class FilterBar; -class KMessageWidget; class QAction; class QGridLayout; class QUrl; @@ -53,8 +53,6 @@ class DolphinViewContainer : public QWidget Q_OBJECT public: - enum MessageType { Information, Warning, Error }; - DolphinViewContainer(const QUrl &url, QWidget *parent); ~DolphinViewContainer() override; @@ -151,10 +149,9 @@ public: bool isSelectionModeEnabled() const; /** - * Shows the message \msg with the given type non-modal above - * the view-content. + * Shows the message \message with the given type \messageType non-modal above the view-content. */ - void showMessage(const QString &msg, MessageType type); + void showMessage(const QString &message, KMessageWidget::MessageType messageType); /** * Refreshes the view container to get synchronized with the (updated) Dolphin settings. @@ -393,9 +390,9 @@ private Q_SLOTS: void slotStatusBarZoomLevelChanged(int zoomLevel); /** - * Slot that calls showMessage(msg, Error). + * Slot that calls showMessage(message, KMessageWidget::Error). */ - void showErrorMessage(const QString &msg); + void showErrorMessage(const QString &message); /** * Is invoked when a KFilePlacesModel has been changed