summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@digia.com>2014-02-20 11:05:25 +0100
committerEike Ziller <eike.ziller@digia.com>2014-02-20 12:53:08 +0100
commit1abcf0fb0e9069f96238d623bbc8987fa634b27a (patch)
tree7f6159baff72a5c228dbb218f8ff6fb98069be92
parent919cad1fa7c2cc171bd4808bd92dc9b55d50258c (diff)
downloadqt-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.cpp25
-rw-r--r--src/plugins/android/androidpotentialkit.h3
-rw-r--r--src/plugins/projectexplorer/ipotentialkit.h3
-rw-r--r--src/plugins/projectexplorer/targetsettingspanel.cpp34
-rw-r--r--src/plugins/projectexplorer/targetsetuppage.cpp4
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);