Merge commit 'afc0c78b4c01ac734b9877b11ae94597c685d804'
Pull in the instance-weight changes and type-improvements, but not the part where special-casing of unsquash is dropped: weights are still per-job, not per-module.
This commit is contained in:
commit
9fe679dca8
@ -73,7 +73,8 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
emitProgress();
|
emitProgress();
|
||||||
cDebug() << "Starting" << ( anyFailed ? "EMERGENCY JOB" : "job" ) << job->prettyName() << " (there are" << m_jobs.count() << " left)";
|
cDebug() << "Starting" << ( anyFailed ? "EMERGENCY JOB" : "job" ) << job->prettyName() << " (there are"
|
||||||
|
<< m_jobs.count() << " left)";
|
||||||
connect( job.data(), &Job::progress, this, &JobThread::emitProgress );
|
connect( job.data(), &Job::progress, this, &JobThread::emitProgress );
|
||||||
JobResult result = job->exec();
|
JobResult result = job->exec();
|
||||||
if ( !anyFailed && !result )
|
if ( !anyFailed && !result )
|
||||||
@ -113,20 +114,20 @@ private:
|
|||||||
int jobCount = m_jobs.size();
|
int jobCount = m_jobs.size();
|
||||||
QString message = m_jobIndex < jobCount ? m_jobs.at( m_jobIndex )->prettyStatusMessage() : tr( "Done" );
|
QString message = m_jobIndex < jobCount ? m_jobs.at( m_jobIndex )->prettyStatusMessage() : tr( "Done" );
|
||||||
|
|
||||||
|
qreal percent = 1.0; // Pretend we're done, since the if will reset it
|
||||||
|
if ( m_jobIndex < jobCount )
|
||||||
|
{
|
||||||
qreal cumulativeProgress = 0.0;
|
qreal cumulativeProgress = 0.0;
|
||||||
for ( auto jobWeight : m_jobWeights.mid( 0, m_jobIndex ) )
|
for ( auto jobWeight : m_jobWeights.mid( 0, m_jobIndex ) )
|
||||||
{
|
{
|
||||||
cumulativeProgress += jobWeight;
|
cumulativeProgress += jobWeight;
|
||||||
}
|
}
|
||||||
qreal percent
|
percent = cumulativeProgress + ( ( m_jobWeights.at( m_jobIndex ) ) * jobPercent );
|
||||||
= m_jobIndex < jobCount ? cumulativeProgress + ( ( m_jobWeights.at( m_jobIndex ) ) * jobPercent ) : 1.0;
|
|
||||||
|
|
||||||
if ( m_jobIndex < jobCount )
|
Logger::CDebug( Logger::LOGVERBOSE )
|
||||||
{
|
<< "[JOBQUEUE]: Progress for Job[" << m_jobIndex << "]: " << ( jobPercent * 100 ) << "% completed";
|
||||||
Logger::CDebug( Logger::LOGVERBOSE ) << "[JOBQUEUE]: Progress for Job[" << m_jobIndex
|
Logger::CDebug( Logger::LOGVERBOSE )
|
||||||
<< "]: " << ( jobPercent * 100 ) << "% completed";
|
<< "[JOBQUEUE]: Progress Overall: " << ( cumulativeProgress * 100 ) << "% (accumulated) + "
|
||||||
Logger::CDebug( Logger::LOGVERBOSE ) << "[JOBQUEUE]: Progress Overall: " << ( cumulativeProgress * 100 )
|
|
||||||
<< "% (accumulated) + "
|
|
||||||
<< ( ( ( m_jobWeights.at( m_jobIndex ) ) * jobPercent ) * 100 )
|
<< ( ( ( m_jobWeights.at( m_jobIndex ) ) * jobPercent ) * 100 )
|
||||||
<< "% (this job) = " << ( percent * 100 ) << "% (total)";
|
<< "% (this job) = " << ( percent * 100 ) << "% (total)";
|
||||||
}
|
}
|
||||||
|
@ -71,6 +71,24 @@ requireBool( const YAML::Node& config, const char* key, bool d )
|
|||||||
namespace Calamares
|
namespace Calamares
|
||||||
{
|
{
|
||||||
|
|
||||||
|
InstanceDescription::InstanceDescription( const QVariantMap& m )
|
||||||
|
: module( m.value( "module" ).toString() )
|
||||||
|
, id( m.value( "id" ).toString() )
|
||||||
|
, config( m.value( "config" ).toString() )
|
||||||
|
, weight( m.value( "weight" ).toInt() )
|
||||||
|
{
|
||||||
|
if ( id.isEmpty() )
|
||||||
|
{
|
||||||
|
id = module;
|
||||||
|
}
|
||||||
|
if ( config.isEmpty() )
|
||||||
|
{
|
||||||
|
config = module + QStringLiteral( ".conf" );
|
||||||
|
}
|
||||||
|
|
||||||
|
weight = qBound( 1, weight, 100 );
|
||||||
|
}
|
||||||
|
|
||||||
Settings* Settings::s_instance = nullptr;
|
Settings* Settings::s_instance = nullptr;
|
||||||
|
|
||||||
Settings*
|
Settings*
|
||||||
@ -134,17 +152,7 @@ interpretInstances( const YAML::Node& node, Settings::InstanceDescriptionList& c
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
QVariantMap instancesVListItemMap = instancesVListItem.toMap();
|
customInstances.append( InstanceDescription( instancesVListItem.toMap() ) );
|
||||||
Settings::InstanceDescription instanceMap;
|
|
||||||
for ( auto it = instancesVListItemMap.constBegin(); it != instancesVListItemMap.constEnd(); ++it )
|
|
||||||
{
|
|
||||||
if ( it.value().type() != QVariant::String )
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
instanceMap.insert( it.key(), it.value().toString() );
|
|
||||||
}
|
|
||||||
customInstances.append( instanceMap );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,10 +32,21 @@
|
|||||||
namespace Calamares
|
namespace Calamares
|
||||||
{
|
{
|
||||||
|
|
||||||
|
struct DLLEXPORT InstanceDescription
|
||||||
|
{
|
||||||
|
InstanceDescription( const QVariantMap& );
|
||||||
|
|
||||||
|
QString module; ///< Module name (e.g. "welcome")
|
||||||
|
QString id; ///< Id, to distinguish multiple instances (e.g. "one", for "welcome@one")
|
||||||
|
QString config; ///< Config-file name (for multiple instances)
|
||||||
|
int weight;
|
||||||
|
};
|
||||||
|
|
||||||
class DLLEXPORT Settings : public QObject
|
class DLLEXPORT Settings : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
explicit Settings( const QString& settingsFilePath, bool debugMode );
|
explicit Settings( const QString& settingsFilePath, bool debugMode );
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static Settings* instance();
|
static Settings* instance();
|
||||||
/// @brief Find a settings.conf, following @p debugMode
|
/// @brief Find a settings.conf, following @p debugMode
|
||||||
@ -45,7 +56,6 @@ public:
|
|||||||
|
|
||||||
QStringList modulesSearchPaths() const;
|
QStringList modulesSearchPaths() const;
|
||||||
|
|
||||||
using InstanceDescription = QMap< QString, QString >;
|
|
||||||
using InstanceDescriptionList = QList< InstanceDescription >;
|
using InstanceDescriptionList = QList< InstanceDescription >;
|
||||||
InstanceDescriptionList customModuleInstances() const;
|
InstanceDescriptionList customModuleInstances() const;
|
||||||
|
|
||||||
|
@ -129,8 +129,7 @@ ModuleManager::doInit()
|
|||||||
}
|
}
|
||||||
// At this point m_availableDescriptorsByModuleName is filled with
|
// At this point m_availableDescriptorsByModuleName is filled with
|
||||||
// the modules that were found in the search paths.
|
// the modules that were found in the search paths.
|
||||||
cDebug() << "Found"
|
cDebug() << "Found" << m_availableDescriptorsByModuleName.count() << "modules"
|
||||||
<< m_availableDescriptorsByModuleName.count() << "modules"
|
|
||||||
<< m_moduleDirectoriesByModuleName.count() << "names";
|
<< m_moduleDirectoriesByModuleName.count() << "names";
|
||||||
emit initDone();
|
emit initDone();
|
||||||
}
|
}
|
||||||
@ -167,7 +166,7 @@ findCustomInstance( const Settings::InstanceDescriptionList& customInstances, co
|
|||||||
for ( int i = 0; i < customInstances.count(); ++i )
|
for ( int i = 0; i < customInstances.count(); ++i )
|
||||||
{
|
{
|
||||||
const auto& thisInstance = customInstances[ i ];
|
const auto& thisInstance = customInstances[ i ];
|
||||||
if ( thisInstance.value( "module" ) == m.module() && thisInstance.value( "id" ) == m.id() )
|
if ( thisInstance.module == m.module() && thisInstance.id == m.id() )
|
||||||
{
|
{
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
@ -196,7 +195,7 @@ getConfigFileName( const Settings::InstanceDescriptionList& customInstances,
|
|||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
return customInstances[ found ].value( "config" );
|
return customInstances[ found ].config;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user