diff options
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/uic/cpp/cppwriteinitialization.cpp | 23 | ||||
-rw-r--r-- | src/tools/uic/cpp/cppwriteinitialization.h | 3 | ||||
-rw-r--r-- | src/tools/uic/main.cpp | 5 | ||||
-rw-r--r-- | src/tools/uic/option.h | 2 | ||||
-rw-r--r-- | src/tools/uic/utils.h | 13 |
5 files changed, 29 insertions, 17 deletions
diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp index cc7e8fc9e3..e599bc8f08 100644 --- a/src/tools/uic/cpp/cppwriteinitialization.cpp +++ b/src/tools/uic/cpp/cppwriteinitialization.cpp @@ -475,6 +475,21 @@ WriteInitialization::WriteInitialization(Uic *uic) : { } +QString WriteInitialization::writeString(const QString &s, const QString &indent) const +{ + unsigned flags = 0; + const QString ret = fixString(s, indent, &flags); + if (flags & Utf8String) + return QLatin1String("QString::fromUtf8(") + ret + QLatin1Char(')'); + // MSVC cannot concat L"foo" "bar" (C2308: concatenating mismatched strings), + // use QLatin1String instead (all platforms to avoid cross-compiling issues). + if (flags & MultiLineString) + return QLatin1String("QLatin1String(") + ret + QLatin1Char(')'); + const QLatin1String stringWrapper = m_uic->option().stringLiteral ? + QLatin1String("QStringLiteral(") : QLatin1String("QLatin1String("); + return stringWrapper + ret + QLatin1Char(')'); +} + void WriteInitialization::acceptUI(DomUI *node) { m_actionGroupChain.push(0); @@ -1601,10 +1616,10 @@ QString WriteInitialization::writeFontProperties(const DomFont *f) } // Post 4.4 write resource icon -static void writeResourceIcon(QTextStream &output, - const QString &iconName, - const QString &indent, - const DomResourceIcon *i) +void WriteInitialization::writeResourceIcon(QTextStream &output, + const QString &iconName, + const QString &indent, + const DomResourceIcon *i) const { if (i->hasElementNormalOff()) output << indent << iconName << ".addFile(" << writeString(i->elementNormalOff()->text(), indent) << ", QSize(), QIcon::Normal, QIcon::Off);\n"; diff --git a/src/tools/uic/cpp/cppwriteinitialization.h b/src/tools/uic/cpp/cppwriteinitialization.h index 187ba8378e..b26f51875d 100644 --- a/src/tools/uic/cpp/cppwriteinitialization.h +++ b/src/tools/uic/cpp/cppwriteinitialization.h @@ -139,6 +139,8 @@ struct WriteInitialization : public TreeWalker private: static QString domColor2QString(const DomColor *c); + QString writeString(const QString &s, const QString &indent) const; + QString iconCall(const DomProperty *prop); QString pixCall(const DomProperty *prop) const; QString pixCall(const QString &type, const QString &text) const; @@ -228,6 +230,7 @@ private: private: QString writeFontProperties(const DomFont *f); + void writeResourceIcon(QTextStream &output, const QString &iconName, const QString &indent, const DomResourceIcon *i) const; QString writeIconProperties(const DomResourceIcon *i); QString writeSizePolicy(const DomSizePolicy *sp); QString writeBrushInitialization(const DomBrush *brush); diff --git a/src/tools/uic/main.cpp b/src/tools/uic/main.cpp index 3599470403..46a1e66bcc 100644 --- a/src/tools/uic/main.cpp +++ b/src/tools/uic/main.cpp @@ -75,6 +75,10 @@ int runUic(int argc, char *argv[]) noImplicitIncludesOption.setDescription(QStringLiteral("Disable generation of #include-directives.")); parser.addOption(noImplicitIncludesOption); + QCommandLineOption noStringLiteralOption(QStringList() << QStringLiteral("s") << QStringLiteral("no-stringliteral")); + noStringLiteralOption.setDescription(QStringLiteral("Use QLatin1String instead of QStringLiteral in generated code.")); + parser.addOption(noStringLiteralOption); + QCommandLineOption postfixOption(QStringLiteral("postfix")); postfixOption.setDescription(QStringLiteral("Postfix to add to all generated classnames.")); postfixOption.setValueName(QStringLiteral("postfix")); @@ -107,6 +111,7 @@ int runUic(int argc, char *argv[]) driver.option().outputFile = parser.value(outputOption); driver.option().headerProtection = !parser.isSet(noProtOption); driver.option().implicitIncludes = !parser.isSet(noImplicitIncludesOption); + driver.option().stringLiteral = !parser.isSet(noStringLiteralOption); driver.option().idBased = parser.isSet(idBasedOption); driver.option().postfix = parser.value(postfixOption); driver.option().translateFunction = parser.value(translateOption); diff --git a/src/tools/uic/option.h b/src/tools/uic/option.h index a5b14abc5f..c7278393fb 100644 --- a/src/tools/uic/option.h +++ b/src/tools/uic/option.h @@ -51,6 +51,7 @@ struct Option unsigned int limitXPM_LineLength : 1; unsigned int implicitIncludes: 1; unsigned int idBased: 1; + unsigned int stringLiteral: 1; Generator generator; QString inputFile; @@ -76,6 +77,7 @@ struct Option limitXPM_LineLength(0), implicitIncludes(1), idBased(0), + stringLiteral(1), generator(CppGenerator), prefix(QLatin1String("Ui_")) { indent.fill(QLatin1Char(' '), 4); } diff --git a/src/tools/uic/utils.h b/src/tools/uic/utils.h index 7c5918cab9..18b361fb81 100644 --- a/src/tools/uic/utils.h +++ b/src/tools/uic/utils.h @@ -107,19 +107,6 @@ inline QString fixString(const QString &str, const QString &indent, return rc; } -inline QString writeString(const QString &s, const QString &indent) -{ - unsigned flags = 0; - const QString ret = fixString(s, indent, &flags); - if (flags & Utf8String) - return QLatin1String("QString::fromUtf8(") + ret + QLatin1Char(')'); - // MSVC cannot concat L"foo" "bar" (C2308: concatenating mismatched strings), - // use QLatin1String instead (all platforms to avoid cross-compiling issues). - if (flags & MultiLineString) - return QLatin1String("QLatin1String(") + ret + QLatin1Char(')'); - return QLatin1String("QStringLiteral(") + ret + QLatin1Char(')'); -} - inline QHash<QString, DomProperty *> propertyMap(const QList<DomProperty *> &properties) { QHash<QString, DomProperty *> map; |