From ac7265e950664b2e1bc62124a20a72dc199413d8 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 4 Dec 2018 15:48:53 +0100 Subject: uic: No longer generate static_cast for enum values in legacy forms Add a lookup for the affected enum values and use the names instead. Task-number: PYSIDE-797 Change-Id: I6be166409000aff83d9465c9a3b2f37b44c5c085 Reviewed-by: Cristian Maureira-Fredes Reviewed-by: Jarek Kobus --- src/tools/uic/cpp/cppwriteinitialization.cpp | 39 +++++++++++----------------- 1 file changed, 15 insertions(+), 24 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 ab4882d1a0d..ca9b48ed9c7 100644 --- a/src/tools/uic/cpp/cppwriteinitialization.cpp +++ b/src/tools/uic/cpp/cppwriteinitialization.cpp @@ -45,35 +45,26 @@ QT_BEGIN_NAMESPACE namespace { - // Fixup an enumeration name from class Qt. - // They are currently stored as "BottomToolBarArea" instead of "Qt::BottomToolBarArea". - // due to MO issues. This might be fixed in the future. - QLatin1String qtEnumerationPrefix(const QString &name) { - static const QLatin1String prefix("Qt::"); - if (name.indexOf(prefix) != 0) - return prefix; - return QLatin1String(); - } // figure out the toolbar area of a DOM attrib list. // By legacy, it is stored as an integer. As of 4.3.0, it is the enumeration value. QString toolBarAreaStringFromDOMAttributes(const CPP::WriteInitialization::DomPropertyMap &attributes) { const DomProperty *pstyle = attributes.value(QLatin1String("toolBarArea")); + QString result; if (!pstyle) - return QString(); - + return result; switch (pstyle->kind()) { - case DomProperty::Number: { - return QLatin1String("static_cast(") - + QString::number(pstyle->elementNumber()) + QLatin1String("), "); - } - case DomProperty::Enum: { - const QString area = pstyle->elementEnum(); - return qtEnumerationPrefix(area) + area + QLatin1String(", "); - } + case DomProperty::Number: + result = QLatin1String(language::toolbarArea(pstyle->elementNumber())); + break; + case DomProperty::Enum: + result = pstyle->elementEnum(); + break; default: break; } - return QString(); + if (!result.startsWith(QLatin1String("Qt::"))) + result.prepend(QLatin1String("Qt::")); + return result + QLatin1String(", "); } // Write a statement to create a spacer item. @@ -681,7 +672,7 @@ void WriteInitialization::acceptWidget(DomWidget *node) } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QDockWidget"))) { m_output << m_indent << parentWidget << "->addDockWidget("; if (DomProperty *pstyle = attributes.value(QLatin1String("dockWidgetArea"))) - m_output << "static_cast(" << pstyle->elementNumber() << "), "; + m_output << "Qt::" << language::dockWidgetArea(pstyle->elementNumber()) << ", "; m_output << varName << ");\n"; } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QStatusBar"))) { m_output << m_indent << parentWidget << "->setStatusBar(" << varName << ");\n"; @@ -1509,8 +1500,8 @@ QString WriteInitialization::writeSizePolicy(const DomSizePolicy *sp) m_output << m_indent << "QSizePolicy " << spName; do { if (sp->hasElementHSizeType() && sp->hasElementVSizeType()) { - m_output << "(static_cast(" << sp->elementHSizeType() - << "), static_cast(" << sp->elementVSizeType() << "));\n"; + m_output << "(QSizePolicy::" << language::sizePolicy(sp->elementHSizeType()) + << ", QSizePolicy::" << language::sizePolicy(sp->elementVSizeType()) << ");\n"; break; } if (sp->hasAttributeHSizeType() && sp->hasAttributeVSizeType()) { @@ -1767,7 +1758,7 @@ void WriteInitialization::writeColorGroup(DomColorGroup *colorGroup, const QStri const DomColor *color = colors.at(i); m_output << m_indent << paletteName << ".setColor(" << group - << ", " << "static_cast(" << i << ')' + << ", QPalette::" << language::paletteColorRole(i) << ", " << domColor2QString(color) << ");\n"; } -- cgit v1.2.3