// Use the class generation utils provided by the designer plugin static inline bool generateFormClass(const GuiAppParameters ¶ms, const Core::GeneratedFile &uiFile, Core::GeneratedFile *formSource, Core::GeneratedFile *formHeader, QString *errorMessage) { // Retrieve parameters from settings Designer::FormClassWizardParameters fp; fp.uiTemplate = uiFile.contents(); fp.uiFile = uiFile.path(); fp.className = params.className; fp.sourceFile = params.sourceFileName; fp.headerFile = params.headerFileName; QString headerContents; QString sourceContents; // Invoke code generation service of Qt Designer plugin. if (QObject *codeGenerator = ExtensionSystem::PluginManager::instance()->getObjectByClassName("Designer::QtDesignerFormClassCodeGenerator")) { const QVariant code = ExtensionSystem::invoke<QVariant>(codeGenerator, "generateFormClassCode", fp); if (code.type() == QVariant::List) { const QVariantList vl = code.toList(); if (vl.size() == 2) { headerContents = vl.front().toString(); sourceContents = vl.back().toString(); } } } if (headerContents.isEmpty() || sourceContents.isEmpty()) { *errorMessage = QString::fromAscii("Failed to obtain Designer plugin code generation service."); return false; } formHeader->setContents(headerContents); formSource->setContents(sourceContents); return true; }
bool CascadesImportWizard::convertFileContent(Core::GeneratedFile &file, ConvertedProjectContext &projectContext, QString &errorMessage) const { QString filePath = file.path(); QString fileName = filePath.section(QLatin1Char('/'), -1); bool isRootFile = (fileName == filePath); QString fileExtension = fileName.section(QLatin1Char('.'), -1).toLower(); bool useFileConverter = true; if (isRootFile) { if (fileName == QLatin1String("bar-descriptor.xml")) { BarDescriptorConverter conv(projectContext); conv.convertFile(file, errorMessage); useFileConverter = false; } else if (fileName == QLatin1String(IMPORT_LOG_FILE_NAME)) { ImportLogConverter conv(projectContext); conv.convertFile(file, errorMessage); useFileConverter = false; } else if (fileExtension == QLatin1String("pro")) { ProjectFileConverter conv(projectContext); conv.convertFile(file, errorMessage); useFileConverter = false; } } if (useFileConverter) { FileConverter conv(projectContext); conv.convertFile(file, errorMessage); } return errorMessage.isEmpty(); }
bool CascadesImportWizard::convertFilePath(Core::GeneratedFile &file, ConvertedProjectContext &projectContext, QString &errorMessage) const { Q_UNUSED(errorMessage); const QString destProjectPath = projectContext.destProjectPath(); file.setPath(destProjectPath % QLatin1Char('/') % file.path()); return true; }
////////////////////////////////////////////////////////////////////////////// // // FileConverter // ////////////////////////////////////////////////////////////////////////////// bool FileConverter::convertFile(Core::GeneratedFile &file, QString &errorMessage) { ImportLog &log = convertedProjectContext().importLog(); log.logInfo(tr("===== Converting file: %1").arg(file.path())); loadFileContent(file, errorMessage); if (!errorMessage.isEmpty()) logError(errorMessage); return errorMessage.isEmpty(); }
bool FileConverter::loadFileContent(Core::GeneratedFile &file, QString &errorMessage) { if (file.binaryContents().isEmpty()) { // virtual files have some content set already QString filePath = file.path(); QByteArray ba = loadFileContent(filePath, errorMessage); file.setBinaryContents(ba); } return errorMessage.isEmpty(); }
bool ProjectFileConverter::convertFile(Core::GeneratedFile &file, QString &errorMessage) { if (!FileConverter::convertFile(file, errorMessage)) return false; ImportLog &log = convertedProjectContext().importLog(); QMap<QString, QString> origProjectVariables = scanForDefinedVariables(file); QString fileContent; QLatin1String path( ":/qnx/cascadesimport/resources/templates/project.pro"); QByteArray ba = loadFileContent(path, errorMessage); if (!errorMessage.isEmpty()) return false; fileContent = QString::fromUtf8(ba); QStringList headers; QStringList sources; QStringList resources; QStringList otherFiles; QSet<QString> entries; foreach (const QString &filePath, convertedProjectContext().collectedFiles()) { QString ext = filePath.section(QLatin1Char('.'), -1); if (ext.compare(QLatin1String("c"), Qt::CaseInsensitive) == 0) sources << filePath; else if (ext.compare(QLatin1String("cc"), Qt::CaseInsensitive) == 0) sources << filePath; else if (ext.compare(QLatin1String("cpp"), Qt::CaseInsensitive) == 0) sources << filePath; else if (ext.compare(QLatin1String("h"), Qt::CaseInsensitive) == 0) headers << filePath; else if (ext.compare(QLatin1String("hh"), Qt::CaseInsensitive) == 0) headers << filePath; else if (ext.compare(QLatin1String("hpp"), Qt::CaseInsensitive) == 0) headers << filePath; else if (ext.compare(QLatin1String("qrc"), Qt::CaseInsensitive) == 0) resources << filePath; else if (ext.compare(QLatin1String("qml"), Qt::CaseInsensitive) == 0) otherFiles << filePath; else if (ext.compare(QLatin1String("js"), Qt::CaseInsensitive) == 0) otherFiles << filePath; else if (ext.compare(QLatin1String("ts"), Qt::CaseInsensitive) == 0) otherFiles << filePath; else if (ext.compare(QLatin1String("pro"), Qt::CaseInsensitive) == 0) otherFiles << filePath; else if (filePath.compare(QLatin1String("bar-descriptor.xml"), Qt::CaseInsensitive) == 0) otherFiles << filePath; else if (filePath.startsWith(QLatin1String("assets/"), Qt::CaseInsensitive)) // include all the content of the assets directory otherFiles << filePath; else if (filePath.startsWith(QLatin1String("src/"), Qt::CaseInsensitive)) // include all the content of the src directory otherFiles << filePath; else if (ext.compare(QLatin1String("log"), Qt::CaseInsensitive) != 0) log.logWarning(tr("File '%1' not listed in '%2' file, should it be?") .arg(filePath).arg(file.path())); } fileContent.replace(QLatin1String("%HEADERS%"), headers.join(QLatin1String(" \\\n "))); fileContent.replace(QLatin1String("%SOURCES%"), sources.join(QLatin1String(" \\\n "))); fileContent.replace(QLatin1String("%RESOURCES%"), resources.join(QLatin1String(" \\\n "))); fileContent.replace(QLatin1String("%OTHER_FILES%"), otherFiles.join(QLatin1String(" \\\n "))); fileContent.replace(QLatin1String("%PROJECT_NAME%"), convertedProjectContext().projectName()); fileContent.replace(QLatin1String("%TARGET%"), origProjectVariables.value(QLatin1String("TARGET"), convertedProjectContext().projectName())); fileContent.replace(QLatin1String("%EXTRA_LIBS%"), origProjectVariables.value(QLatin1String("LIBS"))); fileContent.replace(QLatin1String("%IMPORTER_VERSION%"), QLatin1String(Qnx::Constants::QNX_BLACKBERRY_CASCADESIMPORTER_VERSION)); fileContent.replace(QLatin1String("%DATE_TIME%"), QDateTime::currentDateTime().toString(Qt::ISODate)); fileContent.replace(QLatin1String("%QT%"), updateVariable(origProjectVariables.value(QLatin1String("QT")), QLatin1String("declarative script svg sql network xml xmlpatterns"), QString() )); fileContent.replace(QLatin1String("%CONFIG%"), updateVariable(origProjectVariables.value(QLatin1String("CONFIG")), QLatin1String("qt warn_on"), QLatin1String("debug release debug_and_release cascades cascades10") )); fileContent.replace(QLatin1String("%MOBILITY%"), origProjectVariables.value(QLatin1String("MOBILITY"))); file.setContents(fileContent); file.setAttributes(file.attributes() | Core::GeneratedFile::OpenProjectAttribute); return errorMessage.isEmpty(); }