Qt4BaseTargetFactory: Expose list of generic 'features' for a target

Replace the isMobileTarget, supportsShadowBuilds methods by a
generic targetFeatures method which exposes features as a set of
strings.

Change-Id: I2ac99ff5a82280316071efaa140cd7ea35b21374
Reviewed-on: http://codereview.qt.nokia.com/692
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
This commit is contained in:
Kai Koehne
2011-06-24 09:49:34 +02:00
parent 37a887cb06
commit e4351cd324
16 changed files with 55 additions and 67 deletions

View File

@@ -156,16 +156,10 @@ ProjectExplorer::Target *Qt4DesktopTargetFactory::create(ProjectExplorer::Projec
return create(parent, id, infos); return create(parent, id, infos);
} }
bool Qt4DesktopTargetFactory::isMobileTarget(const QString &id) QSet<QString> Qt4DesktopTargetFactory::targetFeatures(const QString & /*id*/) const
{ {
Q_UNUSED(id) return QSet<QString>() << Constants::DESKTOP_TARGETFEATURE_ID
return false; << Constants::SHADOWBUILD_TARGETFEATURE_ID;
}
bool Qt4DesktopTargetFactory::supportsShadowBuilds(const QString &id)
{
Q_UNUSED(id);
return true;
} }
ProjectExplorer::Target *Qt4DesktopTargetFactory::create(ProjectExplorer::Project *parent, const QString &id, const QList<BuildConfigurationInfo> &infos) ProjectExplorer::Target *Qt4DesktopTargetFactory::create(ProjectExplorer::Project *parent, const QString &id, const QList<BuildConfigurationInfo> &infos)

View File

@@ -56,8 +56,7 @@ public:
Qt4TargetSetupWidget *createTargetSetupWidget(const QString &id, const QString &proFilePath, const QtSupport::QtVersionNumber &minimumQtVersion, bool importEnabled, QList<BuildConfigurationInfo> importInfos); Qt4TargetSetupWidget *createTargetSetupWidget(const QString &id, const QString &proFilePath, const QtSupport::QtVersionNumber &minimumQtVersion, bool importEnabled, QList<BuildConfigurationInfo> importInfos);
QString buildNameForId(const QString &id) const; QString buildNameForId(const QString &id) const;
bool isMobileTarget(const QString &id); QSet<QString> targetFeatures(const QString &id) const;
bool supportsShadowBuilds(const QString &id);
ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id); ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id);
ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id, const QList<BuildConfigurationInfo> &infos); ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id, const QList<BuildConfigurationInfo> &infos);

View File

@@ -123,16 +123,10 @@ ProjectExplorer::Target *Qt4SimulatorTargetFactory::restore(ProjectExplorer::Pro
return 0; return 0;
} }
bool Qt4SimulatorTargetFactory::isMobileTarget(const QString &id) QSet<QString> Qt4SimulatorTargetFactory::targetFeatures(const QString & /*id*/) const
{ {
Q_UNUSED(id) return QSet<QString>() << Constants::MOBILE_TARGETFEATURE_ID
return true; << Constants::SHADOWBUILD_TARGETFEATURE_ID;
}
bool Qt4SimulatorTargetFactory::supportsShadowBuilds(const QString &id)
{
Q_UNUSED(id);
return true;
} }
ProjectExplorer::Target *Qt4SimulatorTargetFactory::create(ProjectExplorer::Project *parent, const QString &id) ProjectExplorer::Target *Qt4SimulatorTargetFactory::create(ProjectExplorer::Project *parent, const QString &id)

View File

@@ -56,10 +56,9 @@ public:
ProjectExplorer::Target *restore(ProjectExplorer::Project *parent, const QVariantMap &map); ProjectExplorer::Target *restore(ProjectExplorer::Project *parent, const QVariantMap &map);
bool supportsTargetId(const QString &id) const; bool supportsTargetId(const QString &id) const;
QSet<QString> targetFeatures(const QString &id) const;
bool isMobileTarget(const QString &id);
QString buildNameForId(const QString &id) const; QString buildNameForId(const QString &id) const;
bool supportsShadowBuilds(const QString &id);
ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id); ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id);
ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id, const QList<BuildConfigurationInfo> &infos); ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id, const QList<BuildConfigurationInfo> &infos);
}; };

View File

@@ -175,16 +175,9 @@ QList<BuildConfigurationInfo> Qt4SymbianTargetFactory::availableBuildConfigurati
return tmp; return tmp;
} }
bool Qt4SymbianTargetFactory::isMobileTarget(const QString &id) QSet<QString> Qt4SymbianTargetFactory::targetFeatures(const QString & /*id*/) const
{ {
Q_UNUSED(id) return QSet<QString>() << Constants::MOBILE_TARGETFEATURE_ID;
return true;
}
bool Qt4SymbianTargetFactory::supportsShadowBuilds(const QString &id)
{
Q_UNUSED(id);
return false;
} }
ProjectExplorer::Target *Qt4SymbianTargetFactory::create(ProjectExplorer::Project *parent, const QString &id) ProjectExplorer::Target *Qt4SymbianTargetFactory::create(ProjectExplorer::Project *parent, const QString &id)

View File

@@ -60,8 +60,8 @@ public:
QString shadowBuildDirectory(const QString &profilePath, const QString &id, const QString &suffix); QString shadowBuildDirectory(const QString &profilePath, const QString &id, const QString &suffix);
QList<ProjectExplorer::Task> reportIssues(const QString &proFile); QList<ProjectExplorer::Task> reportIssues(const QString &proFile);
QList<BuildConfigurationInfo> availableBuildConfigurations(const QString &id, const QString &proFilePath, const QtSupport::QtVersionNumber &minimumQtVersion); QList<BuildConfigurationInfo> availableBuildConfigurations(const QString &id, const QString &proFilePath, const QtSupport::QtVersionNumber &minimumQtVersion);
bool isMobileTarget(const QString &id);
bool supportsShadowBuilds(const QString &id); QSet<QString> targetFeatures(const QString &id) const;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -75,8 +75,7 @@ public:
/// only used in the TargetSetupPage /// only used in the TargetSetupPage
virtual QIcon iconForId(const QString &id) const = 0; virtual QIcon iconForId(const QString &id) const = 0;
virtual bool isMobileTarget(const QString &id) = 0; virtual QSet<QString> targetFeatures(const QString &id) const = 0;
virtual bool supportsShadowBuilds(const QString &id) = 0;
virtual ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id) = 0; virtual ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id) = 0;
virtual ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id, const QList<BuildConfigurationInfo> &infos) = 0; virtual ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id, const QList<BuildConfigurationInfo> &infos) = 0;

View File

@@ -92,6 +92,11 @@ const char * const HARMATTAN_DEVICE_TARGET_ID = "Qt4ProjectManager.Target.Harmat
const char * const MEEGO_DEVICE_TARGET_ID = "Qt4ProjectManager.Target.MeegoDeviceTarget"; const char * const MEEGO_DEVICE_TARGET_ID = "Qt4ProjectManager.Target.MeegoDeviceTarget";
const char * const QT_SIMULATOR_TARGET_ID = "Qt4ProjectManager.Target.QtSimulatorTarget"; const char * const QT_SIMULATOR_TARGET_ID = "Qt4ProjectManager.Target.QtSimulatorTarget";
// Target Features
const char * const MOBILE_TARGETFEATURE_ID = "Qt4ProjectManager.TargetFeature.Mobile";
const char * const DESKTOP_TARGETFEATURE_ID = "Qt4ProjectManager.TargetFeature.Desktop";
const char * const SHADOWBUILD_TARGETFEATURE_ID = "Qt4ProjectManager.TargetFeature.ShadowBuild";
// Tool chains: // Tool chains:
const char * const GCCE_TOOLCHAIN_ID = "Qt4ProjectManager.ToolChain.GCCE"; const char * const GCCE_TOOLCHAIN_ID = "Qt4ProjectManager.ToolChain.GCCE";
const char * const MAEMO_TOOLCHAIN_ID = "Qt4ProjectManager.ToolChain.Maemo"; const char * const MAEMO_TOOLCHAIN_ID = "Qt4ProjectManager.ToolChain.Maemo";

View File

@@ -38,6 +38,7 @@
#include "qt4project.h" #include "qt4project.h"
#include "qt4basetargetfactory.h" #include "qt4basetargetfactory.h"
#include "qt4projectconfigwidget.h" #include "qt4projectconfigwidget.h"
#include "qt4projectmanagerconstants.h"
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <extensionsystem/pluginmanager.h> #include <extensionsystem/pluginmanager.h>
@@ -91,11 +92,14 @@ Qt4TargetSetupWidget *Qt4BaseTargetFactory::createTargetSetupWidget(const QStrin
QList<BuildConfigurationInfo> infos = this->availableBuildConfigurations(id, proFilePath, number); QList<BuildConfigurationInfo> infos = this->availableBuildConfigurations(id, proFilePath, number);
if (infos.isEmpty()) if (infos.isEmpty())
return 0; return 0;
Qt4DefaultTargetSetupWidget *widget = new Qt4DefaultTargetSetupWidget(this, id, proFilePath, infos, const bool supportsShadowBuilds
number, importEnabled && supportsShadowBuilds(id), = targetFeatures(id).contains(Constants::SHADOWBUILD_TARGETFEATURE_ID);
importInfos, Qt4DefaultTargetSetupWidget *widget
supportsShadowBuilds(id) ? Qt4DefaultTargetSetupWidget::ENABLE : = new Qt4DefaultTargetSetupWidget(this, id, proFilePath, infos, number,
Qt4DefaultTargetSetupWidget::DISABLE); importEnabled && supportsShadowBuilds, importInfos,
(supportsShadowBuilds
? Qt4DefaultTargetSetupWidget::ENABLE
: Qt4DefaultTargetSetupWidget::DISABLE));
return widget; return widget;
} }

View File

@@ -64,7 +64,7 @@ AbstractMobileAppWizardDialog::AbstractMobileAppWizardDialog(QWidget *parent, co
, m_harmattanItem(0) , m_harmattanItem(0)
{ {
m_targetsPage = new TargetSetupPage; m_targetsPage = new TargetSetupPage;
m_targetsPage->setPreferMobile(true); m_targetsPage->setPreferredFeatures(QSet<QString>() << Constants::MOBILE_TARGETFEATURE_ID);
m_targetsPage->setMinimumQtVersion(minimumQtVersionNumber); m_targetsPage->setMinimumQtVersion(minimumQtVersionNumber);
resize(900, 450); resize(900, 450);

View File

@@ -105,7 +105,6 @@ Core::BaseFileWizardParameters MobileAppWizard::parameters()
AbstractMobileAppWizardDialog *MobileAppWizard::createWizardDialogInternal(QWidget *parent) const AbstractMobileAppWizardDialog *MobileAppWizard::createWizardDialogInternal(QWidget *parent) const
{ {
m_d->wizardDialog = new MobileAppWizardDialog(parent); m_d->wizardDialog = new MobileAppWizardDialog(parent);
m_d->wizardDialog->targetsPage()->setPreferMobile(true);
return m_d->wizardDialog; return m_d->wizardDialog;
} }

View File

@@ -244,7 +244,11 @@ int BaseQt4ProjectWizardDialog::addTargetSetupPage(QSet<QString> targets, bool m
m_targets = targets; m_targets = targets;
resize(900, 450); resize(900, 450);
m_targetSetupPage->setPreferMobile(mobile); if (mobile) {
m_targetSetupPage->setPreferredFeatures(QSet<QString>() << Constants::MOBILE_TARGETFEATURE_ID);
} else {
m_targetSetupPage->setPreferredFeatures(QSet<QString>() << Constants::DESKTOP_TARGETFEATURE_ID);
}
if (id >= 0) if (id >= 0)
setPage(id, m_targetSetupPage); setPage(id, m_targetSetupPage);

View File

@@ -53,7 +53,6 @@ using namespace Qt4ProjectManager;
TargetSetupPage::TargetSetupPage(QWidget *parent) : TargetSetupPage::TargetSetupPage(QWidget *parent) :
QWizardPage(parent), QWizardPage(parent),
m_preferMobile(false),
m_importSearch(false), m_importSearch(false),
m_spacer(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding)), m_spacer(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding)),
m_ui(new Internal::Ui::TargetSetupPage) m_ui(new Internal::Ui::TargetSetupPage)
@@ -98,9 +97,9 @@ bool TargetSetupPage::isComplete() const
return false; return false;
} }
void TargetSetupPage::setPreferMobile(bool mobile) void TargetSetupPage::setPreferredFeatures(const QSet<QString> &featureIds)
{ {
m_preferMobile = mobile; m_preferredFeatures = featureIds;
} }
void TargetSetupPage::setMinimumQtVersion(const QtSupport::QtVersionNumber &number) void TargetSetupPage::setMinimumQtVersion(const QtSupport::QtVersionNumber &number)
@@ -124,9 +123,15 @@ void TargetSetupPage::setupWidgets()
Qt4TargetSetupWidget *widget = Qt4TargetSetupWidget *widget =
factory->createTargetSetupWidget(id, m_proFilePath, m_minimumQtVersionNumber, m_importSearch, infos); factory->createTargetSetupWidget(id, m_proFilePath, m_minimumQtVersionNumber, m_importSearch, infos);
if (widget) { if (widget) {
bool selectTarget = (m_preferMobile == factory->isMobileTarget(id) && m_importInfos.isEmpty()) bool selectTarget = false;
|| !infos.isEmpty(); if (!m_importInfos.isEmpty()) {
widget->setTargetSelected(selectTarget) ; selectTarget = !infos.isEmpty();
} else {
if (!m_preferredFeatures.isEmpty()) {
selectTarget = factory->targetFeatures(id).contains(m_preferredFeatures);
}
}
widget->setTargetSelected(selectTarget);
atLeastOneTargetSelected |= selectTarget; atLeastOneTargetSelected |= selectTarget;
m_widgets.insert(id, widget); m_widgets.insert(id, widget);
m_factories.insert(widget, factory); m_factories.insert(widget, factory);

View File

@@ -72,10 +72,9 @@ public:
/// Initializes the TargetSetupPage /// Initializes the TargetSetupPage
/// \note The import information is gathered in initializePage(), make sure that the right proFilePath is set before /// \note The import information is gathered in initializePage(), make sure that the right proFilePath is set before
void initializePage(); void initializePage();
/// Changes the default set of checked targets. For mobile Symbian, maemo5, simulator is checked /// Changes the default set of checked targets.
/// For non mobile, destkop is checked
/// call this before \sa initializePage() /// call this before \sa initializePage()
void setPreferMobile(bool mobile); void setPreferredFeatures(const QSet<QString> &featureIds);
/// Sets the minimum qt version /// Sets the minimum qt version
/// calls this before \sa initializePage() /// calls this before \sa initializePage()
void setMinimumQtVersion(const QtSupport::QtVersionNumber &number); void setMinimumQtVersion(const QtSupport::QtVersionNumber &number);
@@ -96,7 +95,7 @@ private:
void setupWidgets(); void setupWidgets();
void deleteWidgets(); void deleteWidgets();
bool m_preferMobile; QSet<QString> m_preferredFeatures;
bool m_importSearch; bool m_importSearch;
QtSupport::QtVersionNumber m_minimumQtVersionNumber; QtSupport::QtVersionNumber m_minimumQtVersionNumber;
QString m_proFilePath; QString m_proFilePath;

View File

@@ -158,20 +158,15 @@ QString Qt4MaemoTargetFactory::shadowBuildDirectory(const QString &profilePath,
#endif #endif
} }
bool Qt4MaemoTargetFactory::isMobileTarget(const QString &id) QSet<QString> Qt4MaemoTargetFactory::targetFeatures(const QString & /*id*/) const
{ {
Q_UNUSED(id) QSet<QString> features;
return true; features << Qt4ProjectManager::Constants::MOBILE_TARGETFEATURE_ID;
} #ifndef Q_OS_WIN
features << Qt4ProjectManager::Constants::SHADOWBUILD_TARGETFEATURE_ID;
bool Qt4MaemoTargetFactory::supportsShadowBuilds(const QString &id)
{
Q_UNUSED(id);
#ifdef Q_OS_WIN
return false;
#else
return true;
#endif #endif
return features;
} }
ProjectExplorer::Target *Qt4MaemoTargetFactory::create(ProjectExplorer::Project *parent, const QString &id) ProjectExplorer::Target *Qt4MaemoTargetFactory::create(ProjectExplorer::Project *parent, const QString &id)

View File

@@ -62,8 +62,7 @@ public:
ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id, ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id,
const QList<Qt4ProjectManager::BuildConfigurationInfo> &infos); const QList<Qt4ProjectManager::BuildConfigurationInfo> &infos);
bool isMobileTarget(const QString &id); QSet<QString> targetFeatures(const QString &id) const;
bool supportsShadowBuilds(const QString &id);
}; };
} // namespace Internal } // namespace Internal