From 779e5ecf8f8b5727837d1a5679c0dd46bc019f5b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 19 Mar 2021 14:17:34 +0100 Subject: [PATCH] [libcalamaresui] Factor out the pastebin UI - offer a convenience method for showing a popup and URL information and copying the URL to the clipboard - use that from ViewManager (on failure) and DebugWindow (on demand) --- src/calamares/DebugWindow.cpp | 2 +- src/libcalamaresui/ViewManager.cpp | 21 +----------------- src/libcalamaresui/utils/Paste.cpp | 35 ++++++++++++++++++++++++++++++ src/libcalamaresui/utils/Paste.h | 8 +++++++ 4 files changed, 45 insertions(+), 21 deletions(-) diff --git a/src/calamares/DebugWindow.cpp b/src/calamares/DebugWindow.cpp index fa8a31647..b5fd899d4 100644 --- a/src/calamares/DebugWindow.cpp +++ b/src/calamares/DebugWindow.cpp @@ -216,7 +216,7 @@ DebugWindow::DebugWindow() // Send Log button only if it would be useful m_ui->sendLogButton->setVisible( CalamaresUtils::Paste::isEnabled() ); - connect( m_ui->sendLogButton, &QPushButton::clicked, [this]() { CalamaresUtils::Paste::doLogUpload( this ); } ); + connect( m_ui->sendLogButton, &QPushButton::clicked, [this]() { CalamaresUtils::Paste::doLogUploadUI( this ); } ); CALAMARES_RETRANSLATE( m_ui->retranslateUi( this ); setWindowTitle( tr( "Debug information" ) ); ); } diff --git a/src/libcalamaresui/ViewManager.cpp b/src/libcalamaresui/ViewManager.cpp index 566a77f93..704655c8b 100644 --- a/src/libcalamaresui/ViewManager.cpp +++ b/src/libcalamaresui/ViewManager.cpp @@ -190,26 +190,7 @@ ViewManager::onInstallationFailed( const QString& message, const QString& detail connect( msgBox, &QMessageBox::buttonClicked, [msgBox]( QAbstractButton* button ) { if ( msgBox->buttonRole( button ) == QMessageBox::ButtonRole::YesRole ) { - QString pasteUrl = CalamaresUtils::Paste::doLogUpload( msgBox ); - QString pasteUrlMessage; - if ( pasteUrl.isEmpty() ) - { - pasteUrlMessage = tr( "The upload was unsuccessful. No web-paste was done." ); - } - else - { - QClipboard* clipboard = QApplication::clipboard(); - clipboard->setText( pasteUrl, QClipboard::Clipboard ); - - if ( clipboard->supportsSelection() ) - { - clipboard->setText( pasteUrl, QClipboard::Selection ); - } - QString pasteUrlFmt = tr( "Install log posted to\n\n%1\n\nLink copied to clipboard" ); - pasteUrlMessage = pasteUrlFmt.arg( pasteUrl ); - } - - QMessageBox::critical( nullptr, tr( "Install Log Paste URL" ), pasteUrlMessage ); + CalamaresUtils::Paste::doLogUploadUI( msgBox ); } QApplication::quit(); } ); diff --git a/src/libcalamaresui/utils/Paste.cpp b/src/libcalamaresui/utils/Paste.cpp index a61b80b4e..40e314108 100644 --- a/src/libcalamaresui/utils/Paste.cpp +++ b/src/libcalamaresui/utils/Paste.cpp @@ -14,10 +14,14 @@ #include "utils/Logger.h" #include "utils/Units.h" +#include +#include #include #include +#include #include #include +#include using namespace CalamaresUtils::Units; @@ -127,6 +131,37 @@ CalamaresUtils::Paste::doLogUpload( QObject* parent ) return QString(); } +QString +CalamaresUtils::Paste::doLogUploadUI( QWidget* parent ) +{ + // These strings originated in the ViewManager class + QString pasteUrl = CalamaresUtils::Paste::doLogUpload( parent ); + QString pasteUrlMessage; + if ( pasteUrl.isEmpty() ) + { + pasteUrlMessage = QCoreApplication::translate( "Calamares::ViewManager", + "The upload was unsuccessful. No web-paste was done." ); + } + else + { + QClipboard* clipboard = QApplication::clipboard(); + clipboard->setText( pasteUrl, QClipboard::Clipboard ); + + if ( clipboard->supportsSelection() ) + { + clipboard->setText( pasteUrl, QClipboard::Selection ); + } + QString pasteUrlFmt = QCoreApplication::translate( "Calamares::ViewManager", + "Install log posted to\n\n%1\n\nLink copied to clipboard" ); + pasteUrlMessage = pasteUrlFmt.arg( pasteUrl ); + } + + QMessageBox::critical( + nullptr, QCoreApplication::translate( "Calamares::ViewManager", "Install Log Paste URL" ), pasteUrlMessage ); + return pasteUrl; +} + + bool CalamaresUtils::Paste::isEnabled() { diff --git a/src/libcalamaresui/utils/Paste.h b/src/libcalamaresui/utils/Paste.h index c6b0adba8..c77625415 100644 --- a/src/libcalamaresui/utils/Paste.h +++ b/src/libcalamaresui/utils/Paste.h @@ -13,6 +13,7 @@ #include class QObject; +class QWidget; namespace CalamaresUtils { @@ -24,6 +25,13 @@ namespace Paste */ QString doLogUpload( QObject* parent ); +/** @brief Send the current log file to a pastebin + * + * As doLogUpload(), but also sets the clipboard and displays + * a message saying it's been done. + */ +QString doLogUploadUI( QWidget* parent ); + /** @brief Is paste enabled? * * Checks the branding instance if paste can be done.