X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/0d981e7b7df266c867004e23a169ba8cc13c8683..ffce84e759714e94de01a546009b4b41c64cdf28:/src/dolphinviewcontainer.cpp diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index 99ba4efa8..27f845fa7 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -145,7 +145,6 @@ DolphinViewContainer::DolphinViewContainer(const QUrl &url, QWidget *parent) connect(m_view, &DolphinView::hiddenFilesShownChanged, this, &DolphinViewContainer::slotHiddenFilesShownChanged); connect(m_view, &DolphinView::sortHiddenLastChanged, this, &DolphinViewContainer::slotSortHiddenLastChanged); connect(m_view, &DolphinView::currentDirectoryRemoved, this, &DolphinViewContainer::slotCurrentDirectoryRemoved); - connect(m_view, &DolphinView::urlChanged, this, &DolphinViewContainer::updateAdminBarVisibility); // Initialize status bar m_statusBar = new DolphinStatusBar(this); @@ -165,7 +164,9 @@ DolphinViewContainer::DolphinViewContainer(const QUrl &url, QWidget *parent) }); connect(m_statusBar, &DolphinStatusBar::stopPressed, this, &DolphinViewContainer::stopDirectoryLoading); connect(m_statusBar, &DolphinStatusBar::zoomLevelChanged, this, &DolphinViewContainer::slotStatusBarZoomLevelChanged); - connect(m_statusBar, &DolphinStatusBar::showMessage, this, &DolphinViewContainer::showMessage); + connect(m_statusBar, &DolphinStatusBar::showMessage, this, [this](const QString &message, KMessageWidget::MessageType messageType) { + showMessage(message, messageType); + }); m_statusBarTimer = new QTimer(this); m_statusBarTimer->setSingleShot(true); @@ -182,7 +183,6 @@ DolphinViewContainer::DolphinViewContainer(const QUrl &url, QWidget *parent) m_topLayout->addWidget(m_statusBar, positionFor.statusBar, 0); setSearchModeEnabled(isSearchUrl(url)); - updateAdminBarVisibility(url); // Update view as the ContentDisplaySettings change // this happens here and not in DolphinView as DolphinviewContainer and DolphinView are not in the same build target ATM @@ -404,7 +404,7 @@ void DolphinViewContainer::slotSplitTabDisabled() } } -void DolphinViewContainer::showMessage(const QString &message, KMessageWidget::MessageType messageType) +void DolphinViewContainer::showMessage(const QString &message, KMessageWidget::MessageType messageType, std::initializer_list buttonActions) { if (message.isEmpty()) { return; @@ -417,6 +417,14 @@ void DolphinViewContainer::showMessage(const QString &message, KMessageWidget::M m_messageWidget->setWordWrap(true); m_messageWidget->setMessageType(messageType); + const QList previousMessageWidgetActions = m_messageWidget->actions(); + for (auto action : previousMessageWidgetActions) { + m_messageWidget->removeAction(action); + } + for (QAction *action : buttonActions) { + m_messageWidget->addAction(action); + } + m_messageWidget->setWordWrap(false); const int unwrappedWidth = m_messageWidget->sizeHint().width(); m_messageWidget->setWordWrap(unwrappedWidth > size().width()); @@ -638,6 +646,17 @@ void DolphinViewContainer::slotDirectoryLoadingCompleted() if (m_urlNavigatorConnected) { m_urlNavigatorConnected->setReadOnlyBadgeVisible(rootItem().isLocalFile() && !rootItem().isWritable()); } + + // Update admin bar visibility + if (m_view->url().scheme() == QStringLiteral("admin")) { + if (!m_adminBar) { + m_adminBar = new Admin::Bar(this); + m_topLayout->addWidget(m_adminBar, positionFor.adminBar, 0); + } + m_adminBar->setVisible(true, WithAnimation); + } else if (m_adminBar) { + m_adminBar->setVisible(false, WithAnimation); + } } void DolphinViewContainer::slotDirectoryLoadingCanceled() @@ -740,20 +759,6 @@ void DolphinViewContainer::showItemInfo(const KFileItem &item) } } -void DolphinViewContainer::updateAdminBarVisibility(const QUrl &url) -{ - if (url.scheme() == QStringLiteral("admin")) { - if (!m_adminBar) { - m_adminBar = new Admin::Bar(this); - m_topLayout->addWidget(m_adminBar, positionFor.adminBar, 0); - connect(m_adminBar, &Admin::Bar::activated, this, &DolphinViewContainer::activate); - } - m_adminBar->setVisible(true, WithAnimation); - } else if (m_adminBar) { - m_adminBar->setVisible(false, WithAnimation); - } -} - void DolphinViewContainer::closeFilterBar() { m_filterBar->closeFilterBar();