From 08ddd9f944fa2295dd616c81e8c7eae87e676d43 Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Tue, 16 Nov 2010 19:10:13 +0100 Subject: [PATCH] Move Qt QML projects to pro-based projects Reviewed-by: dt --- .../gettingstartedwelcomepagewidget.cpp | 66 +++++++++++++------ 1 file changed, 45 insertions(+), 21 deletions(-) diff --git a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp index 8137cb788c..2329ba7919 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); -- GitLab