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>
bb10
Friedemann Kleint 2022-05-25 12:39:51 +02:00
parent 1e39b86bdc
commit 613b52bfee
1 changed files with 28 additions and 11 deletions

View File

@ -1128,18 +1128,35 @@ QString WriteInitialization::writeStringListProperty(const DomStringList *list)
{
QString propertyValue;
QTextStream str(&propertyValue);
str << "QStringList()";
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);
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()) {
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;
}