diff options
Diffstat (limited to 'src/tools/uic/cpp/cppwriteinitialization.cpp')
-rw-r--r-- | src/tools/uic/cpp/cppwriteinitialization.cpp | 50 |
1 files changed, 36 insertions, 14 deletions
diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp index dfb4a3299e..0be10a4fb6 100644 --- a/src/tools/uic/cpp/cppwriteinitialization.cpp +++ b/src/tools/uic/cpp/cppwriteinitialization.cpp @@ -466,11 +466,12 @@ void WriteInitialization::LayoutDefaultHandler::writeProperties(const QString &i layoutmargins[marginType], suppressMarginDefault, str); } -static bool needsTranslation(DomString *str) +template <class DomElement> // (DomString, DomStringList) +static bool needsTranslation(const DomElement *element) { - if (!str) + if (!element) return false; - return !str->hasAttributeNotr() || !toBool(str->attributeNotr()); + return !element->hasAttributeNotr() || !toBool(element->attributeNotr()); } // --- WriteInitialization @@ -1128,6 +1129,25 @@ void WriteInitialization::acceptActionRef(DomActionRef *node) m_actionOut << m_indent << varName << "->addAction(" << actionName << ");\n"; } +QString WriteInitialization::writeStringListProperty(const DomStringList *list) const +{ + 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 << " << QString::fromUtf8(" << fixString(values.at(i), m_dindent) << ')'; + } + return propertyValue; +} + void WriteInitialization::writeProperties(const QString &varName, const QString &className, const DomPropertyList &lst, @@ -1434,15 +1454,7 @@ void WriteInitialization::writeProperties(const QString &varName, break; } case DomProperty::StringList: - propertyValue = QLatin1String("QStringList()"); - if (p->elementStringList()->elementString().size()) { - const QStringList lst = p->elementStringList()->elementString(); - for (int i=0; i<lst.size(); ++i) { - propertyValue += QLatin1String(" << QString::fromUtf8("); - propertyValue += fixString(lst.at(i), m_dindent); - propertyValue += QLatin1Char(')'); - } - } + propertyValue = writeStringListProperty(p->elementStringList()); break; case DomProperty::Url: { @@ -1469,7 +1481,7 @@ void WriteInitialization::writeProperties(const QString &varName, else if (propertyName == QLatin1String("accessibleName") || propertyName == QLatin1String("accessibleDescription")) defineC = accessibilityDefineC; - QTextStream &o = autoTrOutput(p->elementString()); + QTextStream &o = autoTrOutput(p); if (defineC) openIfndef(o, QLatin1String(defineC)); @@ -2357,7 +2369,17 @@ QString WriteInitialization::autoTrCall(DomString *str, const QString &defaultSt return noTrCall(str, defaultString); } -QTextStream &WriteInitialization::autoTrOutput(DomString *str, const QString &defaultString) +QTextStream &WriteInitialization::autoTrOutput(const DomProperty *property) +{ + if (const DomString *str = property->elementString()) + return autoTrOutput(str); + if (const DomStringList *list = property->elementStringList()) + if (needsTranslation(list)) + return m_refreshOut; + return m_output; +} + +QTextStream &WriteInitialization::autoTrOutput(const DomString *str, const QString &defaultString) { if ((!str && !defaultString.isEmpty()) || needsTranslation(str)) return m_refreshOut; |