void WriteDeclaration::acceptUI(DomUI *node) { QString qualifiedClassName = node->elementClass() + m_option.postfix; QString className = qualifiedClassName; QString varName = m_driver->findOrInsertWidget(node->elementWidget()); QString widgetClassName = node->elementWidget()->attributeClass(); QString exportMacro = node->elementExportMacro(); if (!exportMacro.isEmpty()) exportMacro.append(QLatin1Char(' ')); QStringList namespaceList = qualifiedClassName.split(QLatin1String("::")); if (namespaceList.count()) { className = namespaceList.last(); namespaceList.removeLast(); } // This is a bit of the hack but covers the cases Qt in/without namespaces // and User defined classes in/without namespaces. The "strange" case // is a User using Qt-in-namespace having his own classes not in a namespace. // In this case the generated Ui helper classes will also end up in // the Qt namespace (which is harmless, but not "pretty") const bool needsMacro = namespaceList.count() == 0 || namespaceList[0] == QLatin1String("qdesigner_internal"); if (needsMacro) m_output << "QT_BEGIN_NAMESPACE\n\n"; openNameSpaces(namespaceList, m_output); if (namespaceList.count()) m_output << "\n"; m_output << "class " << exportMacro << m_option.prefix << className << "\n" << "{\n" << "public:\n"; const QStringList connections = m_uic->databaseInfo()->connections(); for (int i=0; i<connections.size(); ++i) { const QString connection = connections.at(i); if (connection == QLatin1String("(default)")) continue; m_output << m_option.indent << "QSqlDatabase " << connection << "Connection;\n"; } TreeWalker::acceptWidget(node->elementWidget()); m_output << "\n"; WriteInitialization(m_uic, m_activateScripts).acceptUI(node); if (node->elementImages()) { if (m_option.extractImages) { ExtractImages(m_uic->option()).acceptUI(node); } else { m_output << "\n" << "protected:\n" << m_option.indent << "enum IconID\n" << m_option.indent << "{\n"; WriteIconDeclaration(m_uic).acceptUI(node); m_output << m_option.indent << m_option.indent << "unknown_ID\n" << m_option.indent << "};\n"; WriteIconInitialization(m_uic).acceptUI(node); } } if (m_activateScripts) { m_output << "\nprivate:\n\n"; writeScriptContextClass(m_option.indent, m_output); } m_output << "};\n\n"; closeNameSpaces(namespaceList, m_output); if (namespaceList.count()) m_output << "\n"; if (m_option.generateNamespace && !m_option.prefix.isEmpty()) { namespaceList.append(QLatin1String("Ui")); openNameSpaces(namespaceList, m_output); m_output << m_option.indent << "class " << exportMacro << className << ": public " << m_option.prefix << className << " {};\n"; closeNameSpaces(namespaceList, m_output); if (namespaceList.count()) m_output << "\n"; } if (needsMacro) m_output << "QT_END_NAMESPACE\n\n"; }
void WriteDeclaration::acceptUI(DomUI *node) { QString qualifiedClassName = node->elementClass() + m_option.postfix; QString className = qualifiedClassName; QString varName = m_driver->findOrInsertWidget(node->elementWidget()); QString widgetClassName = node->elementWidget()->attributeClass(); QString exportMacro = node->elementExportMacro(); if (!exportMacro.isEmpty()) exportMacro.append(QLatin1Char(' ')); QStringList namespaceList = qualifiedClassName.split(QLatin1String("::")); if (namespaceList.count()) { className = namespaceList.last(); namespaceList.removeLast(); } openNameSpaces(namespaceList, m_output); if (namespaceList.count()) m_output << "\n"; m_output << "class " << exportMacro << m_option.prefix << className << "\n" << "{\n" << "public:\n"; const QStringList connections = m_uic->databaseInfo()->connections(); for (int i=0; i<connections.size(); ++i) { const QString connection = connections.at(i); if (connection == QLatin1String("(default)")) continue; m_output << m_option.indent << "QSqlDatabase " << connection << "Connection;\n"; } TreeWalker::acceptWidget(node->elementWidget()); m_output << "\n"; WriteInitialization(m_uic, m_activateScripts).acceptUI(node); if (node->elementImages()) { if (m_option.extractImages) { ExtractImages(m_uic->option()).acceptUI(node); } else { m_output << "\n" << "protected:\n" << m_option.indent << "enum IconID\n" << m_option.indent << "{\n"; WriteIconDeclaration(m_uic).acceptUI(node); m_output << m_option.indent << m_option.indent << "unknown_ID\n" << m_option.indent << "};\n"; WriteIconInitialization(m_uic).acceptUI(node); } } if (m_activateScripts) { m_output << "\nprivate:\n\n"; writeScriptContextClass(m_option.indent, m_output); } m_output << "};\n\n"; closeNameSpaces(namespaceList, m_output); if (namespaceList.count()) m_output << "\n"; if (m_option.generateNamespace && !m_option.prefix.isEmpty()) { namespaceList.append(QLatin1String("Ui")); openNameSpaces(namespaceList, m_output); m_output << m_option.indent << "class " << exportMacro << className << ": public " << m_option.prefix << className << " {};\n"; closeNameSpaces(namespaceList, m_output); if (namespaceList.count()) m_output << "\n"; } }