diff options
author | Eike Ziller <eike.ziller@digia.com> | 2014-02-20 11:05:25 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@digia.com> | 2014-02-20 12:53:08 +0100 |
commit | 1abcf0fb0e9069f96238d623bbc8987fa634b27a (patch) | |
tree | 7f6159baff72a5c228dbb218f8ff6fb98069be92 | |
parent | 919cad1fa7c2cc171bd4808bd92dc9b55d50258c (diff) | |
download | qt-creator-1abcf0fb0e9069f96238d623bbc8987fa634b27a.tar.gz |
Android: Add configure Android item to "Add kit" menu in projects mode
Change-Id: Icab9df511d0cab349aaeb9420ae437af36836733
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
-rw-r--r-- | src/plugins/android/androidpotentialkit.cpp | 25 | ||||
-rw-r--r-- | src/plugins/android/androidpotentialkit.h | 3 | ||||
-rw-r--r-- | src/plugins/projectexplorer/ipotentialkit.h | 3 | ||||
-rw-r--r-- | src/plugins/projectexplorer/targetsettingspanel.cpp | 34 | ||||
-rw-r--r-- | src/plugins/projectexplorer/targetsetuppage.cpp | 4 |
5 files changed, 53 insertions, 16 deletions
diff --git a/src/plugins/android/androidpotentialkit.cpp b/src/plugins/android/androidpotentialkit.cpp index e03330d8ec..b028d0a2d9 100644 --- a/src/plugins/android/androidpotentialkit.cpp +++ b/src/plugins/android/androidpotentialkit.cpp @@ -46,15 +46,33 @@ using namespace Android; using namespace Android::Internal; +QString AndroidPotentialKit::displayName() const +{ + return tr("Configure Android..."); +} + +void Android::Internal::AndroidPotentialKit::executeFromMenu() +{ + Core::ICore::showOptionsDialog(Constants::ANDROID_SETTINGS_CATEGORY, + Constants::ANDROID_SETTINGS_ID); +} + QWidget *AndroidPotentialKit::createWidget(QWidget *parent) const { + if (!isEnabled()) + return 0; + return new AndroidPotentialKitWidget(parent); +} + +bool AndroidPotentialKit::isEnabled() const +{ QList<ProjectExplorer::Kit *> kits = ProjectExplorer::KitManager::kits(); foreach (ProjectExplorer::Kit *kit, kits) { Core::Id deviceId = ProjectExplorer::DeviceKitInformation::deviceId(kit); if (kit->isAutoDetected() && deviceId == Core::Id(Constants::ANDROID_DEVICE_ID) && !kit->isSdkProvided()) { - return 0; + return false; } } @@ -66,10 +84,7 @@ QWidget *AndroidPotentialKit::createWidget(QWidget *parent) const } } - if (!found) // no android qt - return 0; - - return new AndroidPotentialKitWidget(parent); + return found; } AndroidPotentialKitWidget::AndroidPotentialKitWidget(QWidget *parent) diff --git a/src/plugins/android/androidpotentialkit.h b/src/plugins/android/androidpotentialkit.h index fe6239e6cc..bfe78ddeaf 100644 --- a/src/plugins/android/androidpotentialkit.h +++ b/src/plugins/android/androidpotentialkit.h @@ -40,7 +40,10 @@ class AndroidPotentialKit : public ProjectExplorer::IPotentialKit { Q_OBJECT public: + QString displayName() const; + void executeFromMenu(); QWidget *createWidget(QWidget *parent) const; + bool isEnabled() const; }; class AndroidPotentialKitWidget : public Utils::DetailsWidget diff --git a/src/plugins/projectexplorer/ipotentialkit.h b/src/plugins/projectexplorer/ipotentialkit.h index 3d9c409288..0ba9b61f9c 100644 --- a/src/plugins/projectexplorer/ipotentialkit.h +++ b/src/plugins/projectexplorer/ipotentialkit.h @@ -40,7 +40,10 @@ class PROJECTEXPLORER_EXPORT IPotentialKit : public QObject Q_OBJECT public: virtual ~IPotentialKit(); + virtual QString displayName() const = 0; + virtual void executeFromMenu() = 0; virtual QWidget *createWidget(QWidget *parent) const = 0; + virtual bool isEnabled() const = 0; }; } diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp index d3835b69fb..a5eeadc61d 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.cpp +++ b/src/plugins/projectexplorer/targetsettingspanel.cpp @@ -31,6 +31,7 @@ #include "buildinfo.h" #include "buildsettingspropertiespage.h" +#include "ipotentialkit.h" #include "kitoptionspage.h" #include "project.h" #include "projectimporter.h" @@ -303,13 +304,20 @@ void TargetSettingsPanelWidget::duplicateActionTriggered(QAction *action) void TargetSettingsPanelWidget::addActionTriggered(QAction *action) { - Kit *k = KitManager::find(action->data().value<Core::Id>()); - QTC_ASSERT(!m_project->target(k), return); + const QVariant data = action->data(); + if (data.canConvert<Core::Id>()) { // id of kit + Kit *k = KitManager::find(action->data().value<Core::Id>()); + QTC_ASSERT(!m_project->target(k), return); - Target *target = m_project->createTarget(k); - if (!target) - return; - m_project->addTarget(target); + Target *target = m_project->createTarget(k); + if (!target) + return; + m_project->addTarget(target); + } else { + QTC_ASSERT(data.canConvert<IPotentialKit *>(), return); + IPotentialKit *potentialKit = data.value<IPotentialKit *>(); + potentialKit->executeFromMenu(); + } } Target *TargetSettingsPanelWidget::cloneTarget(Target *sourceTarget, Kit *k) @@ -562,10 +570,19 @@ void TargetSettingsPanelWidget::updateTargetButtons() m_addMenu->clear(); m_targetMenu->clear(); - if (m_importAction) { + if (m_importAction) m_addMenu->addAction(m_importAction); - m_addMenu->addSeparator(); + const QList<IPotentialKit *> potentialKits + = ExtensionSystem::PluginManager::getObjects<IPotentialKit>(); + foreach (IPotentialKit *potentialKit, potentialKits) { + if (!potentialKit->isEnabled()) + continue; + QAction *action = new QAction(potentialKit->displayName(), m_addMenu); + action->setData(QVariant::fromValue(potentialKit)); + m_addMenu->addAction(action); } + if (!m_addMenu->actions().isEmpty()) + m_addMenu->addSeparator(); m_changeMenu = m_targetMenu->addMenu(tr("Change Kit")); m_duplicateMenu = m_targetMenu->addMenu(tr("Copy to Kit")); @@ -589,7 +606,6 @@ void TargetSettingsPanelWidget::updateTargetButtons() createAction(k, m_changeMenu); createAction(k, m_duplicateMenu); } - if (m_changeMenu->actions().isEmpty()) m_changeMenu->setEnabled(false); if (m_duplicateMenu->actions().isEmpty()) diff --git a/src/plugins/projectexplorer/targetsetuppage.cpp b/src/plugins/projectexplorer/targetsetuppage.cpp index 2d2db6873a..1c528efdfa 100644 --- a/src/plugins/projectexplorer/targetsetuppage.cpp +++ b/src/plugins/projectexplorer/targetsetuppage.cpp @@ -165,8 +165,8 @@ TargetSetupPage::TargetSetupPage(QWidget *parent) : QList<IPotentialKit *> potentialKits = ExtensionSystem::PluginManager::instance()->getObjects<IPotentialKit>(); foreach (IPotentialKit *pk, potentialKits) - if (QWidget *w = pk->createWidget(this)) - m_potentialWidgets.append(w); + if (pk->isEnabled()) + m_potentialWidgets.append(pk->createWidget(this)); setUseScrollArea(true); |