[libcalamaresui] Report progress also while waiting
- Ping the progress every 1.2 seconds, so the user sees more than just the throbber.
This commit is contained in:
parent
452b51304d
commit
5ddf7b980b
@ -65,6 +65,7 @@ check( Module * const &m, RequirementsChecker *c )
|
|||||||
RequirementsChecker::RequirementsChecker( QVector< Module* > modules, QObject* parent )
|
RequirementsChecker::RequirementsChecker( QVector< Module* > modules, QObject* parent )
|
||||||
: QObject( parent )
|
: QObject( parent )
|
||||||
, m_modules( std::move( modules ) )
|
, m_modules( std::move( modules ) )
|
||||||
|
, m_progressTimer( nullptr )
|
||||||
{
|
{
|
||||||
m_watchers.reserve( m_modules.count() );
|
m_watchers.reserve( m_modules.count() );
|
||||||
m_collectedRequirements.reserve( m_modules.count() );
|
m_collectedRequirements.reserve( m_modules.count() );
|
||||||
@ -79,6 +80,10 @@ RequirementsChecker::~RequirementsChecker()
|
|||||||
void
|
void
|
||||||
RequirementsChecker::run()
|
RequirementsChecker::run()
|
||||||
{
|
{
|
||||||
|
m_progressTimer = new QTimer( this );
|
||||||
|
connect( m_progressTimer, &QTimer::timeout, this, &RequirementsChecker::reportProgress );
|
||||||
|
m_progressTimer->start( 1200 ); // msec
|
||||||
|
|
||||||
for (const auto& module : m_modules )
|
for (const auto& module : m_modules )
|
||||||
{
|
{
|
||||||
Watcher *watcher = new Watcher( this );
|
Watcher *watcher = new Watcher( this );
|
||||||
@ -95,6 +100,9 @@ RequirementsChecker::finished()
|
|||||||
{
|
{
|
||||||
cDebug() << "All requirements have been checked.";
|
cDebug() << "All requirements have been checked.";
|
||||||
|
|
||||||
|
if ( m_progressTimer )
|
||||||
|
m_progressTimer->stop();
|
||||||
|
|
||||||
bool acceptable = true;
|
bool acceptable = true;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for ( const auto& r : m_collectedRequirements )
|
for ( const auto& r : m_collectedRequirements )
|
||||||
@ -124,4 +132,14 @@ RequirementsChecker::addCheckedRequirements( RequirementsList l )
|
|||||||
emit requirementsResult( l );
|
emit requirementsResult( l );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
RequirementsChecker::reportProgress()
|
||||||
|
{
|
||||||
|
auto remaining = std::count_if( m_watchers.cbegin(), m_watchers.cend(), []( const Watcher *w ) { return w && !w->isFinished(); } );
|
||||||
|
if ( remaining > 0 )
|
||||||
|
emit requirementsProgress( tr( "Waiting for %n module(s).", "", remaining ) );
|
||||||
|
else
|
||||||
|
emit requirementsProgress( tr( "System-requirements checking is complete." ) );
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,11 +18,13 @@
|
|||||||
#ifndef CALAMARES_REQUIREMENTSCHECKER_H
|
#ifndef CALAMARES_REQUIREMENTSCHECKER_H
|
||||||
#define CALAMARES_REQUIREMENTSCHECKER_H
|
#define CALAMARES_REQUIREMENTSCHECKER_H
|
||||||
|
|
||||||
|
#include "Requirement.h"
|
||||||
|
|
||||||
#include <QFutureWatcher>
|
#include <QFutureWatcher>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
#include <QTimer>
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
|
|
||||||
#include "Requirement.h"
|
|
||||||
|
|
||||||
namespace Calamares
|
namespace Calamares
|
||||||
{
|
{
|
||||||
@ -43,12 +45,18 @@ public:
|
|||||||
virtual ~RequirementsChecker() override;
|
virtual ~RequirementsChecker() override;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
/// @brief Start checking all the requirements
|
||||||
void run();
|
void run();
|
||||||
|
|
||||||
|
/// @brief Called when requirements are reported by a module
|
||||||
void addCheckedRequirements( RequirementsList );
|
void addCheckedRequirements( RequirementsList );
|
||||||
|
|
||||||
|
/// @brief Called when all requirements have been checked
|
||||||
void finished();
|
void finished();
|
||||||
|
|
||||||
|
/// @brief Called periodically while requirements are being checked
|
||||||
|
void reportProgress();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
/// @brief Human-readable progress message
|
/// @brief Human-readable progress message
|
||||||
void requirementsProgress( const QString& );
|
void requirementsProgress( const QString& );
|
||||||
@ -69,6 +77,8 @@ private:
|
|||||||
QVector< Watcher* > m_watchers;
|
QVector< Watcher* > m_watchers;
|
||||||
|
|
||||||
RequirementsList m_collectedRequirements;
|
RequirementsList m_collectedRequirements;
|
||||||
|
|
||||||
|
QTimer *m_progressTimer;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user