summaryrefslogtreecommitdiff
path: root/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp')
-rw-r--r--src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp731
1 files changed, 0 insertions, 731 deletions
diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp
deleted file mode 100644
index 350bd821bb..0000000000
--- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp
+++ /dev/null
@@ -1,731 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#include "targetsetuppage.h"
-#include "importwidget.h"
-#include "../qt4targetsetupwidget.h"
-
-#include <qt4projectmanager/buildconfigurationinfo.h>
-#include <qt4projectmanager/qt4buildconfiguration.h>
-#include <qt4projectmanager/qt4project.h>
-#include <qt4projectmanager/qmakekitinformation.h>
-
-#include <coreplugin/icore.h>
-#include <projectexplorer/projectexplorerconstants.h>
-#include <projectexplorer/target.h>
-#include <qtsupport/qtkitinformation.h>
-#include <qtsupport/qtsupportconstants.h>
-#include <qtsupport/qtversionfactory.h>
-#include <qtsupport/qtversionmanager.h>
-#include <utils/qtcprocess.h>
-
-#include <QLabel>
-#include <QMessageBox>
-#include <QScrollArea>
-#include <QVBoxLayout>
-
-using namespace ProjectExplorer;
-using namespace QtSupport;
-
-namespace Qt4ProjectManager {
-namespace Internal {
-
-static const Core::Id QT_IS_TEMPORARY("Qt4PM.TempQt");
-static const Core::Id KIT_IS_TEMPORARY("Qt4PM.TempKit");
-static const Core::Id KIT_TEMPORARY_NAME("Qt4PM.TempName");
-static const Core::Id KIT_FINAL_NAME("Qt4PM.FinalName");
-static const Core::Id TEMPORARY_OF_PROJECTS("Qt4PM.TempProject");
-
-class TargetSetupPageUi
-{
-public:
- QWidget *centralWidget;
- QWidget *scrollAreaWidget;
- QScrollArea *scrollArea;
- QLabel *headerLabel;
- QLabel *descriptionLabel;
- QLabel *noValidKitLabel;
- QLabel *optionHintLabel;
-
- void setupUi(QWidget *q)
- {
- QWidget *setupTargetPage = new QWidget(q);
- descriptionLabel = new QLabel(setupTargetPage);
- descriptionLabel->setWordWrap(true);
- descriptionLabel->setVisible(false);
-
- headerLabel = new QLabel(setupTargetPage);
- headerLabel->setWordWrap(true);
- headerLabel->setVisible(false);
-
- noValidKitLabel = new QLabel(setupTargetPage);
- noValidKitLabel->setWordWrap(true);
- noValidKitLabel->setText(TargetSetupPage::tr("<span style=\" font-weight:600;\">No valid kits found.</span>"));
-
-
- optionHintLabel = new QLabel(setupTargetPage);
- optionHintLabel->setWordWrap(true);
- optionHintLabel->setText(TargetSetupPage::tr(
- "Please add a kit in the <a href=\"buildandrun\">options</a> "
- "or via the maintenance tool of the SDK."));
- optionHintLabel->setTextInteractionFlags(Qt::TextBrowserInteraction);
- optionHintLabel->setVisible(false);
-
- centralWidget = new QWidget(setupTargetPage);
- QSizePolicy policy(QSizePolicy::Preferred, QSizePolicy::Fixed);
- policy.setHorizontalStretch(0);
- policy.setVerticalStretch(0);
- policy.setHeightForWidth(centralWidget->sizePolicy().hasHeightForWidth());
- centralWidget->setSizePolicy(policy);
-
- scrollAreaWidget = new QWidget(setupTargetPage);
- scrollArea = new QScrollArea(scrollAreaWidget);
- scrollArea->setWidgetResizable(true);
-
- QWidget *scrollAreaWidgetContents;
- scrollAreaWidgetContents = new QWidget();
- scrollAreaWidgetContents->setGeometry(QRect(0, 0, 230, 81));
- scrollArea->setWidget(scrollAreaWidgetContents);
-
- QVBoxLayout *verticalLayout = new QVBoxLayout(scrollAreaWidget);
- verticalLayout->setSpacing(0);
- verticalLayout->setContentsMargins(0, 0, 0, 0);
- verticalLayout->addWidget(scrollArea);
-
- QVBoxLayout *verticalLayout_2 = new QVBoxLayout(setupTargetPage);
- verticalLayout_2->addWidget(headerLabel);
- verticalLayout_2->addWidget(noValidKitLabel);
- verticalLayout_2->addWidget(descriptionLabel);
- verticalLayout_2->addWidget(optionHintLabel);
- verticalLayout_2->addWidget(centralWidget);
- verticalLayout_2->addWidget(scrollAreaWidget);
-
- QVBoxLayout *verticalLayout_3 = new QVBoxLayout(q);
- verticalLayout_3->setContentsMargins(0, 0, 0, -1);
- verticalLayout_3->addWidget(setupTargetPage);
-
- QObject::connect(optionHintLabel, SIGNAL(linkActivated(QString)),
- q, SLOT(openOptions()));
- }
-};
-
-} // namespace Internal
-
-using namespace Internal;
-
-TargetSetupPage::TargetSetupPage(QWidget *parent) :
- QWizardPage(parent),
- m_requiredMatcher(0),
- m_preferredMatcher(0),
- m_baseLayout(0),
- m_importSearch(false),
- m_ignoreUpdates(false),
- m_firstWidget(0),
- m_ui(new TargetSetupPageUi),
- m_importWidget(new Internal::ImportWidget(this)),
- m_spacer(new QSpacerItem(0,0, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding)),
- m_forceOptionHint(false)
-{
- setObjectName(QLatin1String("TargetSetupPage"));
- setWindowTitle(tr("Select Kits for Your Project"));
- m_ui->setupUi(this);
-
- QSizePolicy policy(QSizePolicy::Preferred, QSizePolicy::Preferred);
- policy.setHorizontalStretch(0);
- policy.setVerticalStretch(0);
- policy.setHeightForWidth(sizePolicy().hasHeightForWidth());
- setSizePolicy(policy);
-
- QWidget *centralWidget = new QWidget(this);
- m_ui->scrollArea->setWidget(centralWidget);
- centralWidget->setLayout(new QVBoxLayout);
- m_ui->centralWidget->setLayout(new QVBoxLayout);
- m_ui->centralWidget->layout()->setMargin(0);
-
- setUseScrollArea(true);
- setImportSearch(false);
-
- setTitle(tr("Kit Selection"));
-
- QObject *km = KitManager::instance();
- connect(km, SIGNAL(kitAdded(ProjectExplorer::Kit*)),
- this, SLOT(handleKitAddition(ProjectExplorer::Kit*)));
- connect(km, SIGNAL(kitRemoved(ProjectExplorer::Kit*)),
- this, SLOT(handleKitRemoval(ProjectExplorer::Kit*)));
- connect(km, SIGNAL(kitUpdated(ProjectExplorer::Kit*)),
- this, SLOT(handleKitUpdate(ProjectExplorer::Kit*)));
- connect(m_importWidget, SIGNAL(importFrom(Utils::FileName)),
- this, SLOT(import(Utils::FileName)));
-}
-
-void TargetSetupPage::initializePage()
-{
- reset();
-
- setupWidgets();
- setupImports();
- selectAtLeastOneKit();
-}
-
-void TargetSetupPage::setRequiredKitMatcher(ProjectExplorer::KitMatcher *matcher)
-{
- m_requiredMatcher = matcher;
-}
-
-QList<Core::Id> TargetSetupPage::selectedKits() const
-{
- QList<Core::Id> result;
- QMap<Core::Id, Qt4TargetSetupWidget *>::const_iterator it, end;
- it = m_widgets.constBegin();
- end = m_widgets.constEnd();
-
- for ( ; it != end; ++it) {
- if (isKitSelected(it.key()))
- result << it.key();
- }
- return result;
-}
-
-void TargetSetupPage::setPreferredKitMatcher(ProjectExplorer::KitMatcher *matcher)
-{
- m_preferredMatcher = matcher;
-}
-
-TargetSetupPage::~TargetSetupPage()
-{
- reset();
- delete m_ui;
- delete m_preferredMatcher;
- delete m_requiredMatcher;
-}
-
-bool TargetSetupPage::isKitSelected(Core::Id id) const
-{
- Qt4TargetSetupWidget *widget = m_widgets.value(id);
- return widget && widget->isKitSelected();
-}
-
-void TargetSetupPage::setKitSelected(Core::Id id, bool selected)
-{
- Qt4TargetSetupWidget *widget = m_widgets.value(id);
- if (widget)
- widget->setKitSelected(selected);
-}
-
-bool TargetSetupPage::isComplete() const
-{
- foreach (Qt4TargetSetupWidget *widget, m_widgets.values())
- if (widget->isKitSelected())
- return true;
- return false;
-}
-
-void TargetSetupPage::setImportSearch(bool b)
-{
- m_importSearch = b;
- m_importWidget->setVisible(b);
-}
-
-void TargetSetupPage::setupWidgets()
-{
- // Known profiles:
- QList<Kit *> kits = m_requiredMatcher
- ? KitManager::matchingKits(*m_requiredMatcher) : KitManager::kits();
- foreach (Kit *k, kits)
- addWidget(k);
-
- // Setup import widget:
- m_baseLayout->addWidget(m_importWidget);
- Utils::FileName path = Utils::FileName::fromString(m_proFilePath);
- path = path.parentDir(); // base dir
- path = path.parentDir(); // parent dir
- m_importWidget->setCurrentDirectory(path);
-
- updateVisibility();
-}
-
-void TargetSetupPage::reset()
-{
- foreach (Qt4TargetSetupWidget *widget, m_widgets.values()) {
- ProjectExplorer::Kit *k = widget->kit();
- if (!k)
- continue;
- removeProject(k, m_proFilePath);
- delete widget;
- }
-
- m_widgets.clear();
- m_firstWidget = 0;
-}
-
-ProjectExplorer::Kit *TargetSetupPage::createTemporaryKit(BaseQtVersion *version,
- bool temporaryVersion,
- const Utils::FileName &parsedSpec)
-{
- ProjectExplorer::Kit *k = new ProjectExplorer::Kit;
- QtKitInformation::setQtVersion(k, version);
- ProjectExplorer::ToolChainKitInformation::setToolChain(k, version->preferredToolChain(parsedSpec));
- QmakeKitInformation::setMkspec(k, parsedSpec);
-
- k->setDisplayName(tr("%1 - temporary").arg(version->displayName()));
- k->setValue(KIT_TEMPORARY_NAME, k->displayName());
- k->setValue(KIT_FINAL_NAME, version->displayName());
- k->setValue(KIT_IS_TEMPORARY, true);
- if (temporaryVersion)
- k->setValue(QT_IS_TEMPORARY, version->uniqueId());
-
- m_ignoreUpdates = true;
- ProjectExplorer::KitManager::registerKit(k);
- m_ignoreUpdates = false;
-
- return k;
-}
-
-void TargetSetupPage::cleanKit(ProjectExplorer::Kit *k)
-{
- m_ignoreUpdates = true;
- k->removeKey(KIT_IS_TEMPORARY);
- k->removeKey(QT_IS_TEMPORARY);
- k->removeKey(TEMPORARY_OF_PROJECTS);
- const QString tempName = k->value(KIT_TEMPORARY_NAME).toString();
- if (!tempName.isNull() && k->displayName() == tempName)
- k->setDisplayName(k->value(KIT_FINAL_NAME).toString());
- k->removeKey(KIT_TEMPORARY_NAME);
- k->removeKey(KIT_FINAL_NAME);
- m_ignoreUpdates = false;
-}
-
-void TargetSetupPage::makeQtPersistent(ProjectExplorer::Kit *k)
-{
- m_ignoreUpdates = true;
- k->removeKey(QT_IS_TEMPORARY);
- m_ignoreUpdates = false;
-}
-
-void TargetSetupPage::addProject(ProjectExplorer::Kit *k, const QString &path)
-{
- if (!k->hasValue(KIT_IS_TEMPORARY))
- return;
-
- QStringList projects = k->value(TEMPORARY_OF_PROJECTS, QStringList()).toStringList();
- if (!projects.contains(path)) {
- projects.append(path);
- m_ignoreUpdates = true;
- k->setValue(TEMPORARY_OF_PROJECTS, projects);
- m_ignoreUpdates = false;
- }
-}
-
-void TargetSetupPage::removeProject(ProjectExplorer::Kit *k, const QString &path)
-{
- if (!k->hasValue(KIT_IS_TEMPORARY) || path.isEmpty())
- return;
-
- QStringList projects = k->value(TEMPORARY_OF_PROJECTS, QStringList()).toStringList();
- if (projects.contains(path)) {
- projects.removeOne(path);
- m_ignoreUpdates = true;
- if (projects.isEmpty())
- ProjectExplorer::KitManager::deregisterKit(k);
- else
- k->setValue(TEMPORARY_OF_PROJECTS, projects);
- m_ignoreUpdates = false;
- }
-}
-
-void TargetSetupPage::setProFilePath(const QString &path)
-{
- m_proFilePath = path;
- if (!m_proFilePath.isEmpty())
- m_ui->headerLabel->setText(tr("Qt Creator can use the following kits for project <b>%1</b>:",
- "%1: Project name").arg(QFileInfo(m_proFilePath).baseName()));
- m_ui->headerLabel->setVisible(!m_proFilePath.isEmpty());
-
- if (m_widgets.isEmpty())
- return;
-
- reset();
- setupWidgets();
-}
-
-void TargetSetupPage::setNoteText(const QString &text)
-{
- m_ui->descriptionLabel->setText(text);
- m_ui->descriptionLabel->setVisible(!text.isEmpty());
-}
-
-void TargetSetupPage::showOptionsHint(bool show)
-{
- m_forceOptionHint = show;
- updateVisibility();
-}
-
-void TargetSetupPage::import(const Utils::FileName &path)
-{
- import(path, false);
-}
-
-void TargetSetupPage::import(const Utils::FileName &path, const bool silent)
-{
- QFileInfo fi = path.toFileInfo();
- if (!fi.exists() && !fi.isDir())
- return;
-
- QStringList makefiles = QDir(path.toString()).entryList(QStringList(QLatin1String("Makefile*")));
-
- BaseQtVersion *version = 0;
- bool temporaryVersion = false;
- bool found = false;
-
- foreach (const QString &file, makefiles) {
- // find interesting makefiles
- QString makefile = path.toString() + QLatin1Char('/') + file;
- Utils::FileName qmakeBinary = QtVersionManager::findQMakeBinaryFromMakefile(makefile);
- QFileInfo fi = qmakeBinary.toFileInfo();
- Utils::FileName canonicalQmakeBinary = Utils::FileName::fromString(fi.canonicalFilePath());
- if (canonicalQmakeBinary.isEmpty())
- continue;
- if (QtVersionManager::makefileIsFor(makefile, m_proFilePath) != QtVersionManager::SameProject)
- continue;
-
- // Find version:
- foreach (BaseQtVersion *v, QtVersionManager::versions()) {
- QFileInfo vfi = v->qmakeCommand().toFileInfo();
- Utils::FileName current = Utils::FileName::fromString(vfi.canonicalFilePath());
- if (current == canonicalQmakeBinary) {
- version = v;
- break;
- }
- }
-
- // Create a new version if not found:
- if (!version) {
- // Do not use the canonical path here...
- version = QtVersionFactory::createQtVersionFromQMakePath(qmakeBinary);
- if (!version)
- continue;
-
- QtVersionManager::addVersion(version);
- temporaryVersion = true;
- }
-
- // find qmake arguments and mkspec
- QPair<BaseQtVersion::QmakeBuildConfigs, QString> makefileBuildConfig =
- QtVersionManager::scanMakeFile(makefile, version->defaultBuildConfig());
-
- QString additionalArguments = makefileBuildConfig.second;
- Utils::FileName parsedSpec =
- Qt4BuildConfiguration::extractSpecFromArguments(&additionalArguments, path.toString(), version);
- Utils::FileName versionSpec = version->mkspec();
- if (parsedSpec.isEmpty() || parsedSpec == Utils::FileName::fromString(QLatin1String("default")))
- parsedSpec = versionSpec;
-
- QString specArgument;
- // Compare mkspecs and add to additional arguments
- if (parsedSpec != versionSpec)
- specArgument = QLatin1String("-spec ") + Utils::QtcProcess::quoteArg(parsedSpec.toUserOutput());
- Utils::QtcProcess::addArgs(&specArgument, additionalArguments);
-
- // Find profiles (can be more than one, e.g. (Linux-)Desktop and embedded linux):
- QList<ProjectExplorer::Kit *> kitList;
- foreach (ProjectExplorer::Kit *k, ProjectExplorer::KitManager::kits()) {
- BaseQtVersion *profileVersion = QtKitInformation::qtVersion(k);
- Utils::FileName profileSpec = QmakeKitInformation::mkspec(k);
- ProjectExplorer::ToolChain *tc = ProjectExplorer::ToolChainKitInformation::toolChain(k);
- if (profileSpec.isEmpty() && profileVersion)
- profileSpec = profileVersion->mkspecFor(tc);
-
- if (profileVersion == version
- && profileSpec == parsedSpec)
- kitList.append(k);
- }
- if (kitList.isEmpty())
- kitList.append(createTemporaryKit(version, temporaryVersion, parsedSpec));
-
- foreach (ProjectExplorer::Kit *k, kitList) {
- addProject(k, m_proFilePath);
-
- // Create widget:
- Qt4TargetSetupWidget *widget = m_widgets.value(k->id(), 0);
- if (!widget)
- addWidget(k);
- widget = m_widgets.value(k->id(), 0);
- if (!widget)
- continue;
-
- // create info:
- BuildConfigurationInfo info = BuildConfigurationInfo(makefileBuildConfig.first,
- specArgument,
- path.toString(),
- true,
- file);
-
- widget->addBuildConfigurationInfo(info, true);
- widget->setKitSelected(true);
- found = true;
- }
- }
-
- updateVisibility();
-
- if (!found && !silent)
- QMessageBox::critical(this,
- tr("No Build Found"),
- tr("No build found in %1 matching project %2.").arg(path.toUserOutput()).arg(m_proFilePath));
-}
-
-void TargetSetupPage::handleQtUpdate(const QList<int> &add, const QList<int> &rm, const QList<int> &mod)
-{
- Q_UNUSED(add);
- // Update kit to no longer claim a Qt version is temporary once it is modified/removed.
- foreach (ProjectExplorer::Kit *k, ProjectExplorer::KitManager::kits()) {
- if (!k->hasValue(QT_IS_TEMPORARY))
- continue;
- int qtVersion = k->value(QT_IS_TEMPORARY, -1).toInt();
- if (rm.contains(qtVersion) || mod.contains(qtVersion))
- makeQtPersistent(k);
- }
-}
-
-void TargetSetupPage::setupImports()
-{
- if (!m_importSearch || m_proFilePath.isEmpty())
- return;
-
- QFileInfo pfi(m_proFilePath);
- const QString prefix = pfi.baseName();
- QStringList toImport;
- toImport << pfi.absolutePath();
-
- QList<ProjectExplorer::Kit *> kitList = ProjectExplorer::KitManager::kits();
- foreach (ProjectExplorer::Kit *k, kitList) {
- QFileInfo fi(Qt4Project::shadowBuildDirectory(m_proFilePath, k, QString()));
- const QString baseDir = fi.absolutePath();
-
- foreach (const QString &dir, QDir(baseDir).entryList()) {
- const QString path = baseDir + QLatin1Char('/') + dir;
- if (dir.startsWith(prefix) && !toImport.contains(path))
- toImport << path;
-
- }
- }
- foreach (const QString &path, toImport)
- import(Utils::FileName::fromString(path), true);
-}
-
-void TargetSetupPage::handleKitAddition(ProjectExplorer::Kit *k)
-{
- if (m_ignoreUpdates)
- return;
-
- Q_ASSERT(!m_widgets.contains(k->id()));
- addWidget(k);
- updateVisibility();
-}
-
-void TargetSetupPage::handleKitRemoval(ProjectExplorer::Kit *k)
-{
- BaseQtVersion *version = QtVersionManager::version(k->value(QT_IS_TEMPORARY, -1).toInt());
- if (version)
- QtVersionManager::removeVersion(version);
-
- if (m_ignoreUpdates)
- return;
-
- removeWidget(k);
- updateVisibility();
-}
-
-void TargetSetupPage::handleKitUpdate(ProjectExplorer::Kit *k)
-{
- if (m_ignoreUpdates)
- return;
-
- cleanKit(k);
- Qt4TargetSetupWidget *widget = m_widgets.value(k->id());
-
- bool acceptable = true;
- if (m_requiredMatcher && !m_requiredMatcher->matches(k))
- acceptable = false;
-
- if (widget && !acceptable)
- removeWidget(k);
- else if (!widget && acceptable)
- addWidget(k);
-
- updateVisibility();
-}
-
-void TargetSetupPage::selectAtLeastOneKit()
-{
- bool atLeastOneKitSelected = false;
- foreach (Qt4TargetSetupWidget *w, m_widgets.values()) {
- if (w->isKitSelected()) {
- atLeastOneKitSelected = true;
- break;
- }
- }
-
- if (!atLeastOneKitSelected) {
- Qt4TargetSetupWidget *widget = m_firstWidget;
- ProjectExplorer::Kit *defaultKit = ProjectExplorer::KitManager::defaultKit();
- if (defaultKit)
- widget = m_widgets.value(defaultKit->id(), m_firstWidget);
- if (widget)
- widget->setKitSelected(true);
- m_firstWidget = 0;
- }
- emit completeChanged(); // Is this necessary?
-}
-
-void TargetSetupPage::updateVisibility()
-{
- // Always show the widgets, the import widget always makes sense to show.
- m_ui->scrollAreaWidget->setVisible(m_baseLayout == m_ui->scrollArea->widget()->layout());
- m_ui->centralWidget->setVisible(m_baseLayout == m_ui->centralWidget->layout());
-
- bool hasKits = !m_widgets.isEmpty();
- m_ui->noValidKitLabel->setVisible(!hasKits);
- m_ui->optionHintLabel->setVisible(m_forceOptionHint || !hasKits);
-
- emit completeChanged();
-}
-
-void TargetSetupPage::openOptions()
-{
- Core::ICore::showOptionsDialog(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY,
- ProjectExplorer::Constants::KITS_SETTINGS_PAGE_ID,
- this);
-}
-
-void TargetSetupPage::removeWidget(ProjectExplorer::Kit *k)
-{
- Qt4TargetSetupWidget *widget = m_widgets.value(k->id());
- if (!widget)
- return;
- if (widget == m_firstWidget)
- m_firstWidget = 0;
- widget->deleteLater();
- m_widgets.remove(k->id());
-}
-
-Qt4TargetSetupWidget *TargetSetupPage::addWidget(ProjectExplorer::Kit *k)
-{
- if (m_requiredMatcher && !m_requiredMatcher->matches(k))
- return 0;
-
- QList<BuildConfigurationInfo> infoList = Qt4BuildConfigurationFactory::availableBuildConfigurations(k, m_proFilePath);
- Qt4TargetSetupWidget *widget = infoList.isEmpty() ? 0 : new Qt4TargetSetupWidget(k, m_proFilePath, infoList);
- if (!widget)
- return 0;
-
- m_baseLayout->removeWidget(m_importWidget);
- m_baseLayout->removeItem(m_spacer);
-
- widget->setKitSelected(m_preferredMatcher && m_preferredMatcher->matches(k));
- m_widgets.insert(k->id(), widget);
- m_baseLayout->addWidget(widget);
-
- m_baseLayout->addWidget(m_importWidget);
- m_baseLayout->addItem(m_spacer);
-
- connect(widget, SIGNAL(selectedToggled()),
- this, SIGNAL(completeChanged()));
-
- if (!m_firstWidget)
- m_firstWidget = widget;
-
- return widget;
-}
-
-class KitBuildInfo
-{
-public:
- KitBuildInfo(ProjectExplorer::Kit *k, const QList<BuildConfigurationInfo> &il) :
- kit(k), infoList(il)
- { }
-
- ProjectExplorer::Kit *kit;
- QList<BuildConfigurationInfo> infoList;
-};
-
-bool TargetSetupPage::setupProject(Qt4ProjectManager::Qt4Project *project)
-{
- QList<KitBuildInfo> toRegister;
- foreach (Qt4TargetSetupWidget *widget, m_widgets.values()) {
- if (!widget->isKitSelected())
- continue;
-
- ProjectExplorer::Kit *k = widget->kit();
- cleanKit(k);
- toRegister.append(KitBuildInfo(k, widget->selectedBuildConfigurationInfoList()));
- widget->clearKit();
- }
- reset();
-
- // only register kits after we are done cleaning up
- foreach (const KitBuildInfo &data, toRegister)
- project->addTarget(project->createTarget(data.kit, data.infoList));
-
- // Select active target
- // a) Simulator target
- // b) Desktop target
- // c) the first target
- ProjectExplorer::Target *activeTarget = 0;
- QList<ProjectExplorer::Target *> targets = project->targets();
- int activeTargetPriority = 0;
- foreach (ProjectExplorer::Target *t, targets) {
- BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(t->kit());
- if (t->kit() == ProjectExplorer::KitManager::defaultKit()) {
- activeTarget = t;
- activeTargetPriority = 3;
- } else if (activeTargetPriority < 2 && version && version->type() == QLatin1String(QtSupport::Constants::SIMULATORQT)) {
- activeTarget = t;
- activeTargetPriority = 2;
- } else if (activeTargetPriority < 1 && version && version->type() == QLatin1String(QtSupport::Constants::DESKTOPQT)) {
- activeTarget = t;
- activeTargetPriority = 1;
- }
- }
- if (!activeTarget && !targets.isEmpty())
- activeTarget = targets.first();
- if (activeTarget)
- project->setActiveTarget(activeTarget);
-
- return true;
-}
-
-void TargetSetupPage::setUseScrollArea(bool b)
-{
- m_baseLayout = b ? m_ui->scrollArea->widget()->layout() : m_ui->centralWidget->layout();
- m_ui->scrollAreaWidget->setVisible(b);
- m_ui->centralWidget->setVisible(!b);
-}
-
-} // namespace Qt4ProjectManager