From 613b52bfee1876b43829072abb9dfb4423e8357f Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@qt.io>
Date: Wed, 25 May 2022 12:39:51 +0200
Subject: uic: Fix string list properties for Python

Use the opportunity to modernize the code to use an
initializer list instead of stream operators.
This then makes it easier to generate a comma-delimited
list that works for Python as well.

Fixes: PYSIDE-1942
Change-Id: I5291b55bd0685e06ad62e52c7ebccffce98e9c23
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
---
 src/tools/uic/cpp/cppwriteinitialization.cpp | 37 ++++++++++++++++++++--------
 1 file changed, 27 insertions(+), 10 deletions(-)

(limited to 'src/tools/uic/cpp/cppwriteinitialization.cpp')

diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp
index 4d43e904e1c..e9ad0352af3 100644
--- a/src/tools/uic/cpp/cppwriteinitialization.cpp
+++ b/src/tools/uic/cpp/cppwriteinitialization.cpp
@@ -1128,18 +1128,35 @@ QString WriteInitialization::writeStringListProperty(const DomStringList *list)
 {
     QString propertyValue;
     QTextStream str(&propertyValue);
-    str << "QStringList()";
+    char trailingDelimiter = '}';
+    switch (language::language()) {
+     case Language::Cpp:
+        str << "QStringList{";
+        break;
+    case Language::Python:
+       str << '[';
+       trailingDelimiter = ']';
+       break;
+    }
     const QStringList values = list->elementString();
-    if (values.isEmpty())
-        return propertyValue;
-    if (needsTranslation(list)) {
-        const QString comment = list->attributeComment();
-        for (int i = 0; i < values.size(); ++i)
-            str << '\n' << m_indent << "    << " << trCall(values.at(i), comment);
-    } else {
-        for (int i = 0; i < values.size(); ++i)
-            str << " << " << language::qstring(values.at(i), m_dindent);
+    if (!values.isEmpty()) {
+        if (needsTranslation(list)) {
+            const QString comment = list->attributeComment();
+            const qsizetype last = values.size() - 1;
+            for (qsizetype i = 0; i <= last; ++i) {
+                str << '\n' << m_indent << "    " << trCall(values.at(i), comment);
+                if (i != last)
+                    str << ',';
+            }
+        } else {
+            for (qsizetype i = 0; i < values.size(); ++i) {
+                if (i)
+                    str << ", ";
+                str << language::qstring(values.at(i), m_dindent);
+            }
+        }
     }
+    str << trailingDelimiter;
     return propertyValue;
 }
 
-- 
cgit v1.2.3