From 8e1aeda464cd478b8c6cea43d094835a1d1d025d Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Fri, 24 Aug 2018 06:08:35 +0200 Subject: [PATCH] More array and map expression formatting --- src/core/expression/qgsexpression.cpp | 31 ++++++++++++++++----------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/src/core/expression/qgsexpression.cpp b/src/core/expression/qgsexpression.cpp index 90b702d2f6d..62b7216c003 100644 --- a/src/core/expression/qgsexpression.cpp +++ b/src/core/expression/qgsexpression.cpp @@ -903,45 +903,50 @@ QString QgsExpression::formatPreviewString( const QVariant &value ) } else if ( value.type() == QVariant::Map ) { - QString mapStr = QStringLiteral( "{ " ); + QString mapStr = QStringLiteral( "{" ); const QVariantMap map = value.toMap(); QString separator; for ( QVariantMap::const_iterator it = map.constBegin(); it != map.constEnd(); ++it ) { mapStr.append( separator ); if ( separator.isEmpty() ) - separator = QStringLiteral( ", " ); + separator = QStringLiteral( "," ); - mapStr.append( QStringLiteral( "%1: %2" ).arg( quotedValue( it.key() ), formatPreviewString( it.value() ) ) ); - if ( mapStr.length() > MAX_PREVIEW + 5 ) + mapStr.append( QStringLiteral( " %1: %2" ).arg( quotedValue( it.key() ), formatPreviewString( it.value() ) ) ); + if ( mapStr.length() > MAX_PREVIEW - 3 ) { - mapStr = tr( "%1…" ).arg( mapStr.left( MAX_PREVIEW ) ); + mapStr = tr( "%1…" ).arg( mapStr.left( MAX_PREVIEW - 2 ) ); break; } } - mapStr += QStringLiteral( " }" ); - return tr( "<%1>" ).arg( mapStr ); + if ( !map.empty() ) + mapStr += QStringLiteral( " " ); + mapStr += QStringLiteral( "}" ); + return mapStr; } else if ( value.type() == QVariant::List || value.type() == QVariant::StringList ) { - QString listStr = QStringLiteral( "[ " ); + QString listStr = QStringLiteral( "[" ); const QVariantList list = value.toList(); QString separator; for ( const QVariant &arrayValue : list ) { listStr.append( separator ); if ( separator.isEmpty() ) - separator = QStringLiteral( ", " ); + separator = QStringLiteral( "," ); + listStr.append( " " ); listStr.append( formatPreviewString( arrayValue ) ); - if ( listStr.length() > MAX_PREVIEW + 5 ) + if ( listStr.length() > MAX_PREVIEW - 3 ) { - listStr = QString( tr( "%1…" ) ).arg( listStr.left( MAX_PREVIEW ) ); + listStr = QString( tr( "%1…" ) ).arg( listStr.left( MAX_PREVIEW - 2 ) ); break; } } - listStr += QStringLiteral( " ]" ); - return tr( "<%1>" ).arg( listStr ); + if ( !list.empty() ) + listStr += QStringLiteral( " " ); + listStr += QStringLiteral( "]" ); + return listStr; } else {