diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2011-12-22 14:51:47 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-20 14:17:41 +0100 |
commit | 688d463f4ad4ebe62533d416c956d3a30ccfc0a6 (patch) | |
tree | b987cb177d0c4cdd452bbe5dd3f4b22ff3b762ef /src/tools/uic/cpp | |
parent | 0f8ad242fb9c82e542ace1d2595038edf87f7b3d (diff) |
uic: Add translation-attributes to string list properties.
Task-number: QTBUG-8926
Task-number: QTBUG-20440
Change-Id: I57d92110bf532c717451336bd1943c9571020478
Reviewed-by: Jarek Kobus <jaroslaw.kobus@nokia.com>
Diffstat (limited to 'src/tools/uic/cpp')
-rw-r--r-- | src/tools/uic/cpp/cppwriteinitialization.cpp | 50 | ||||
-rw-r--r-- | src/tools/uic/cpp/cppwriteinitialization.h | 5 |
2 files changed, 40 insertions, 15 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; diff --git a/src/tools/uic/cpp/cppwriteinitialization.h b/src/tools/uic/cpp/cppwriteinitialization.h index 721eb0f79e..ec3982445d 100644 --- a/src/tools/uic/cpp/cppwriteinitialization.h +++ b/src/tools/uic/cpp/cppwriteinitialization.h @@ -58,6 +58,7 @@ class DomBrush; class DomFont; class DomResourceIcon; class DomSizePolicy; +class DomStringList; struct Option; namespace CPP { @@ -176,11 +177,13 @@ private: QString trCall(DomString *str, const QString &defaultString = QString()) const; QString noTrCall(DomString *str, const QString &defaultString = QString()) const; QString autoTrCall(DomString *str, const QString &defaultString = QString()) const; - QTextStream &autoTrOutput(DomString *str, const QString &defaultString = QString()); + inline QTextStream &autoTrOutput(const DomProperty *str); + QTextStream &autoTrOutput(const DomString *str, const QString &defaultString = QString()); // Apply a comma-separated list of values using a function "setSomething(int idx, value)" void writePropertyList(const QString &varName, const QString &setFunction, const QString &value, const QString &defaultValue); enum { WritePropertyIgnoreMargin = 1, WritePropertyIgnoreSpacing = 2, WritePropertyIgnoreObjectName = 4 }; + QString writeStringListProperty(const DomStringList *list) const; void writeProperties(const QString &varName, const QString &className, const DomPropertyList &lst, unsigned flags = 0); void writeColorGroup(DomColorGroup *colorGroup, const QString &group, const QString &paletteName); void writeBrush(const DomBrush *brush, const QString &brushName); |