@@ -1324,7 +1324,6 @@ QgsAbstractProcessingParameterWidgetWrapper *QgsProcessingDurationWidgetWrapper:
1324
1324
QWidget *QgsProcessingDurationWidgetWrapper::createWidget ()
1325
1325
{
1326
1326
const QgsProcessingParameterDuration *durationDef = static_cast < const QgsProcessingParameterDuration * >( parameterDefinition () );
1327
- mBaseUnit = durationDef->defaultUnit ();
1328
1327
1329
1328
QWidget *spin = QgsProcessingNumericWidgetWrapper::createWidget ();
1330
1329
switch ( type () )
@@ -1348,7 +1347,7 @@ QWidget *QgsProcessingDurationWidgetWrapper::createWidget()
1348
1347
layout->setContentsMargins ( 0 , 0 , 0 , 0 );
1349
1348
w->setLayout ( layout );
1350
1349
1351
- mUnitsCombo ->setCurrentIndex ( mUnitsCombo ->findData ( mBaseUnit ) );
1350
+ mUnitsCombo ->setCurrentIndex ( mUnitsCombo ->findData ( durationDef-> defaultUnit () ) );
1352
1351
mUnitsCombo ->show ();
1353
1352
1354
1353
return w;
@@ -1368,8 +1367,7 @@ QLabel *QgsProcessingDurationWidgetWrapper::createLabel()
1368
1367
1369
1368
if ( type () == QgsProcessingGui::Modeler )
1370
1369
{
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 ) ) );
1373
1371
}
1374
1372
1375
1373
return label;
@@ -1389,6 +1387,20 @@ QVariant QgsProcessingDurationWidgetWrapper::widgetValue() const
1389
1387
}
1390
1388
}
1391
1389
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
+
1392
1404
QgsProcessingAbstractParameterDefinitionWidget *QgsProcessingDurationWidgetWrapper::createParameterDefinitionWidget ( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition, const QgsProcessingAlgorithm *algorithm )
1393
1405
{
1394
1406
return new QgsProcessingDurationParameterDefinitionWidget ( context, widgetContext, definition, algorithm );
0 commit comments