From e1140b6fa839b70044a7f6375845e82b802e1ffc Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 31 Dec 2015 13:55:33 +0100 Subject: [PATCH] Add static concurrent support to ScanningDialog. --- src/modules/partition/gui/ScanningDialog.cpp | 32 +++++++++++++++++++- src/modules/partition/gui/ScanningDialog.h | 11 +++++-- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/modules/partition/gui/ScanningDialog.cpp b/src/modules/partition/gui/ScanningDialog.cpp index bed07ced8..9e74cf5ab 100644 --- a/src/modules/partition/gui/ScanningDialog.cpp +++ b/src/modules/partition/gui/ScanningDialog.cpp @@ -22,12 +22,17 @@ #include #include +#include +#include -ScanningDialog::ScanningDialog(const QString& text, QWidget* parent) +ScanningDialog::ScanningDialog( const QString& text, + const QString& windowTitle, + QWidget* parent ) : QDialog( parent ) { setModal( true ); + setWindowTitle( windowTitle ); QHBoxLayout* dialogLayout = new QHBoxLayout; setLayout( dialogLayout ); @@ -41,6 +46,31 @@ ScanningDialog::ScanningDialog(const QString& text, QWidget* parent) dialogLayout->addWidget( rescanningLabel ); } + +void +ScanningDialog::run( const QFuture< void >& future, + const QString& text, + const QString& windowTitle, + QWidget* parent ) +{ + ScanningDialog* theDialog = + new ScanningDialog( text, + windowTitle, + parent ); + theDialog->show(); + + QFutureWatcher< void >* watcher = new QFutureWatcher< void >(); + connect( watcher, &QFutureWatcher< void >::finished, + theDialog, [ watcher, theDialog ] + { + watcher->deleteLater(); + theDialog->hide(); + theDialog->deleteLater(); + } ); + + watcher->setFuture( future ); +} + void ScanningDialog::setVisible(bool visible) { QDialog::setVisible( visible ); diff --git a/src/modules/partition/gui/ScanningDialog.h b/src/modules/partition/gui/ScanningDialog.h index 0ba22ad1e..2ddfe883a 100644 --- a/src/modules/partition/gui/ScanningDialog.h +++ b/src/modules/partition/gui/ScanningDialog.h @@ -20,13 +20,20 @@ #define SCANNINGDIALOG_H #include - +#include class ScanningDialog : public QDialog { Q_OBJECT public: - explicit ScanningDialog( const QString& text, QWidget* parent = nullptr ); + explicit ScanningDialog( const QString& text, + const QString& windowTitle, + QWidget* parent = nullptr ); + + static void run( const QFuture< void >& future, + const QString& text, + const QString& windowTitle, + QWidget* parent = nullptr ); public slots: void setVisible( bool visible ) override;