calamares/src/modules/partition/gui/ScanningDialog.cpp
Adriaan de Groot cf913b87ff [partition] Apply coding style
This applies the new(er) style to the whole module,
rather than just the files that recently changed.
2022-02-01 16:35:19 +01:00

77 lines
2.1 KiB
C++

/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org>
* SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
#include "ScanningDialog.h"
#include "3rdparty/waitingspinnerwidget.h"
#include <QBoxLayout>
#include <QFutureWatcher>
#include <QLabel>
#include <QtConcurrent/QtConcurrent>
ScanningDialog::ScanningDialog( const QString& text, const QString& windowTitle, QWidget* parent )
: QDialog( parent )
{
setModal( true );
setWindowTitle( windowTitle );
QHBoxLayout* dialogLayout = new QHBoxLayout;
setLayout( dialogLayout );
WaitingSpinnerWidget* spinner = new WaitingSpinnerWidget();
dialogLayout->addWidget( spinner );
spinner->start();
QLabel* rescanningLabel = new QLabel( text, this );
dialogLayout->addWidget( rescanningLabel );
}
void
ScanningDialog::run( const QFuture< void >& future,
const QString& text,
const QString& windowTitle,
const std::function< void() >& callback,
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, callback ]
{
watcher->deleteLater();
theDialog->hide();
theDialog->deleteLater();
callback();
} );
watcher->setFuture( future );
}
void
ScanningDialog::run( const QFuture< void >& future, const std::function< void() >& callback, QWidget* parent )
{
ScanningDialog::run( future, tr( "Scanning storage devices..." ), tr( "Partitioning" ), callback, parent );
}
void
ScanningDialog::setVisible( bool visible )
{
QDialog::setVisible( visible );
Q_EMIT visibilityChanged();
}