diff --git a/src/app/qgsclipboard.cpp b/src/app/qgsclipboard.cpp
index 65c71416141..6138b4eed00 100644
--- a/src/app/qgsclipboard.cpp
+++ b/src/app/qgsclipboard.cpp
@@ -75,31 +75,38 @@ void QgsClipboard::replaceWithCopyOf( QgsFeatureStore &featureStore )
emit changed();
}
-QString QgsClipboard::generateClipboardText() const
+void QgsClipboard::generateClipboardText( QString &textContent, QString &htmlContent ) const
{
CopyFormat format = QgsSettings().enumValue( QStringLiteral( "qgis/copyFeatureFormat" ), AttributesWithWKT );
+ textContent.clear();
+ htmlContent.clear();
+
switch ( format )
{
case AttributesOnly:
case AttributesWithWKT:
{
- QStringList textLines;
- QStringList textFields;
+ QStringList textLines, htmlLines;
+ QStringList textFields, htmlFields;
// first do the field names
if ( format == AttributesWithWKT )
{
textFields += QStringLiteral( "wkt_geom" );
+ htmlFields += QStringLiteral( "
" ) );
- htmlCopy.replace( '\t', QStringLiteral( " | " ) );
- htmlCopy = QStringLiteral( "" ) + htmlCopy + QStringLiteral( " | " );
- break;
- case GeoJSON:
- break;
- }
- if ( !htmlCopy.isEmpty() )
- {
- m->setHtml( htmlCopy );
- }
+ m->setHtml( htmlCopy );
}
// With qgis running under Linux, but with a Windows based X
diff --git a/src/app/qgsclipboard.h b/src/app/qgsclipboard.h
index cd12265a3ab..48aa68cd2e1 100644
--- a/src/app/qgsclipboard.h
+++ b/src/app/qgsclipboard.h
@@ -154,7 +154,7 @@ class APP_EXPORT QgsClipboard : public QObject
* Creates a text representation of the clipboard features.
* \returns clipboard text, respecting user export format
*/
- QString generateClipboardText() const;
+ void generateClipboardText( QString &textContent, QString &htmlContent ) const;
/**
* Attempts to convert a string to a list of features, by parsing the string as WKT and GeoJSON
diff --git a/tests/src/app/testqgisappclipboard.cpp b/tests/src/app/testqgisappclipboard.cpp
index 554daf5635d..8b9eccdb98f 100644
--- a/tests/src/app/testqgisappclipboard.cpp
+++ b/tests/src/app/testqgisappclipboard.cpp
@@ -141,12 +141,13 @@ void TestQgisAppClipboard::copyToText()
// attributes only
QgsSettings settings;
settings.setEnumValue( QStringLiteral( "/qgis/copyFeatureFormat" ), QgsClipboard::AttributesOnly );
- QString result = mQgisApp->clipboard()->generateClipboardText();
+ QString result, resultHtml;
+ mQgisApp->clipboard()->generateClipboardText( result, resultHtml );
QCOMPARE( result, QString( "int_field\tstring_field\n9\tval\n19\tval2" ) );
// attributes with WKT
settings.setEnumValue( QStringLiteral( "/qgis/copyFeatureFormat" ), QgsClipboard::AttributesWithWKT );
- result = mQgisApp->clipboard()->generateClipboardText();
+ mQgisApp->clipboard()->generateClipboardText( result, resultHtml );
QCOMPARE( result, QString( "wkt_geom\tint_field\tstring_field\nPoint (5 6)\t9\tval\nPoint (7 8)\t19\tval2" ) );
// HTML test
@@ -156,7 +157,7 @@ void TestQgisAppClipboard::copyToText()
// GeoJSON
settings.setEnumValue( QStringLiteral( "/qgis/copyFeatureFormat" ), QgsClipboard::GeoJSON );
- result = mQgisApp->clipboard()->generateClipboardText();
+ mQgisApp->clipboard()->generateClipboardText( result, resultHtml );
QString expected = "{\"features\":[{\"geometry\":{\"coordinates\":[5.0,6.0],\"type\":\"Point\"},\"id\":5,"
"\"properties\":{\"int_field\":9,\"string_field\":\"val\"},\"type\":\"Feature\"},"
"{\"geometry\":{\"coordinates\":[7.0,8.0],\"type\":\"Point\"},\"id\":6,"
@@ -174,7 +175,7 @@ void TestQgisAppClipboard::copyToText()
feats.setFields( fields );
mQgisApp->clipboard()->replaceWithCopyOf( feats );
- result = mQgisApp->clipboard()->generateClipboardText();
+ mQgisApp->clipboard()->generateClipboardText( result, resultHtml );
// just test coordinates as integers - that's enough to verify that reprojection has occurred
// and helps avoid rounding issues
@@ -211,13 +212,13 @@ void TestQgisAppClipboard::copyToText()
// attributes only
settings.setEnumValue( QStringLiteral( "/qgis/copyFeatureFormat" ), QgsClipboard::AttributesOnly );
- result = mQgisApp->clipboard()->generateClipboardText();
+ mQgisApp->clipboard()->generateClipboardText( result, resultHtml );
qDebug() << result;
QCOMPARE( result, QString( "int_field\tstring_field\n1\tSingle line text\n2\t\"Unix Multiline \nText\"\n3\t\"Windows Multiline \r\nText\"" ) );
// attributes with WKT
settings.setEnumValue( QStringLiteral( "/qgis/copyFeatureFormat" ), QgsClipboard::AttributesWithWKT );
- result = mQgisApp->clipboard()->generateClipboardText();
+ mQgisApp->clipboard()->generateClipboardText( result, resultHtml );
QCOMPARE( result, QString( "wkt_geom\tint_field\tstring_field\nPoint (5 6)\t1\tSingle line text\nPoint (7 8)\t2\t\"Unix Multiline \nText\"\nPoint (9 10)\t3\t\"Windows Multiline \r\nText\"" ) );
}
|