Skip to content

Commit 9ff514b

Browse files
committedDec 20, 2018
beautyfications and clean up
1 parent 03222c8 commit 9ff514b

File tree

5 files changed

+22
-22
lines changed

5 files changed

+22
-22
lines changed
 

‎src/app/qgsaddattrdialog.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,6 @@ QgsField QgsAddAttrDialog::field() const
128128
mLength->value(),
129129
mPrec->value(),
130130
mCommentEdit->text(),
131-
( QVariant::Type ) mTypeBox->currentData( Qt::UserRole ).toInt() == QVariant::Map ? QVariant::String : QVariant::Invalid
131+
static_cast<QVariant::Type>( mTypeBox->currentData( Qt::UserRole ).toInt() ) == QVariant::Map ? QVariant::String : QVariant::Invalid
132132
);
133133
}

‎src/core/qgsfield.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ QString QgsField::displayString( const QVariant &v ) const
254254
if ( ok )
255255
return QLocale().toString( converted );
256256
}
257-
else if ( d->typeName == QLatin1String( "json" ) || d->typeName == QLatin1String( "jsonb" ) || d->typeName == QLatin1String( "JSON" ) )
257+
else if ( d->typeName.compare( QLatin1String( "json" ), Qt::CaseInsensitive ) == 0 || d->typeName == QLatin1String( "jsonb" ) )
258258
{
259259
QJsonDocument doc = QJsonDocument::fromVariant( v );
260260
return QString::fromUtf8( doc.toJson().data() );

‎src/gui/editorwidgets/qgslistwidgetfactory.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,5 @@ QgsEditorConfigWidget *QgsListWidgetFactory::configWidget( QgsVectorLayer *vl, i
4444
unsigned int QgsListWidgetFactory::fieldScore( const QgsVectorLayer *vl, int fieldIdx ) const
4545
{
4646
const QgsField field = vl->fields().field( fieldIdx );
47-
return ( field.type() == QVariant::List || field.type() == QVariant::StringList || field.typeName() == QLatin1String( "json" ) || field.typeName() == QLatin1String( "jsonb" ) || field.typeName() == QLatin1String( "JSON" ) ) && field.subType() != QVariant::Invalid ? 20 : 0;
47+
return ( field.type() == QVariant::List || field.type() == QVariant::StringList || field.typeName().compare( QLatin1String( "json" ), Qt::CaseInsensitive ) == 0 || field.typeName() == QLatin1String( "jsonb" ) ) && field.subType() != QVariant::Invalid ? 20 : 0;
4848
}

‎src/providers/ogr/qgsogrprovider.cpp

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -476,8 +476,10 @@ QgsOgrProvider::QgsOgrProvider( QString const &uri, const ProviderOptions &optio
476476
<< QgsVectorDataProvider::NativeType( tr( "Whole number (integer)" ), QStringLiteral( "integer" ), QVariant::Int, 0, nMaxIntLen )
477477
<< QgsVectorDataProvider::NativeType( tr( "Whole number (integer 64 bit)" ), QStringLiteral( "integer64" ), QVariant::LongLong, 0, nMaxInt64Len )
478478
<< QgsVectorDataProvider::NativeType( tr( "Decimal number (real)" ), QStringLiteral( "double" ), QVariant::Double, 0, nMaxDoubleLen, 0, nMaxDoublePrec )
479-
<< QgsVectorDataProvider::NativeType( tr( "Text (string)" ), QStringLiteral( "string" ), QVariant::String, 0, 65535 )
480-
<< QgsVectorDataProvider::NativeType( tr( "Map (JSON)" ), QStringLiteral( "JSON" ), QVariant::Map, 0, 0, 0, 0, QVariant::String );
479+
<< QgsVectorDataProvider::NativeType( tr( "Text (string)" ), QStringLiteral( "string" ), QVariant::String, 0, 65535 );
480+
481+
if ( mGDALDriverName == QLatin1String( "GPKG" ) )
482+
nativeTypes << QgsVectorDataProvider::NativeType( tr( "Map (JSON)" ), QStringLiteral( "JSON" ), QVariant::Map, 0, 0, 0, 0, QVariant::String );
481483

482484
bool supportsDate = true;
483485
bool supportsTime = mGDALDriverName != QLatin1String( "ESRI Shapefile" ) && mGDALDriverName != QLatin1String( "GPKG" );
@@ -1053,7 +1055,6 @@ void QgsOgrProvider::loadFields()
10531055
if ( OGR_Fld_GetSubType( fldDef ) == OFSTJSON )
10541056
{
10551057
ogrSubType = OFSTJSON;
1056-
QgsDebugMsg( QStringLiteral( "JSON Field found" ) );
10571058
varType = QVariant::Map;
10581059
varSubType = QVariant::String;
10591060
}
@@ -1407,6 +1408,16 @@ OGRGeometryH QgsOgrProvider::ConvertGeometryIfNecessary( OGRGeometryH hGeom )
14071408
return OGR_G_ForceTo( hGeom, layerGeomType, nullptr );
14081409
}
14091410

1411+
QString QgsOgrProvider::jsonStringValue( const QVariant &value )
1412+
{
1413+
QString stringValue = QString::fromUtf8( QJsonDocument::fromVariant( value.toMap() ).toJson().data() );
1414+
if ( stringValue == QStringLiteral( "{\n}\n" ) )
1415+
stringValue = QString::fromUtf8( QJsonDocument::fromVariant( value.toList() ).toJson().data() );
1416+
if ( stringValue == QStringLiteral( "[\n]\n" ) && !value.toString().isEmpty() )
1417+
stringValue = value.toString();
1418+
return stringValue;
1419+
}
1420+
14101421
bool QgsOgrProvider::addFeaturePrivate( QgsFeature &f, Flags flags )
14111422
{
14121423
bool returnValue = true;
@@ -1536,13 +1547,7 @@ bool QgsOgrProvider::addFeaturePrivate( QgsFeature &f, Flags flags )
15361547

15371548
#if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(2,4,0)
15381549
if ( OGR_Fld_GetSubType( fldDef ) == OFSTJSON )
1539-
{
1540-
stringValue = QString::fromUtf8( QJsonDocument::fromVariant( attrVal.toMap() ).toJson().data() );
1541-
if ( stringValue == QStringLiteral( "{\n}\n" ) )
1542-
stringValue = QString::fromUtf8( QJsonDocument::fromVariant( attrVal.toList() ).toJson().data() );
1543-
if ( stringValue == QStringLiteral( "[\n]\n" ) && !attrVal.toString().isEmpty() )
1544-
stringValue = attrVal.toString();
1545-
}
1550+
stringValue = jsonStringValue( attrVal );
15461551
else
15471552
{
15481553
stringValue = attrVal.toString();
@@ -2131,17 +2136,9 @@ bool QgsOgrProvider::changeAttributeValues( const QgsChangedAttributesMap &attr_
21312136
QString stringValue;
21322137
#if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(2,4,0)
21332138
if ( OGR_Fld_GetSubType( fd ) == OFSTJSON )
2134-
{
2135-
stringValue = QString::fromUtf8( QJsonDocument::fromVariant( it2->toMap() ).toJson().data() );
2136-
if ( stringValue == QStringLiteral( "{\n}\n" ) )
2137-
stringValue = QString::fromUtf8( QJsonDocument::fromVariant( it2->toList() ).toJson().data() );
2138-
if ( stringValue == QStringLiteral( "[\n]\n" ) && !it2->toString().isEmpty() )
2139-
stringValue = it2->toString();
2140-
}
2139+
stringValue = jsonStringValue( it2.value() );
21412140
else
2142-
{
21432141
stringValue = it2->toString();
2144-
}
21452142
#else
21462143
stringValue = it2->toString();
21472144
#endif

‎src/providers/ogr/qgsogrprovider.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,9 @@ class QgsOgrProvider : public QgsVectorDataProvider
284284

285285
mutable QStringList mSubLayerList;
286286

287+
//! convert from json QVariant to QString
288+
QString jsonStringValue( const QVariant &value );
289+
287290
bool addFeaturePrivate( QgsFeature &f, QgsFeatureSink::Flags flags );
288291
//! Deletes one feature
289292
bool deleteFeature( QgsFeatureId id );

0 commit comments

Comments
 (0)
Please sign in to comment.