QmlProject: Choose initial kits matching selected wizard

This follows the same pattern as the qt4project wizard. It's ugly code.

Task-number: QTCREATORBUG-8424
Change-Id: I89909b34c371b17d32d5268c32b90e3408446a08
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
This commit is contained in:
Daniel Teske
2012-12-14 16:05:15 +01:00
parent 9a578b1275
commit c4b5b32601
2 changed files with 32 additions and 4 deletions

View File

@@ -30,11 +30,17 @@
#include "qmlprojectapplicationwizard.h"
#include "qmlprojectconstants.h"
#include "qmlprojectmanager.h"
#include "qmlproject.h"
#include <app/app_version.h>
#include <extensionsystem/pluginmanager.h>
#include <projectexplorer/customwizard/customwizard.h>
#include <projectexplorer/kitmanager.h>
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/target.h>
#include <qtsupport/qtsupportconstants.h>
#include <qtsupport/qtkitinformation.h>
#include <QIcon>
@@ -130,7 +136,7 @@ Core::GeneratedFiles QmlProjectApplicationWizard::generateFiles(const QWizard *w
const QString projectName = wizard->projectName();
const QString projectPath = wizard->path() + QLatin1Char('/') + projectName;
const QString creatorFileName = Core::BaseFileWizard::buildFileName(projectPath,
m_creatorFileName = Core::BaseFileWizard::buildFileName(projectPath,
projectName,
QLatin1String("qmlproject"));
@@ -197,7 +203,7 @@ Core::GeneratedFiles QmlProjectApplicationWizard::generateFiles(const QWizard *w
<< " // importPaths: [ \"../exampleplugin\" ]" << endl
<< "}" << endl;
}
Core::GeneratedFile generatedCreatorFile(creatorFileName);
Core::GeneratedFile generatedCreatorFile(m_creatorFileName);
generatedCreatorFile.setContents(projectContents);
generatedCreatorFile.setAttributes(Core::GeneratedFile::OpenProjectAttribute);
@@ -208,8 +214,28 @@ Core::GeneratedFiles QmlProjectApplicationWizard::generateFiles(const QWizard *w
return files;
}
void QmlProjectApplicationWizard::writeUserFile(const QString &fileName) const
{
Manager *manager = ExtensionSystem::PluginManager::getObject<Manager>();
QmlProject *pro = new QmlProject(manager, fileName);
Core::FeatureSet features = Core::FeatureSet(QtSupport::Constants::FEATURE_QT_QUICK_1);
if (m_projectType == QtQuick2Project)
features = Core::FeatureSet(QtSupport::Constants::FEATURE_QT_QUICK_2);
QtSupport::QtVersionKitMatcher featureMatcher(features);
QList<ProjectExplorer::Kit *> kits = ProjectExplorer::KitManager::instance()->kits();
foreach (ProjectExplorer::Kit *k, kits)
if (featureMatcher.matches(k)
&& pro->supportsKit(k, 0)) // checks for desktop device
pro->addTarget(pro->createTarget(k));
pro->saveSettings();
delete pro;
}
bool QmlProjectApplicationWizard::postGenerateFiles(const QWizard *, const Core::GeneratedFiles &l, QString *errorMessage)
{
writeUserFile(m_creatorFileName);
return ProjectExplorer::CustomProjectWizard::postGenerateOpen(l, errorMessage);
}

View File

@@ -70,6 +70,8 @@ protected:
virtual bool postGenerateFiles(const QWizard *w, const Core::GeneratedFiles &l, QString *errorMessage);
private:
void writeUserFile(const QString &fileName) const;
mutable QString m_creatorFileName;
const ProjectType m_projectType;
};