Skip to content

Commit 85c5ad6

Browse files
nirvnnyalldawson
authored andcommittedSep 6, 2021
[processing] Re-work the duration parameter so it _always_ returns milliseconds, make default unit type a GUI helper only
1 parent 54e7e33 commit 85c5ad6

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed
 

‎src/gui/processing/qgsprocessingwidgetwrapperimpl.cpp

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1324,7 +1324,6 @@ QgsAbstractProcessingParameterWidgetWrapper *QgsProcessingDurationWidgetWrapper:
13241324
QWidget *QgsProcessingDurationWidgetWrapper::createWidget()
13251325
{
13261326
const QgsProcessingParameterDuration *durationDef = static_cast< const QgsProcessingParameterDuration * >( parameterDefinition() );
1327-
mBaseUnit = durationDef->defaultUnit();
13281327

13291328
QWidget *spin = QgsProcessingNumericWidgetWrapper::createWidget();
13301329
switch ( type() )
@@ -1348,7 +1347,7 @@ QWidget *QgsProcessingDurationWidgetWrapper::createWidget()
13481347
layout->setContentsMargins( 0, 0, 0, 0 );
13491348
w->setLayout( layout );
13501349

1351-
mUnitsCombo->setCurrentIndex( mUnitsCombo->findData( mBaseUnit ) );
1350+
mUnitsCombo->setCurrentIndex( mUnitsCombo->findData( durationDef->defaultUnit() ) );
13521351
mUnitsCombo->show();
13531352

13541353
return w;
@@ -1368,8 +1367,7 @@ QLabel *QgsProcessingDurationWidgetWrapper::createLabel()
13681367

13691368
if ( type() == QgsProcessingGui::Modeler )
13701369
{
1371-
const QgsProcessingParameterDuration *durationDef = static_cast< const QgsProcessingParameterDuration * >( parameterDefinition() );
1372-
label->setText( QStringLiteral( "%1 [%2]" ).arg( label->text(), QgsUnitTypes::toString( durationDef->defaultUnit() ) ) );
1370+
label->setText( QStringLiteral( "%1 [%2]" ).arg( label->text(), QgsUnitTypes::toString( mBaseUnit ) ) );
13731371
}
13741372

13751373
return label;
@@ -1389,6 +1387,20 @@ QVariant QgsProcessingDurationWidgetWrapper::widgetValue() const
13891387
}
13901388
}
13911389

1390+
void QgsProcessingDurationWidgetWrapper::setWidgetValue( const QVariant &value, QgsProcessingContext &context )
1391+
{
1392+
if ( mUnitsCombo )
1393+
{
1394+
QgsUnitTypes::TemporalUnit displayUnit = static_cast<QgsUnitTypes::TemporalUnit >( mUnitsCombo->currentData().toInt() );
1395+
const QVariant val = value.toDouble() * QgsUnitTypes::fromUnitToUnitFactor( mBaseUnit, displayUnit );
1396+
QgsProcessingNumericWidgetWrapper::setWidgetValue( val, context );
1397+
}
1398+
else
1399+
{
1400+
QgsProcessingNumericWidgetWrapper::setWidgetValue( value, context );
1401+
}
1402+
}
1403+
13921404
QgsProcessingAbstractParameterDefinitionWidget *QgsProcessingDurationWidgetWrapper::createParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition, const QgsProcessingAlgorithm *algorithm )
13931405
{
13941406
return new QgsProcessingDurationParameterDefinitionWidget( context, widgetContext, definition, algorithm );

‎src/gui/processing/qgsprocessingwidgetwrapperimpl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,7 @@ class GUI_EXPORT QgsProcessingDurationWidgetWrapper : public QgsProcessingNumeri
444444
protected:
445445

446446
QVariant widgetValue() const override;
447+
void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
447448

448449
private:
449450

0 commit comments

Comments
 (0)
Please sign in to comment.