From e4351cd32492f1c616cb6d587e752a2e201ee34e Mon Sep 17 00:00:00 2001 From: Kai Koehne <kai.koehne@nokia.com> Date: Fri, 24 Jun 2011 09:49:34 +0200 Subject: [PATCH] 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> --- .../qt-desktop/qt4desktoptargetfactory.cpp | 12 +++--------- .../qt-desktop/qt4desktoptargetfactory.h | 3 +-- .../qt-desktop/qt4simulatortargetfactory.cpp | 12 +++--------- .../qt-desktop/qt4simulatortargetfactory.h | 3 +-- .../qt-s60/qt4symbiantargetfactory.cpp | 11 ++--------- .../qt-s60/qt4symbiantargetfactory.h | 4 ++-- .../qt4projectmanager/qt4basetargetfactory.h | 3 +-- .../qt4projectmanagerconstants.h | 5 +++++ src/plugins/qt4projectmanager/qt4target.cpp | 14 +++++++++----- .../wizards/abstractmobileappwizard.cpp | 2 +- .../wizards/mobileappwizard.cpp | 1 - .../qt4projectmanager/wizards/qtwizard.cpp | 6 +++++- .../wizards/targetsetuppage.cpp | 17 +++++++++++------ .../wizards/targetsetuppage.h | 7 +++---- .../remotelinux/qt4maemotargetfactory.cpp | 19 +++++++------------ .../remotelinux/qt4maemotargetfactory.h | 3 +-- 16 files changed, 55 insertions(+), 67 deletions(-) diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp index 48de0fff08f..c708daa32fe 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp +++ b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp @@ -156,16 +156,10 @@ ProjectExplorer::Target *Qt4DesktopTargetFactory::create(ProjectExplorer::Projec return create(parent, id, infos); } -bool Qt4DesktopTargetFactory::isMobileTarget(const QString &id) +QSet<QString> Qt4DesktopTargetFactory::targetFeatures(const QString & /*id*/) const { - Q_UNUSED(id) - return false; -} - -bool Qt4DesktopTargetFactory::supportsShadowBuilds(const QString &id) -{ - Q_UNUSED(id); - return true; + return QSet<QString>() << Constants::DESKTOP_TARGETFEATURE_ID + << Constants::SHADOWBUILD_TARGETFEATURE_ID; } ProjectExplorer::Target *Qt4DesktopTargetFactory::create(ProjectExplorer::Project *parent, const QString &id, const QList<BuildConfigurationInfo> &infos) diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.h b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.h index 416cb0d7191..55e784c3e0e 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.h +++ b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.h @@ -56,8 +56,7 @@ public: Qt4TargetSetupWidget *createTargetSetupWidget(const QString &id, const QString &proFilePath, const QtSupport::QtVersionNumber &minimumQtVersion, bool importEnabled, QList<BuildConfigurationInfo> importInfos); QString buildNameForId(const QString &id) const; - bool isMobileTarget(const QString &id); - bool supportsShadowBuilds(const QString &id); + QSet<QString> targetFeatures(const QString &id) const; ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id); ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id, const QList<BuildConfigurationInfo> &infos); diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp index 474a2eb0457..fe5178444df 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp +++ b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp @@ -123,16 +123,10 @@ ProjectExplorer::Target *Qt4SimulatorTargetFactory::restore(ProjectExplorer::Pro return 0; } -bool Qt4SimulatorTargetFactory::isMobileTarget(const QString &id) +QSet<QString> Qt4SimulatorTargetFactory::targetFeatures(const QString & /*id*/) const { - Q_UNUSED(id) - return true; -} - -bool Qt4SimulatorTargetFactory::supportsShadowBuilds(const QString &id) -{ - Q_UNUSED(id); - return true; + return QSet<QString>() << Constants::MOBILE_TARGETFEATURE_ID + << Constants::SHADOWBUILD_TARGETFEATURE_ID; } ProjectExplorer::Target *Qt4SimulatorTargetFactory::create(ProjectExplorer::Project *parent, const QString &id) diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.h b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.h index b0860e417e6..dadac9b0617 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.h +++ b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.h @@ -56,10 +56,9 @@ public: ProjectExplorer::Target *restore(ProjectExplorer::Project *parent, const QVariantMap &map); bool supportsTargetId(const QString &id) const; + QSet<QString> targetFeatures(const QString &id) const; - bool isMobileTarget(const QString &id); 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, const QList<BuildConfigurationInfo> &infos); }; diff --git a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp index cfd029d4f6c..5e86f249d05 100644 --- a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp @@ -175,16 +175,9 @@ QList<BuildConfigurationInfo> Qt4SymbianTargetFactory::availableBuildConfigurati return tmp; } -bool Qt4SymbianTargetFactory::isMobileTarget(const QString &id) +QSet<QString> Qt4SymbianTargetFactory::targetFeatures(const QString & /*id*/) const { - Q_UNUSED(id) - return true; -} - -bool Qt4SymbianTargetFactory::supportsShadowBuilds(const QString &id) -{ - Q_UNUSED(id); - return false; + return QSet<QString>() << Constants::MOBILE_TARGETFEATURE_ID; } ProjectExplorer::Target *Qt4SymbianTargetFactory::create(ProjectExplorer::Project *parent, const QString &id) diff --git a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.h b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.h index 74145f5e9a5..92617456a38 100644 --- a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.h +++ b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.h @@ -60,8 +60,8 @@ public: QString shadowBuildDirectory(const QString &profilePath, const QString &id, const QString &suffix); QList<ProjectExplorer::Task> reportIssues(const QString &proFile); 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 diff --git a/src/plugins/qt4projectmanager/qt4basetargetfactory.h b/src/plugins/qt4projectmanager/qt4basetargetfactory.h index b8f813959d7..5a0301e7680 100644 --- a/src/plugins/qt4projectmanager/qt4basetargetfactory.h +++ b/src/plugins/qt4projectmanager/qt4basetargetfactory.h @@ -75,8 +75,7 @@ public: /// only used in the TargetSetupPage virtual QIcon iconForId(const QString &id) const = 0; - virtual bool isMobileTarget(const QString &id) = 0; - virtual bool supportsShadowBuilds(const QString &id) = 0; + virtual QSet<QString> targetFeatures(const QString &id) const = 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; diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h b/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h index 7d22f278516..23ae39e175a 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h +++ b/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h @@ -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 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: const char * const GCCE_TOOLCHAIN_ID = "Qt4ProjectManager.ToolChain.GCCE"; const char * const MAEMO_TOOLCHAIN_ID = "Qt4ProjectManager.ToolChain.Maemo"; diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp index 5cd90d4613e..28d523a3bce 100644 --- a/src/plugins/qt4projectmanager/qt4target.cpp +++ b/src/plugins/qt4projectmanager/qt4target.cpp @@ -38,6 +38,7 @@ #include "qt4project.h" #include "qt4basetargetfactory.h" #include "qt4projectconfigwidget.h" +#include "qt4projectmanagerconstants.h" #include <coreplugin/icore.h> #include <extensionsystem/pluginmanager.h> @@ -91,11 +92,14 @@ Qt4TargetSetupWidget *Qt4BaseTargetFactory::createTargetSetupWidget(const QStrin QList<BuildConfigurationInfo> infos = this->availableBuildConfigurations(id, proFilePath, number); if (infos.isEmpty()) return 0; - Qt4DefaultTargetSetupWidget *widget = new Qt4DefaultTargetSetupWidget(this, id, proFilePath, infos, - number, importEnabled && supportsShadowBuilds(id), - importInfos, - supportsShadowBuilds(id) ? Qt4DefaultTargetSetupWidget::ENABLE : - Qt4DefaultTargetSetupWidget::DISABLE); + const bool supportsShadowBuilds + = targetFeatures(id).contains(Constants::SHADOWBUILD_TARGETFEATURE_ID); + Qt4DefaultTargetSetupWidget *widget + = new Qt4DefaultTargetSetupWidget(this, id, proFilePath, infos, number, + importEnabled && supportsShadowBuilds, importInfos, + (supportsShadowBuilds + ? Qt4DefaultTargetSetupWidget::ENABLE + : Qt4DefaultTargetSetupWidget::DISABLE)); return widget; } diff --git a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp index a79d6c1962f..5bdf18bcdc3 100644 --- a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp @@ -64,7 +64,7 @@ AbstractMobileAppWizardDialog::AbstractMobileAppWizardDialog(QWidget *parent, co , m_harmattanItem(0) { m_targetsPage = new TargetSetupPage; - m_targetsPage->setPreferMobile(true); + m_targetsPage->setPreferredFeatures(QSet<QString>() << Constants::MOBILE_TARGETFEATURE_ID); m_targetsPage->setMinimumQtVersion(minimumQtVersionNumber); resize(900, 450); diff --git a/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp b/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp index 53330761c7e..fb1f00801c5 100644 --- a/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp @@ -105,7 +105,6 @@ Core::BaseFileWizardParameters MobileAppWizard::parameters() AbstractMobileAppWizardDialog *MobileAppWizard::createWizardDialogInternal(QWidget *parent) const { m_d->wizardDialog = new MobileAppWizardDialog(parent); - m_d->wizardDialog->targetsPage()->setPreferMobile(true); return m_d->wizardDialog; } diff --git a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp index 03f45d14b48..d9f65bc98f9 100644 --- a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp @@ -244,7 +244,11 @@ int BaseQt4ProjectWizardDialog::addTargetSetupPage(QSet<QString> targets, bool m m_targets = targets; 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) setPage(id, m_targetSetupPage); diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp index accac9f0442..8711555a168 100644 --- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp +++ b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp @@ -53,7 +53,6 @@ using namespace Qt4ProjectManager; TargetSetupPage::TargetSetupPage(QWidget *parent) : QWizardPage(parent), - m_preferMobile(false), m_importSearch(false), m_spacer(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding)), m_ui(new Internal::Ui::TargetSetupPage) @@ -98,9 +97,9 @@ bool TargetSetupPage::isComplete() const 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) @@ -124,9 +123,15 @@ void TargetSetupPage::setupWidgets() Qt4TargetSetupWidget *widget = factory->createTargetSetupWidget(id, m_proFilePath, m_minimumQtVersionNumber, m_importSearch, infos); if (widget) { - bool selectTarget = (m_preferMobile == factory->isMobileTarget(id) && m_importInfos.isEmpty()) - || !infos.isEmpty(); - widget->setTargetSelected(selectTarget) ; + bool selectTarget = false; + if (!m_importInfos.isEmpty()) { + selectTarget = !infos.isEmpty(); + } else { + if (!m_preferredFeatures.isEmpty()) { + selectTarget = factory->targetFeatures(id).contains(m_preferredFeatures); + } + } + widget->setTargetSelected(selectTarget); atLeastOneTargetSelected |= selectTarget; m_widgets.insert(id, widget); m_factories.insert(widget, factory); diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.h b/src/plugins/qt4projectmanager/wizards/targetsetuppage.h index 16823fbc711..a33177ce6e9 100644 --- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.h +++ b/src/plugins/qt4projectmanager/wizards/targetsetuppage.h @@ -72,10 +72,9 @@ public: /// Initializes the TargetSetupPage /// \note The import information is gathered in initializePage(), make sure that the right proFilePath is set before void initializePage(); - /// Changes the default set of checked targets. For mobile Symbian, maemo5, simulator is checked - /// For non mobile, destkop is checked + /// Changes the default set of checked targets. /// call this before \sa initializePage() - void setPreferMobile(bool mobile); + void setPreferredFeatures(const QSet<QString> &featureIds); /// Sets the minimum qt version /// calls this before \sa initializePage() void setMinimumQtVersion(const QtSupport::QtVersionNumber &number); @@ -96,7 +95,7 @@ private: void setupWidgets(); void deleteWidgets(); - bool m_preferMobile; + QSet<QString> m_preferredFeatures; bool m_importSearch; QtSupport::QtVersionNumber m_minimumQtVersionNumber; QString m_proFilePath; diff --git a/src/plugins/remotelinux/qt4maemotargetfactory.cpp b/src/plugins/remotelinux/qt4maemotargetfactory.cpp index 969ca8fd33c..b8661d1c992 100644 --- a/src/plugins/remotelinux/qt4maemotargetfactory.cpp +++ b/src/plugins/remotelinux/qt4maemotargetfactory.cpp @@ -158,20 +158,15 @@ QString Qt4MaemoTargetFactory::shadowBuildDirectory(const QString &profilePath, #endif } -bool Qt4MaemoTargetFactory::isMobileTarget(const QString &id) +QSet<QString> Qt4MaemoTargetFactory::targetFeatures(const QString & /*id*/) const { - Q_UNUSED(id) - return true; -} - -bool Qt4MaemoTargetFactory::supportsShadowBuilds(const QString &id) -{ - Q_UNUSED(id); -#ifdef Q_OS_WIN - return false; -#else - return true; + QSet<QString> features; + features << Qt4ProjectManager::Constants::MOBILE_TARGETFEATURE_ID; +#ifndef Q_OS_WIN + features << Qt4ProjectManager::Constants::SHADOWBUILD_TARGETFEATURE_ID; #endif + + return features; } ProjectExplorer::Target *Qt4MaemoTargetFactory::create(ProjectExplorer::Project *parent, const QString &id) diff --git a/src/plugins/remotelinux/qt4maemotargetfactory.h b/src/plugins/remotelinux/qt4maemotargetfactory.h index 05b49f152bf..592131d5039 100644 --- a/src/plugins/remotelinux/qt4maemotargetfactory.h +++ b/src/plugins/remotelinux/qt4maemotargetfactory.h @@ -62,8 +62,7 @@ public: ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id, const QList<Qt4ProjectManager::BuildConfigurationInfo> &infos); - bool isMobileTarget(const QString &id); - bool supportsShadowBuilds(const QString &id); + QSet<QString> targetFeatures(const QString &id) const; }; } // namespace Internal -- GitLab