Navigation Menu

Skip to content

Commit

Permalink
Basic escape
Browse files Browse the repository at this point in the history
  • Loading branch information
nirvn authored and nyalldawson committed May 10, 2021
1 parent 40ad1cb commit bb44ff6
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 8 deletions.
28 changes: 20 additions & 8 deletions src/core/qgsofflineediting.cpp
Expand Up @@ -47,6 +47,7 @@
#include <QDomNode>
#include <QFile>
#include <QMessageBox>
#include <QRegularExpression>

#include <ogr_srs_api.h>

Expand Down Expand Up @@ -845,13 +846,9 @@ QgsVectorLayer *QgsOfflineEditing::copyVectorLayer( QgsVectorLayer *layer, sqlit
for ( int it = 0; it < attrs.count(); ++it )
{
QVariant attr = attrs.at( it );
if ( layer->fields().at( it ).type() == QVariant::StringList )
if ( layer->fields().at( it ).type() == QVariant::StringList || layer->fields().at( it ).type() == QVariant::List )
{
attr = attr.toStringList().join( ',' );
}
else if ( layer->fields().at( it ).type() == QVariant::List )
{
attr = attr.toStringList().join( ',' );
attr = convertStringListToString( attr.toStringList() );
}
newAttrs[column++] = attr;
}
Expand Down Expand Up @@ -1057,10 +1054,25 @@ void QgsOfflineEditing::applyFeaturesAdded( QgsVectorLayer *offlineLayer, QgsVec
}
}

QStringList QgsOfflineEditing::convertStringToStringList( const QString &string )
{
return string.split( QRegularExpression( "(?<!\\\\)\\s*,\\s*" ) );
}

QString QgsOfflineEditing::convertStringListToString( const QStringList &stringList )
{
QStringList modifiedStringList = stringList;
for ( QString &string : modifiedStringList )
{
string.replace( QStringLiteral( "," ), QStringLiteral( "\\," ) );
}
return modifiedStringList.join( QStringLiteral( " , " ) );
}

QVariantList QgsOfflineEditing::convertStringToList( const QString &string, QVariant::Type type )
{
QVariantList variantList;
const QStringList stringList = string.split( ',' );
const QStringList stringList = string.split( QRegularExpression( "(?<!\\\\)\\s*,\\s*" ) );
for ( const QString &string : stringList )
{
switch ( type )
Expand Down Expand Up @@ -1118,7 +1130,7 @@ void QgsOfflineEditing::applyAttributeValueChanges( QgsVectorLayer *offlineLayer
QVariant attr = values.at( i ).value;
if ( remoteLayer->fields().at( remoteAttributeIndex ).type() == QVariant::StringList )
{
attr = attr.toString().split( ',' );
attr = convertStringToStringList( attr.toString() );
}
else if ( remoteLayer->fields().at( remoteAttributeIndex ).type() == QVariant::List )
{
Expand Down
3 changes: 3 additions & 0 deletions src/core/qgsofflineediting.h
Expand Up @@ -128,6 +128,9 @@ class CORE_EXPORT QgsOfflineEditing : public QObject
void updateFidLookup( QgsVectorLayer *remoteLayer, sqlite3 *db, int layerId );
void copySymbology( QgsVectorLayer *sourceLayer, QgsVectorLayer *targetLayer );

QString convertStringListToString( const QStringList &stringList );
QStringList convertStringToStringList( const QString &string );

QVariantList convertStringToList( const QString &string, QVariant::Type type );

/**
Expand Down

0 comments on commit bb44ff6

Please sign in to comment.