From 55ed2ba4c078f2ab4700d6efdfc9fdc84ba5a13b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 14 Dec 2017 16:09:54 -0500 Subject: [PATCH] [partition] Introduce convenience translation for progress. --- src/modules/partition/jobs/PartitionJob.cpp | 9 +++++++++ src/modules/partition/jobs/PartitionJob.h | 8 ++++++++ src/modules/partition/jobs/ResizePartitionJob.cpp | 2 +- src/modules/partition/jobs/SetPartitionFlagsJob.cpp | 5 +---- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/modules/partition/jobs/PartitionJob.cpp b/src/modules/partition/jobs/PartitionJob.cpp index a85540704..2de93ac47 100644 --- a/src/modules/partition/jobs/PartitionJob.cpp +++ b/src/modules/partition/jobs/PartitionJob.cpp @@ -21,3 +21,12 @@ PartitionJob::PartitionJob( Partition* partition ) : m_partition( partition ) {} + +void PartitionJob::progress(int percent) +{ + if ( percent < 0 ) + percent = 0; + if ( percent > 100 ) + percent = 100; + emit progress( qreal( percent / 100.0 ) ); +} diff --git a/src/modules/partition/jobs/PartitionJob.h b/src/modules/partition/jobs/PartitionJob.h index fc27e14f2..cf773d60e 100644 --- a/src/modules/partition/jobs/PartitionJob.h +++ b/src/modules/partition/jobs/PartitionJob.h @@ -37,6 +37,14 @@ public: return m_partition; } +public slots: + /** @brief Translate from KPMCore to Calamares progress. + * + * KPMCore presents progress as an integer percent from 0 .. 100, + * while Calamares uses a qreal from 0 .. 1.00 . + */ + void progress( int percent ); + protected: Partition* m_partition; }; diff --git a/src/modules/partition/jobs/ResizePartitionJob.cpp b/src/modules/partition/jobs/ResizePartitionJob.cpp index d5a0e28e8..340a19acd 100644 --- a/src/modules/partition/jobs/ResizePartitionJob.cpp +++ b/src/modules/partition/jobs/ResizePartitionJob.cpp @@ -80,7 +80,7 @@ ResizePartitionJob::exec() m_partition->setLastSector( m_oldLastSector ); ResizeOperation op(*m_device, *m_partition, m_newFirstSector, m_newLastSector); op.setStatus(Operation::StatusRunning); - connect(&op, &Operation::progress, [&](int percent) { emit progress(percent / 100.0); } ); + connect(&op, &Operation::progress, this, &ResizePartitionJob::progress ); QString errorMessage = tr( "The installer failed to resize partition %1 on disk '%2'." ) .arg( m_partition->partitionPath() ) diff --git a/src/modules/partition/jobs/SetPartitionFlagsJob.cpp b/src/modules/partition/jobs/SetPartitionFlagsJob.cpp index cadfd0261..ecc8b2142 100644 --- a/src/modules/partition/jobs/SetPartitionFlagsJob.cpp +++ b/src/modules/partition/jobs/SetPartitionFlagsJob.cpp @@ -135,10 +135,7 @@ SetPartFlagsJob::exec() Report report ( nullptr ); SetPartFlagsOperation op( *m_device, *partition(), m_flags ); op.setStatus( Operation::StatusRunning ); - connect( &op, &Operation::progress, [&]( int percent ) - { - emit progress( percent / 100.0 ); - } ); + connect( &op, &Operation::progress, this, &SetPartFlagsJob::progress ); QString errorMessage = tr( "The installer failed to set flags on partition %1." ) .arg( m_partition->partitionPath() );