mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-28 00:17:30 -05:00
Fix handling optional multiple table field parameter with no fields set
This commit is contained in:
parent
b40f409de2
commit
9f018e67e2
@ -672,27 +672,33 @@ QStringList QgsProcessingParameters::parameterAsFields( const QgsProcessingParam
|
|||||||
|
|
||||||
QStringList resultStringList;
|
QStringList resultStringList;
|
||||||
QVariant val = parameters.value( definition->name() );
|
QVariant val = parameters.value( definition->name() );
|
||||||
if ( val.canConvert<QgsProperty>() )
|
if ( val.isValid() )
|
||||||
resultStringList << val.value< QgsProperty >().valueAsString( context.expressionContext(), definition->defaultValue().toString() );
|
|
||||||
else if ( val.type() == QVariant::List )
|
|
||||||
{
|
{
|
||||||
Q_FOREACH ( const QVariant &var, val.toList() )
|
if ( val.canConvert<QgsProperty>() )
|
||||||
resultStringList << var.toString();
|
resultStringList << val.value< QgsProperty >().valueAsString( context.expressionContext(), definition->defaultValue().toString() );
|
||||||
|
else if ( val.type() == QVariant::List )
|
||||||
|
{
|
||||||
|
Q_FOREACH ( const QVariant &var, val.toList() )
|
||||||
|
resultStringList << var.toString();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
resultStringList.append( val.toString().split( ';' ) );
|
||||||
}
|
}
|
||||||
else
|
|
||||||
resultStringList.append( val.toString().split( ';' ) );
|
|
||||||
|
|
||||||
if ( ( resultStringList.isEmpty() || resultStringList.at( 0 ).isEmpty() ) )
|
if ( ( resultStringList.isEmpty() || resultStringList.at( 0 ).isEmpty() ) )
|
||||||
{
|
{
|
||||||
resultStringList.clear();
|
resultStringList.clear();
|
||||||
// check default
|
// check default
|
||||||
if ( definition->defaultValue().type() == QVariant::List )
|
if ( definition->defaultValue().isValid() )
|
||||||
{
|
{
|
||||||
Q_FOREACH ( const QVariant &var, definition->defaultValue().toList() )
|
if ( definition->defaultValue().type() == QVariant::List )
|
||||||
resultStringList << var.toString();
|
{
|
||||||
|
Q_FOREACH ( const QVariant &var, definition->defaultValue().toList() )
|
||||||
|
resultStringList << var.toString();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
resultStringList.append( definition->defaultValue().toString().split( ';' ) );
|
||||||
}
|
}
|
||||||
else
|
|
||||||
resultStringList.append( definition->defaultValue().toString().split( ';' ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return resultStringList;
|
return resultStringList;
|
||||||
|
@ -2288,6 +2288,12 @@ void TestQgsProcessing::parameterField()
|
|||||||
fields = QgsProcessingParameters::parameterAsFields( def.get(), params, context );
|
fields = QgsProcessingParameters::parameterAsFields( def.get(), params, context );
|
||||||
QCOMPARE( fields, QStringList() << "def" );
|
QCOMPARE( fields, QStringList() << "def" );
|
||||||
|
|
||||||
|
// optional, no default
|
||||||
|
def.reset( new QgsProcessingParameterTableField( "optional", QString(), QVariant(), QString(), QgsProcessingParameterTableField::Any, false, true ) );
|
||||||
|
params.insert( "optional", QVariant() );
|
||||||
|
fields = QgsProcessingParameters::parameterAsFields( def.get(), params, context );
|
||||||
|
QVERIFY( fields.isEmpty() );
|
||||||
|
|
||||||
//optional with multiples
|
//optional with multiples
|
||||||
def.reset( new QgsProcessingParameterTableField( "optional", QString(), QString( "abc;def" ), QString(), QgsProcessingParameterTableField::Any, true, true ) );
|
def.reset( new QgsProcessingParameterTableField( "optional", QString(), QString( "abc;def" ), QString(), QgsProcessingParameterTableField::Any, true, true ) );
|
||||||
QVERIFY( def->checkValueIsAcceptable( 1 ) );
|
QVERIFY( def->checkValueIsAcceptable( 1 ) );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user