diff options
author | Daniel Molkentin <daniel.molkentin@nokia.com> | 2010-11-16 19:10:13 +0100 |
---|---|---|
committer | Daniel Molkentin <daniel.molkentin@nokia.com> | 2010-11-18 15:35:41 +0100 |
commit | 08ddd9f944fa2295dd616c81e8c7eae87e676d43 (patch) | |
tree | ded4ade09f5267661b44e615e7424d0ad950b6e3 | |
parent | 7ea4d2bb7b18c07bf239ad1c74f996e9ef104e88 (diff) |
Move Qt QML projects to pro-based projects
Reviewed-by: dt
-rw-r--r-- | src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp | 66 |
1 files changed, 45 insertions, 21 deletions
diff --git a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp index 8137cb788c8..2329ba7919c 100644 --- a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp +++ b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp @@ -66,6 +66,7 @@ namespace Internal { const char ExamplePathPropertyName[] = "__qt_ExamplePath"; const char HelpPathPropertyName[] = "__qt_HelpPath"; +const char QmlMainFileName[] = "__qt_QmlMainFileName"; void PixmapDownloader::populatePixmap(QNetworkReply *reply) { QImage image; @@ -192,21 +193,32 @@ void GettingStartedWelcomePageWidget::parseXmlFile(QFile *file, QMenuHash &cppSu const QString name = reader.attributes().value(QLatin1String("name")).toString(); const bool isQml = reader.attributes().value(QLatin1String("qml")).toString() == "true"; const QString localDir = reader.attributes().value(QLatin1String("filename")).toString(); - const QString extension = isQml ? QLatin1String(".qmlproject") : QLatin1String(".pro"); - const QString fileName = localDir.section(',', -1); - const QString relativeProPath = slash + dirName + slash + localDir + slash + fileName + extension; + const QString fileName = localDir.section('/', -1); + QString replacedFileName = fileName; + replacedFileName.replace(QLatin1Char('-'), QString()); + QString relativeProPath = slash + dirName + slash + localDir + slash + replacedFileName; - QString finaleFileName = examplePath + relativeProPath; - if (!QFile::exists(finaleFileName)) - finaleFileName = sourcePath + QLatin1String("/examples") + relativeProPath; + QString finalFileName = examplePath + relativeProPath + QLatin1String(".pro"); - if (!QFile::exists(finaleFileName)) + if (!QFile::exists(finalFileName)) + finalFileName = sourcePath + QLatin1String("/examples") + relativeProPath + QLatin1String(".pro"); + + if (isQml && !QFile::exists(finalFileName)) { + // maybe it's an old-style QML project? + relativeProPath = slash + dirName + slash + localDir + slash + fileName; + finalFileName = examplePath + relativeProPath + QLatin1String(".qmlproject"); + + if (!QFile::exists(finalFileName)) + finalFileName = sourcePath + QLatin1String("/examples") + relativeProPath + QLatin1String(".qmlproject");; + } + + if (!QFile::exists(finalFileName)) break; - QString dirName1 = dirName; - dirName1.replace(slash, QLatin1Char('-')); + QString dirNameforHelp = dirName; + dirNameforHelp.replace(slash, QLatin1Char('-')); QString helpPath = QLatin1String("qthelp://com.trolltech.qt/qdoc/") + - dirName1 + + dirNameforHelp + QLatin1Char('-') + fileName + QLatin1String(".html"); QAction *exampleAction = 0; @@ -231,8 +243,10 @@ void GettingStartedWelcomePageWidget::parseXmlFile(QFile *file, QMenuHash &cppSu exampleAction = new QAction(name, subMenu); subMenu->insertAction(beforeAction, exampleAction); connect(exampleAction, SIGNAL(triggered()), SLOT(slotOpenExample())); - exampleAction->setProperty(ExamplePathPropertyName, finaleFileName); + exampleAction->setProperty(ExamplePathPropertyName, finalFileName); exampleAction->setProperty(HelpPathPropertyName, helpPath); + if (isQml) + exampleAction->setProperty(QmlMainFileName, fileName); } } break; @@ -339,6 +353,12 @@ void GettingStartedWelcomePageWidget::slotOpenExample() QString helpFile = action->property(HelpPathPropertyName).toString(); QString proFile = action->property(ExamplePathPropertyName).toString(); + QString qmlMainFileName; + bool isQmlProject = false; + if (action->dynamicPropertyNames().contains(QmlMainFileName)) { + qmlMainFileName = action->property(QmlMainFileName).toString(); + isQmlProject = true; + } QStringList files; QFileInfo proFileInfo(proFile); @@ -399,18 +419,22 @@ void GettingStartedWelcomePageWidget::slotOpenExample() } } - - QString tryFile = proFileInfo.path() + "/main.cpp"; + QString tryFile; files << proFile; - if(!QFile::exists(tryFile)) - tryFile = proFileInfo.path() + '/' + proFileInfo.baseName() + ".cpp"; - // maybe it's a QML project? - if(!QFile::exists(tryFile)) + if (isQmlProject) { tryFile = proFileInfo.path() + '/' + "/main.qml"; - if(!QFile::exists(tryFile)) - tryFile = proFileInfo.path() + '/' + proFileInfo.baseName() + ".qml"; - if(QFile::exists(tryFile)) - files << tryFile; + if(!QFile::exists(tryFile)) + tryFile = proFileInfo.path() + "/qml/" + qmlMainFileName + ".qml"; + // legacy qmlproject case + if(!QFile::exists(tryFile)) + tryFile = proFileInfo.path() + '/' + qmlMainFileName + ".qml"; + if(QFile::exists(tryFile)) + files << tryFile; + } else { + tryFile = proFileInfo.path() + "/main.cpp"; + if(!QFile::exists(tryFile)) + tryFile = proFileInfo.path() + '/' + proFileInfo.baseName() + ".cpp"; + } Core::ICore::instance()->openFiles(files, Core::ICore::SwitchMode); if (!helpFile.isEmpty()) slotOpenContextHelpPage(helpFile); |