diff options
author | Alessandro Portale <alessandro.portale@nokia.com> | 2010-11-15 22:15:34 +0100 |
---|---|---|
committer | Alessandro Portale <alessandro.portale@nokia.com> | 2010-11-15 22:15:48 +0100 |
commit | 1b15ba8614f92686be8059e99a75e1283b6037d0 (patch) | |
tree | d4f405cba67c5157409feadc215239e2e2ba51f9 /tests/tools/qtquickappblaster/main.cpp | |
parent | 606aba3659a7930d4c6bf02c5f878bd773cf6221 (diff) | |
download | qt-creator-1b15ba8614f92686be8059e99a75e1283b6037d0.tar.gz |
Mass Qt Quick App generator.
First usage: convert QML examples into c++ projects.
Diffstat (limited to 'tests/tools/qtquickappblaster/main.cpp')
-rw-r--r-- | tests/tools/qtquickappblaster/main.cpp | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/tests/tools/qtquickappblaster/main.cpp b/tests/tools/qtquickappblaster/main.cpp new file mode 100644 index 0000000000..470aca4c54 --- /dev/null +++ b/tests/tools/qtquickappblaster/main.cpp @@ -0,0 +1,101 @@ +#include "qmlstandaloneapp.h" +#include <QtCore> + +using namespace Qt4ProjectManager::Internal; + +bool processXmlFile(const QString &xmlFile) +{ + QFile file(xmlFile); + if (!file.open(QIODevice::ReadOnly)) + return false; + + const QLatin1String tag_app("app"); + const QLatin1String attrib_mainQmlFile("mainqmlfile"); + const QLatin1String attrib_projectPath("projectpath"); + const QLatin1String attrib_projectName("projectname"); + const QLatin1String attrib_screenOrientation("screenorientation"); + const QLatin1String value_screenOrientationLockLandscape("LockLandscape"); + const QLatin1String value_screenOrientationLockPortrait("LockPortrait"); + const QLatin1String attrib_networkAccess("networkAccess"); + + static const QString qtDir = + QLibraryInfo::location(QLibraryInfo::PrefixPath) + QLatin1Char('/'); + + QXmlStreamReader reader(&file); + while (!reader.atEnd()) { + const QXmlStreamReader::TokenType token = reader.readNext(); + switch (token) { + case QXmlStreamReader::StartElement: + if (reader.name() == tag_app) { + QmlStandaloneApp qmlApp; + if (!reader.attributes().hasAttribute(attrib_projectName)) { + qDebug() << "Error: Project without name"; + continue; + } + qmlApp.setProjectName(reader.attributes().value(attrib_projectName).toString()); + QFileInfo projectPath; + if (reader.attributes().hasAttribute(attrib_projectPath)) + projectPath = qtDir + reader.attributes().value(attrib_projectPath).toString(); + qmlApp.setProjectPath(projectPath.absoluteFilePath()); + if (reader.attributes().hasAttribute(attrib_mainQmlFile)) { + const QFileInfo qmlFileOrigin( + qtDir + reader.attributes().value(attrib_mainQmlFile).toString()); + if (!qmlFileOrigin.exists()) { + qDebug() << "Cannot find" << + QDir::toNativeSeparators(qmlFileOrigin.absoluteFilePath()); + continue; + } + const QFileInfo qmlTargetPath(QString(projectPath.absoluteFilePath() + + QLatin1Char('/') + qmlApp.projectName() + + QLatin1String("/qml/") + qmlApp.projectName())); +#ifdef Q_OS_WIN + const QString sourcePath = + QDir::toNativeSeparators(qmlFileOrigin.canonicalPath() + QLatin1String("/*")); + const QString targetPath = + QDir::toNativeSeparators(qmlTargetPath.absoluteFilePath() + QLatin1Char('/')); + QProcess xcopy; + QStringList parameters; + parameters << QLatin1String("/E") << sourcePath << targetPath; + xcopy.start(QLatin1String("xcopy.exe"), parameters); + if (!xcopy.waitForStarted() || !xcopy.waitForFinished()) { + qDebug() << "Could not copy" << + QDir::toNativeSeparators(sourcePath); + continue; + } +#else // Q_OS_WIN + // Implement me! +#endif // Q_OS_WIN + qmlApp.setMainQmlFile(qmlTargetPath.absoluteFilePath() + + QLatin1Char('/') + qmlFileOrigin.fileName()); + } + if (reader.attributes().hasAttribute(attrib_screenOrientation)) { + const QStringRef orientation = reader.attributes().value(attrib_screenOrientation); + qmlApp.setOrientation(orientation == value_screenOrientationLockLandscape ? + AbstractMobileApp::ScreenOrientationLockLandscape + : orientation == value_screenOrientationLockPortrait ? + AbstractMobileApp::ScreenOrientationLockPortrait + : AbstractMobileApp::ScreenOrientationAuto); + } + if (reader.attributes().hasAttribute(attrib_networkAccess)) + qmlApp.setNetworkEnabled( + reader.attributes().value(attrib_networkAccess) == QLatin1String("true")); + if (!qmlApp.generateFiles(0)) + qDebug() << "Unable to generate the files for" << qmlApp.projectName(); + } + break; + default: + break; + } + } + return true; +} + +int main(int argc, char *argv[]) +{ + QCoreApplication a(argc, argv); + + if (!processXmlFile(QLatin1String(":/qtquickapps.xml"))) + return 1; + + return 0; +} |