summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEl Mehdi Fekari <mfekari@blackberry.com>2014-02-13 11:16:45 +0100
committerMehdi Fekari <mfekari@blackberry.com>2014-02-19 10:28:58 +0100
commitaa8786fb2e9593572c301f2491bef4abb22c809d (patch)
tree57c3031aa5a50a5dd196ded1dddeb336b09ca0c0
parentb840a2436f38ee68615b0d4608c9538c357c60ab (diff)
downloadqt-creator-aa8786fb2e9593572c301f2491bef4abb22c809d.tar.gz
Qnx: Add BlackBerry runtime management support
Add support for managing user BlackBerry runtime configurations. This does not handle adding manual runtimes yet, but only detects runtimes from the NDK directories of the available API levels. The BlackBerry NDK should provide a better way to detect installed runtimes (e.g xml installation files) in order to improve the BlackBerry runtime managemnt in Qt Creator. Change-Id: I4f139d52352f903a27dfe4175d12b016b4ee25a9 Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com>
-rw-r--r--src/plugins/qnx/blackberryapilevelconfiguration.cpp (renamed from src/plugins/qnx/blackberryconfiguration.cpp)69
-rw-r--r--src/plugins/qnx/blackberryapilevelconfiguration.h (renamed from src/plugins/qnx/blackberryconfiguration.h)10
-rw-r--r--src/plugins/qnx/blackberrycertificate.cpp2
-rw-r--r--src/plugins/qnx/blackberryconfigurationmanager.cpp188
-rw-r--r--src/plugins/qnx/blackberryconfigurationmanager.h36
-rw-r--r--src/plugins/qnx/blackberrydeviceconfigurationwidget.cpp1
-rw-r--r--src/plugins/qnx/blackberrydeviceconfigurationwizardpages.cpp2
-rw-r--r--src/plugins/qnx/blackberrydeviceconnection.cpp1
-rw-r--r--src/plugins/qnx/blackberrydeviceconnectionmanager.cpp4
-rw-r--r--src/plugins/qnx/blackberryinstallwizardpages.cpp11
-rw-r--r--src/plugins/qnx/blackberrykeyswidget.h2
-rw-r--r--src/plugins/qnx/blackberryndkprocess.cpp1
-rw-r--r--src/plugins/qnx/blackberryndksettingspage.cpp10
-rw-r--r--src/plugins/qnx/blackberryndksettingswidget.cpp328
-rw-r--r--src/plugins/qnx/blackberryndksettingswidget.h34
-rw-r--r--src/plugins/qnx/blackberryndksettingswidget.ui57
-rw-r--r--src/plugins/qnx/blackberryruntimeconfiguration.cpp94
-rw-r--r--src/plugins/qnx/blackberryruntimeconfiguration.h60
-rw-r--r--src/plugins/qnx/blackberrysetupwizardpages.cpp344
-rw-r--r--src/plugins/qnx/blackberrysigningutils.cpp1
-rw-r--r--src/plugins/qnx/qnx.pro10
-rw-r--r--src/plugins/qnx/qnx.qbs6
-rw-r--r--src/plugins/qnx/qnxconstants.h5
-rw-r--r--src/plugins/qnx/qnxplugin.cpp52
-rw-r--r--src/plugins/qnx/qnxtoolchain.cpp5
25 files changed, 1012 insertions, 321 deletions
diff --git a/src/plugins/qnx/blackberryconfiguration.cpp b/src/plugins/qnx/blackberryapilevelconfiguration.cpp
index a8840b9d75..f2192aa5f2 100644
--- a/src/plugins/qnx/blackberryconfiguration.cpp
+++ b/src/plugins/qnx/blackberryapilevelconfiguration.cpp
@@ -29,11 +29,12 @@
**
****************************************************************************/
-#include "blackberryconfiguration.h"
+#include "blackberryapilevelconfiguration.h"
#include "blackberryconfigurationmanager.h"
#include "blackberryqtversion.h"
#include "qnxtoolchain.h"
+#include "qnxconstants.h"
#include <utils/qtcassert.h>
@@ -76,10 +77,10 @@ const QLatin1String NDKAutoDetectionSourceKey("NDKAutoDetectionSource");
const QLatin1String NDKAutoDetectedKey("NDKAutoDetectedKey");
#ifdef WITH_TESTS
-bool BlackBerryConfiguration::m_fakeConfig = false;
+bool BlackBerryApiLevelConfiguration::m_fakeConfig = false;
#endif
-BlackBerryConfiguration::BlackBerryConfiguration(const NdkInstallInformation &ndkInstallInfo)
+BlackBerryApiLevelConfiguration::BlackBerryApiLevelConfiguration(const NdkInstallInformation &ndkInstallInfo)
{
QString envFilePath = QnxUtils::envFilePath(ndkInstallInfo.path, ndkInstallInfo.version);
QTC_ASSERT(!envFilePath.isEmpty(), return);
@@ -96,7 +97,7 @@ BlackBerryConfiguration::BlackBerryConfiguration(const NdkInstallInformation &nd
ctor();
}
-BlackBerryConfiguration::BlackBerryConfiguration(const FileName &ndkEnvFile)
+BlackBerryApiLevelConfiguration::BlackBerryApiLevelConfiguration(const FileName &ndkEnvFile)
: m_autoDetectionSource(Utils::FileName())
{
QTC_ASSERT(!QFileInfo(ndkEnvFile.toString()).isDir(), return);
@@ -129,7 +130,7 @@ BlackBerryConfiguration::BlackBerryConfiguration(const FileName &ndkEnvFile)
ctor();
}
-BlackBerryConfiguration::BlackBerryConfiguration(const QVariantMap &data)
+BlackBerryApiLevelConfiguration::BlackBerryApiLevelConfiguration(const QVariantMap &data)
{
QString envFilePath = data.value(NDKEnvFileKey).toString();
QTC_ASSERT(!envFilePath.isEmpty(), return);
@@ -148,7 +149,7 @@ BlackBerryConfiguration::BlackBerryConfiguration(const QVariantMap &data)
ctor();
}
-void BlackBerryConfiguration::ctor()
+void BlackBerryApiLevelConfiguration::ctor()
{
FileName qmake4Path = QnxUtils::executableWithExtension(FileName::fromString(m_qnxHost + QLatin1String("/usr/bin/qmake")));
FileName qmake5Path = QnxUtils::executableWithExtension(FileName::fromString(m_qnxHost + QLatin1String("/usr/bin/qt5/qmake")));
@@ -172,42 +173,42 @@ void BlackBerryConfiguration::ctor()
m_simulatorDebugger = simulatorGdbPath;
}
-QString BlackBerryConfiguration::ndkPath() const
+QString BlackBerryApiLevelConfiguration::ndkPath() const
{
return m_ndkEnvFile.parentDir().toString();
}
-QString BlackBerryConfiguration::displayName() const
+QString BlackBerryApiLevelConfiguration::displayName() const
{
return m_displayName;
}
-QString BlackBerryConfiguration::targetName() const
+QString BlackBerryApiLevelConfiguration::targetName() const
{
return m_targetName;
}
-QString BlackBerryConfiguration::qnxHost() const
+QString BlackBerryApiLevelConfiguration::qnxHost() const
{
return m_qnxHost;
}
-BlackBerryVersionNumber BlackBerryConfiguration::version() const
+BlackBerryVersionNumber BlackBerryApiLevelConfiguration::version() const
{
return m_version;
}
-bool BlackBerryConfiguration::isAutoDetected() const
+bool BlackBerryApiLevelConfiguration::isAutoDetected() const
{
return !m_autoDetectionSource.isEmpty();
}
-Utils::FileName BlackBerryConfiguration::autoDetectionSource() const
+Utils::FileName BlackBerryApiLevelConfiguration::autoDetectionSource() const
{
return m_autoDetectionSource;
}
-bool BlackBerryConfiguration::isActive() const
+bool BlackBerryApiLevelConfiguration::isActive() const
{
foreach (Kit *kit, KitManager::kits()) {
if (kit->isAutoDetected() &&
@@ -218,10 +219,10 @@ bool BlackBerryConfiguration::isActive() const
return false;
}
-bool BlackBerryConfiguration::isValid() const
+bool BlackBerryApiLevelConfiguration::isValid() const
{
#ifdef WITH_TESTS
- if (BlackBerryConfiguration::fakeConfig())
+ if (BlackBerryApiLevelConfiguration::fakeConfig())
return true;
#endif
@@ -232,49 +233,51 @@ bool BlackBerryConfiguration::isValid() const
&& m_sysRoot.toFileInfo().exists());
}
-FileName BlackBerryConfiguration::ndkEnvFile() const
+FileName BlackBerryApiLevelConfiguration::ndkEnvFile() const
{
return m_ndkEnvFile;
}
-FileName BlackBerryConfiguration::qmake4BinaryFile() const
+FileName BlackBerryApiLevelConfiguration::qmake4BinaryFile() const
{
return m_qmake4BinaryFile;
}
-FileName BlackBerryConfiguration::qmake5BinaryFile() const
+FileName BlackBerryApiLevelConfiguration::qmake5BinaryFile() const
{
return m_qmake5BinaryFile;
}
-FileName BlackBerryConfiguration::gccCompiler() const
+FileName BlackBerryApiLevelConfiguration::gccCompiler() const
{
return m_gccCompiler;
}
-FileName BlackBerryConfiguration::deviceDebuger() const
+FileName BlackBerryApiLevelConfiguration::deviceDebuger() const
{
return m_deviceDebugger;
}
-FileName BlackBerryConfiguration::simulatorDebuger() const
+FileName BlackBerryApiLevelConfiguration::simulatorDebuger() const
{
return m_simulatorDebugger;
}
-FileName BlackBerryConfiguration::sysRoot() const
+FileName BlackBerryApiLevelConfiguration::sysRoot() const
{
return m_sysRoot;
}
-QList<Utils::EnvironmentItem> BlackBerryConfiguration::qnxEnv() const
+QList<Utils::EnvironmentItem> BlackBerryApiLevelConfiguration::qnxEnv() const
{
return m_qnxEnv;
}
-QVariantMap BlackBerryConfiguration::toMap() const
+QVariantMap BlackBerryApiLevelConfiguration::toMap() const
{
QVariantMap data;
+ data.insert(QLatin1String(Qnx::Constants::QNX_BB_KEY_CONFIGURATION_TYPE),
+ QLatin1String(Qnx::Constants::QNX_BB_APILEVEL_TYPE));
data.insert(QLatin1String(NDKEnvFileKey), m_ndkEnvFile.toString());
data.insert(QLatin1String(NDKDisplayNameKey), m_displayName);
data.insert(QLatin1String(NDKPathKey), ndkPath());
@@ -286,7 +289,7 @@ QVariantMap BlackBerryConfiguration::toMap() const
return data;
}
-QnxAbstractQtVersion *BlackBerryConfiguration::createQtVersion(
+QnxAbstractQtVersion *BlackBerryApiLevelConfiguration::createQtVersion(
const FileName &qmakePath, Qnx::QnxArchitecture arch, const QString &versionName)
{
QnxAbstractQtVersion *version = new BlackBerryQtVersion(
@@ -296,7 +299,7 @@ QnxAbstractQtVersion *BlackBerryConfiguration::createQtVersion(
return version;
}
-QnxToolChain *BlackBerryConfiguration::createToolChain(
+QnxToolChain *BlackBerryApiLevelConfiguration::createToolChain(
ProjectExplorer::Abi abi, const QString &versionName)
{
QnxToolChain* toolChain = new QnxToolChain(ToolChain::AutoDetection);
@@ -309,7 +312,7 @@ QnxToolChain *BlackBerryConfiguration::createToolChain(
return toolChain;
}
-QVariant BlackBerryConfiguration::createDebuggerItem(
+QVariant BlackBerryApiLevelConfiguration::createDebuggerItem(
QList<ProjectExplorer::Abi> abis, Qnx::QnxArchitecture arch, const QString &versionName)
{
Utils::FileName command = arch == X86 ? m_simulatorDebugger : m_deviceDebugger;
@@ -322,7 +325,7 @@ QVariant BlackBerryConfiguration::createDebuggerItem(
return DebuggerItemManager::registerDebugger(debugger);
}
-Kit *BlackBerryConfiguration::createKit(
+Kit *BlackBerryApiLevelConfiguration::createKit(
QnxAbstractQtVersion *version, QnxToolChain *toolChain, const QVariant &debuggerItemId)
{
Kit *kit = new Kit;
@@ -359,7 +362,7 @@ Kit *BlackBerryConfiguration::createKit(
return kit;
}
-bool BlackBerryConfiguration::activate()
+bool BlackBerryApiLevelConfiguration::activate()
{
if (!isValid()) {
if (!m_autoDetectionSource.isEmpty())
@@ -441,7 +444,7 @@ bool BlackBerryConfiguration::activate()
return true;
}
-void BlackBerryConfiguration::deactivate()
+void BlackBerryApiLevelConfiguration::deactivate()
{
foreach (Kit *kit, KitManager::kits()) {
if (kit->isAutoDetected() &&
@@ -464,12 +467,12 @@ void BlackBerryConfiguration::deactivate()
}
#ifdef WITH_TESTS
-void BlackBerryConfiguration::setFakeConfig(bool fakeConfig)
+void BlackBerryApiLevelConfiguration::setFakeConfig(bool fakeConfig)
{
m_fakeConfig = fakeConfig;
}
-bool BlackBerryConfiguration::fakeConfig()
+bool BlackBerryApiLevelConfiguration::fakeConfig()
{
return m_fakeConfig;
}
diff --git a/src/plugins/qnx/blackberryconfiguration.h b/src/plugins/qnx/blackberryapilevelconfiguration.h
index b5df8ebbae..c49dda17ee 100644
--- a/src/plugins/qnx/blackberryconfiguration.h
+++ b/src/plugins/qnx/blackberryapilevelconfiguration.h
@@ -54,13 +54,13 @@ namespace Internal {
class QnxAbstractQtVersion;
class QnxToolChain;
-class BlackBerryConfiguration
+class BlackBerryApiLevelConfiguration
{
- Q_DECLARE_TR_FUNCTIONS(Qnx::Internal::BlackBerryConfiguration)
+ Q_DECLARE_TR_FUNCTIONS(Qnx::Internal::BlackBerryApiLevelConfiguration)
public:
- BlackBerryConfiguration(const NdkInstallInformation &ndkInstallInfo);
- BlackBerryConfiguration(const Utils::FileName &ndkEnvFile);
- BlackBerryConfiguration(const QVariantMap &data);
+ BlackBerryApiLevelConfiguration(const NdkInstallInformation &ndkInstallInfo);
+ BlackBerryApiLevelConfiguration(const Utils::FileName &ndkEnvFile);
+ BlackBerryApiLevelConfiguration(const QVariantMap &data);
bool activate();
void deactivate();
QString ndkPath() const;
diff --git a/src/plugins/qnx/blackberrycertificate.cpp b/src/plugins/qnx/blackberrycertificate.cpp
index d101db9663..43cdca8be6 100644
--- a/src/plugins/qnx/blackberrycertificate.cpp
+++ b/src/plugins/qnx/blackberrycertificate.cpp
@@ -30,7 +30,7 @@
****************************************************************************/
#include "blackberrycertificate.h"
-#include "blackberryconfiguration.h"
+#include "blackberryapilevelconfiguration.h"
#include "blackberryconfigurationmanager.h"
#include "blackberryndkprocess.h"
diff --git a/src/plugins/qnx/blackberryconfigurationmanager.cpp b/src/plugins/qnx/blackberryconfigurationmanager.cpp
index 5270759271..5221d88e87 100644
--- a/src/plugins/qnx/blackberryconfigurationmanager.cpp
+++ b/src/plugins/qnx/blackberryconfigurationmanager.cpp
@@ -31,7 +31,8 @@
#include "blackberryconfigurationmanager.h"
#include "blackberrycertificate.h"
-#include "blackberryconfiguration.h"
+#include "blackberryapilevelconfiguration.h"
+#include "blackberryruntimeconfiguration.h"
#include "qnxtoolchain.h"
#include "qnxutils.h"
@@ -54,6 +55,7 @@
#include <QMessageBox>
#include <QFileInfo>
#include <QDebug>
+#include <QDir>
using namespace ProjectExplorer;
@@ -79,7 +81,7 @@ static Utils::FileName bbConfigSettingsFileName()
+ QLatin1String(Constants::QNX_BLACKBERRY_CONFIGS_FILENAME));
}
-static bool sortConfigurationsByVersion(const BlackBerryConfiguration *a, const BlackBerryConfiguration *b)
+template <class T> static bool sortConfigurationsByVersion(const T *a, const T *b)
{
return a->version() > b->version();
}
@@ -99,8 +101,17 @@ void BlackBerryConfigurationManager::saveConfigurations()
QVariantMap data;
data.insert(QLatin1String(BBConfigsFileVersionKey), 1);
int count = 0;
- foreach (BlackBerryConfiguration *config, m_configs) {
- QVariantMap tmp = config->toMap();
+ foreach (BlackBerryApiLevelConfiguration *apiLevel, m_apiLevels) {
+ QVariantMap tmp = apiLevel->toMap();
+ if (tmp.isEmpty())
+ continue;
+
+ data.insert(BBConfigDataKey + QString::number(count), tmp);
+ ++count;
+ }
+
+ foreach (BlackBerryRuntimeConfiguration *runtime, m_runtimes) {
+ QVariantMap tmp = runtime->toMap();
if (tmp.isEmpty())
continue;
@@ -110,8 +121,8 @@ void BlackBerryConfigurationManager::saveConfigurations()
data.insert(QLatin1String(BBConfigCountKey), count);
- const QString newestConfig = (newestConfigurationEnabled())
- ? NewestConfigurationValue : defaultConfiguration()->ndkEnvFile().toString();
+ const QString newestConfig = (newestApiLevelEnabled())
+ ? NewestConfigurationValue : defaultApiLevel()->ndkEnvFile().toString();
//save default configuration
data.insert(QLatin1String(DefaultConfigurationKey), newestConfig);
@@ -142,13 +153,19 @@ void BlackBerryConfigurationManager::restoreConfigurations()
continue;
const QVariantMap dMap = data.value(key).toMap();
-
- BlackBerryConfiguration *config = new BlackBerryConfiguration(dMap);
-
- insertByVersion(config);
-
- if (!useNewestConfiguration && (config->ndkEnvFile().toString() == ndkEnvFile))
- setDefaultConfiguration(config);
+ const QString configurationType =
+ dMap.value(QLatin1String(Constants::QNX_BB_KEY_CONFIGURATION_TYPE)).toString();
+ if (configurationType == QLatin1String(Constants::QNX_BB_RUNTIME_TYPE)) {
+ BlackBerryRuntimeConfiguration *runtime = new BlackBerryRuntimeConfiguration(dMap);
+ insertRuntimeByVersion(runtime);
+ } else if (configurationType == QLatin1String(Constants::QNX_BB_APILEVEL_TYPE)
+ || configurationType.isEmpty()) { // Backward compatibility
+ BlackBerryApiLevelConfiguration *apiLevel = new BlackBerryApiLevelConfiguration(dMap);
+ insertApiLevelByVersion(apiLevel);
+
+ if (!useNewestConfiguration && (apiLevel->ndkEnvFile().toString() == ndkEnvFile))
+ setDefaultConfiguration(apiLevel);
+ }
}
emit settingsChanged();
@@ -174,8 +191,9 @@ void BlackBerryConfigurationManager::loadManualConfigurations()
ndkEnvPath = QnxUtils::envFilePath(ndkPath);
}
- BlackBerryConfiguration *config = new BlackBerryConfiguration(Utils::FileName::fromString(ndkEnvPath));
- if (!addConfiguration(config))
+ BlackBerryApiLevelConfiguration *config =
+ new BlackBerryApiLevelConfiguration(Utils::FileName::fromString(ndkEnvPath));
+ if (!addApiLevel(config))
delete config;
settings->endGroup();
@@ -186,20 +204,36 @@ void BlackBerryConfigurationManager::loadManualConfigurations()
settings->endGroup();
}
-void BlackBerryConfigurationManager::loadAutoDetectedConfigurations()
+void BlackBerryConfigurationManager::loadAutoDetectedApiLevels()
{
foreach (const NdkInstallInformation &ndkInfo, QnxUtils::installedNdks()) {
- BlackBerryConfiguration *config = new BlackBerryConfiguration(ndkInfo);
- if (!addConfiguration(config)) {
+ BlackBerryApiLevelConfiguration *config = new BlackBerryApiLevelConfiguration(ndkInfo);
+ if (!addApiLevel(config)) {
delete config;
- continue;
}
}
}
-void BlackBerryConfigurationManager::setDefaultConfiguration(BlackBerryConfiguration *config)
+void BlackBerryConfigurationManager::loadAutoDetectedRuntimes()
+{
+ QRegExp regExp(QLatin1String("runtime_(\\d+)_(\\d+)_(\\d+)_(\\d+)"));
+ foreach (BlackBerryApiLevelConfiguration *apiLevel, m_apiLevels) {
+ QDir ndkDir(apiLevel->ndkPath());
+ foreach (const QFileInfo& fi, ndkDir.entryInfoList(QDir::Dirs)) {
+ if (regExp.exactMatch(fi.baseName())) {
+ BlackBerryRuntimeConfiguration *runtime =
+ new BlackBerryRuntimeConfiguration(fi.absoluteFilePath());
+ if (!addRuntime(runtime))
+ delete runtime;
+ }
+ }
+ }
+}
+
+void BlackBerryConfigurationManager::setDefaultConfiguration(
+ BlackBerryApiLevelConfiguration *config)
{
- if (config && !m_configs.contains(config)) {
+ if (config && !m_apiLevels.contains(config)) {
qWarning() << "BlackBerryConfigurationManager::setDefaultConfiguration -"
" configuration does not belong to this instance: "
<< config->ndkEnvFile().toString();
@@ -210,7 +244,7 @@ void BlackBerryConfigurationManager::setDefaultConfiguration(BlackBerryConfigura
emit settingsChanged();
}
-bool BlackBerryConfigurationManager::newestConfigurationEnabled() const
+bool BlackBerryConfigurationManager::newestApiLevelEnabled() const
{
return !m_defaultConfiguration;
}
@@ -227,7 +261,7 @@ void BlackBerryConfigurationManager::setKitsAutoDetectionSource()
(DeviceTypeKitInformation::deviceTypeId(kit) == Constants::QNX_BB_CATEGORY_ICON) &&
kit->autoDetectionSource().isEmpty()) {
QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(kit);
- foreach (BlackBerryConfiguration *config, m_configs) {
+ foreach (BlackBerryApiLevelConfiguration *config, m_apiLevels) {
if ((version &&
(version->qmakeCommand() == config->qmake4BinaryFile() || version->qmakeCommand() == config->qmake5BinaryFile()))
&& (SysRootKitInformation::sysRoot(kit) == config->sysRoot()))
@@ -237,17 +271,28 @@ void BlackBerryConfigurationManager::setKitsAutoDetectionSource()
}
}
-void BlackBerryConfigurationManager::insertByVersion(BlackBerryConfiguration *config)
+void BlackBerryConfigurationManager::insertApiLevelByVersion(
+ BlackBerryApiLevelConfiguration *apiLevel)
+{
+ QList<BlackBerryApiLevelConfiguration *>::iterator it =
+ qLowerBound(m_apiLevels.begin(), m_apiLevels.end(),
+ apiLevel, sortConfigurationsByVersion<BlackBerryApiLevelConfiguration>);
+ m_apiLevels.insert(it, apiLevel);
+}
+
+void BlackBerryConfigurationManager::insertRuntimeByVersion(
+ BlackBerryRuntimeConfiguration *runtime)
{
- QList<BlackBerryConfiguration *>::iterator it = qLowerBound(m_configs.begin(), m_configs.end(),
- config, &sortConfigurationsByVersion);
- m_configs.insert(it, config);
+ QList<BlackBerryRuntimeConfiguration *>::iterator it =
+ qLowerBound(m_runtimes.begin(), m_runtimes.end(),
+ runtime, sortConfigurationsByVersion<BlackBerryRuntimeConfiguration>);
+ m_runtimes.insert(it, runtime);
}
// Switch to QnxToolchain for exisintg configuration using GccToolChain
void BlackBerryConfigurationManager::checkToolChainConfiguration()
{
- foreach (BlackBerryConfiguration *config, m_configs) {
+ foreach (BlackBerryApiLevelConfiguration *config, m_apiLevels) {
foreach (ToolChain *tc, ToolChainManager::toolChains()) {
if (tc->compilerCommand() == config->gccCompiler()
&& !tc->id().startsWith(QLatin1String(Constants::QNX_TOOLCHAIN_ID))) {
@@ -262,9 +307,9 @@ void BlackBerryConfigurationManager::checkToolChainConfiguration()
}
}
-bool BlackBerryConfigurationManager::addConfiguration(BlackBerryConfiguration *config)
+bool BlackBerryConfigurationManager::addApiLevel(BlackBerryApiLevelConfiguration *config)
{
- foreach (BlackBerryConfiguration *c, m_configs) {
+ foreach (BlackBerryApiLevelConfiguration *c, m_apiLevels) {
if (config->ndkEnvFile() == c->ndkEnvFile()) {
if (!config->isAutoDetected())
QMessageBox::warning(Core::ICore::mainWindow(), tr("NDK Already Known"),
@@ -274,7 +319,7 @@ bool BlackBerryConfigurationManager::addConfiguration(BlackBerryConfiguration *c
}
if (config->isValid()) {
- insertByVersion(config);
+ insertApiLevelByVersion(config);
emit settingsChanged();
return true;
}
@@ -282,7 +327,7 @@ bool BlackBerryConfigurationManager::addConfiguration(BlackBerryConfiguration *c
return false;
}
-void BlackBerryConfigurationManager::removeConfiguration(BlackBerryConfiguration *config)
+void BlackBerryConfigurationManager::removeApiLevel(BlackBerryApiLevelConfiguration *config)
{
if (!config)
return;
@@ -290,9 +335,9 @@ void BlackBerryConfigurationManager::removeConfiguration(BlackBerryConfiguration
if (config->isActive())
config->deactivate();
- m_configs.removeAt(m_configs.indexOf(config));
+ m_apiLevels.removeAll(config);
- if (defaultConfiguration() == config)
+ if (defaultApiLevel() == config)
setDefaultConfiguration(0);
delete config;
@@ -300,15 +345,40 @@ void BlackBerryConfigurationManager::removeConfiguration(BlackBerryConfiguration
emit settingsChanged();
}
-QList<BlackBerryConfiguration *> BlackBerryConfigurationManager::configurations() const
+bool BlackBerryConfigurationManager::addRuntime(BlackBerryRuntimeConfiguration *runtime)
{
- return m_configs;
+ foreach (BlackBerryRuntimeConfiguration *rt, m_runtimes) {
+ if (runtime->path() == rt->path())
+ return false;
+ }
+
+ insertRuntimeByVersion(runtime);
+ return true;
+}
+
+void BlackBerryConfigurationManager::removeRuntime(BlackBerryRuntimeConfiguration *runtime)
+{
+ if (!runtime)
+ return;
+
+ m_runtimes.removeAll(runtime);
+ delete runtime;
+}
+
+QList<BlackBerryApiLevelConfiguration *> BlackBerryConfigurationManager::apiLevels() const
+{
+ return m_apiLevels;
}
-QList<BlackBerryConfiguration *> BlackBerryConfigurationManager::manualConfigurations() const
+QList<BlackBerryRuntimeConfiguration *> BlackBerryConfigurationManager::runtimes() const
{
- QList<BlackBerryConfiguration*> manuals;
- foreach (BlackBerryConfiguration *config, m_configs) {
+ return m_runtimes;
+}
+
+QList<BlackBerryApiLevelConfiguration *> BlackBerryConfigurationManager::manualApiLevels() const
+{
+ QList<BlackBerryApiLevelConfiguration*> manuals;
+ foreach (BlackBerryApiLevelConfiguration *config, m_apiLevels) {
if (!config->isAutoDetected())
manuals << config;
}
@@ -316,10 +386,10 @@ QList<BlackBerryConfiguration *> BlackBerryConfigurationManager::manualConfigura
return manuals;
}
-QList<BlackBerryConfiguration *> BlackBerryConfigurationManager::activeConfigurations() const
+QList<BlackBerryApiLevelConfiguration *> BlackBerryConfigurationManager::activeApiLevels() const
{
- QList<BlackBerryConfiguration*> actives;
- foreach (BlackBerryConfiguration *config, m_configs) {
+ QList<BlackBerryApiLevelConfiguration*> actives;
+ foreach (BlackBerryApiLevelConfiguration *config, m_apiLevels) {
if (config->isActive())
actives << config;
}
@@ -327,12 +397,13 @@ QList<BlackBerryConfiguration *> BlackBerryConfigurationManager::activeConfigura
return actives;
}
-BlackBerryConfiguration *BlackBerryConfigurationManager::configurationFromEnvFile(const Utils::FileName &envFile) const
+BlackBerryApiLevelConfiguration *BlackBerryConfigurationManager::apiLevelFromEnvFile(
+ const Utils::FileName &envFile) const
{
if (envFile.isEmpty())
return 0;
- foreach (BlackBerryConfiguration *config, m_configs) {
+ foreach (BlackBerryApiLevelConfiguration *config, m_apiLevels) {
if (config->ndkEnvFile() == envFile)
return config;
}
@@ -340,21 +411,32 @@ BlackBerryConfiguration *BlackBerryConfigurationManager::configurationFromEnvFil
return 0;
}
-BlackBerryConfiguration *BlackBerryConfigurationManager::defaultConfiguration() const
+BlackBerryRuntimeConfiguration *BlackBerryConfigurationManager::runtimeFromFilePath(
+ const QString &path)
+{
+ foreach (BlackBerryRuntimeConfiguration *runtime, m_runtimes) {
+ if (runtime->path() == path)
+ return runtime;
+ }
+
+ return 0;
+}
+
+BlackBerryApiLevelConfiguration *BlackBerryConfigurationManager::defaultApiLevel() const
{
- if (m_configs.isEmpty())
+ if (m_apiLevels.isEmpty())
return 0;
// !m_defaultConfiguration means use newest configuration
if (!m_defaultConfiguration)
- return m_configs.first();
+ return m_apiLevels.first();
return m_defaultConfiguration;
}
QList<Utils::EnvironmentItem> BlackBerryConfigurationManager::defaultConfigurationEnv() const
{
- const BlackBerryConfiguration *config = defaultConfiguration();
+ const BlackBerryApiLevelConfiguration *config = defaultApiLevel();
if (config)
return config->qnxEnv();
@@ -371,13 +453,14 @@ void BlackBerryConfigurationManager::loadSettings()
restoreConfigurations();
// For backward compatibility
loadManualConfigurations();
- loadAutoDetectedConfigurations();
+ loadAutoDetectedApiLevels();
+ loadAutoDetectedRuntimes();
checkToolChainConfiguration();
// If no target was/is activated, activate one since it's needed by
// device connection and CSK code.
- if (activeConfigurations().isEmpty() && !m_configs.isEmpty())
- m_configs.first()->activate();
+ if (activeApiLevels().isEmpty() && !m_apiLevels.isEmpty())
+ m_apiLevels.first()->activate();
emit settingsLoaded();
emit settingsChanged();
@@ -397,7 +480,8 @@ BlackBerryConfigurationManager &BlackBerryConfigurationManager::instance()
BlackBerryConfigurationManager::~BlackBerryConfigurationManager()
{
- qDeleteAll(m_configs);
+ qDeleteAll(m_apiLevels);
+ qDeleteAll(m_runtimes);
delete m_writer;
}
diff --git a/src/plugins/qnx/blackberryconfigurationmanager.h b/src/plugins/qnx/blackberryconfigurationmanager.h
index 88e9f8fdf8..cbbef821e7 100644
--- a/src/plugins/qnx/blackberryconfigurationmanager.h
+++ b/src/plugins/qnx/blackberryconfigurationmanager.h
@@ -43,7 +43,8 @@ namespace Utils { class PersistentSettingsWriter; }
namespace Qnx {
namespace Internal {
-class BlackBerryConfiguration;
+class BlackBerryApiLevelConfiguration;
+class BlackBerryRuntimeConfiguration;
class BlackBerryConfigurationManager : public QObject
{
@@ -51,13 +52,17 @@ class BlackBerryConfigurationManager : public QObject
public:
static BlackBerryConfigurationManager &instance();
~BlackBerryConfigurationManager();
- bool addConfiguration(BlackBerryConfiguration *config);
- void removeConfiguration(BlackBerryConfiguration *config);
- QList<BlackBerryConfiguration*> configurations() const;
- QList<BlackBerryConfiguration*> manualConfigurations() const;
- QList<BlackBerryConfiguration *> activeConfigurations() const;
- BlackBerryConfiguration *configurationFromEnvFile(const Utils::FileName &envFile) const;
- BlackBerryConfiguration *defaultConfiguration() const;
+ bool addApiLevel(BlackBerryApiLevelConfiguration *config);
+ void removeApiLevel(BlackBerryApiLevelConfiguration *config);
+ bool addRuntime(BlackBerryRuntimeConfiguration *runtime);
+ void removeRuntime(BlackBerryRuntimeConfiguration *runtime);
+ QList<BlackBerryApiLevelConfiguration*> apiLevels() const;
+ QList<BlackBerryRuntimeConfiguration *> runtimes() const;
+ QList<BlackBerryApiLevelConfiguration*> manualApiLevels() const;
+ QList<BlackBerryApiLevelConfiguration *> activeApiLevels() const;
+ BlackBerryApiLevelConfiguration *apiLevelFromEnvFile(const Utils::FileName &envFile) const;
+ BlackBerryRuntimeConfiguration *runtimeFromFilePath(const QString &path);
+ BlackBerryApiLevelConfiguration *defaultApiLevel() const;
QString barsignerCskPath() const;
QString idTokenPath() const;
@@ -68,10 +73,11 @@ public:
// returns the environment for the default API level
QList<Utils::EnvironmentItem> defaultConfigurationEnv() const;
- void loadAutoDetectedConfigurations();
- void setDefaultConfiguration(BlackBerryConfiguration *config);
+ void loadAutoDetectedApiLevels();
+ void loadAutoDetectedRuntimes();
+ void setDefaultConfiguration(BlackBerryApiLevelConfiguration *config);
- bool newestConfigurationEnabled() const;
+ bool newestApiLevelEnabled() const;
void emitSettingsChanged();
@@ -86,9 +92,10 @@ signals:
private:
BlackBerryConfigurationManager(QObject *parent = 0);
- QList<BlackBerryConfiguration*> m_configs;
+ QList<BlackBerryApiLevelConfiguration*> m_apiLevels;
+ QList<BlackBerryRuntimeConfiguration*> m_runtimes;
- BlackBerryConfiguration *m_defaultConfiguration;
+ BlackBerryApiLevelConfiguration *m_defaultConfiguration;
Utils::PersistentSettingsWriter *m_writer;
@@ -98,7 +105,8 @@ private:
void loadManualConfigurations();
void setKitsAutoDetectionSource();
- void insertByVersion(BlackBerryConfiguration* config);
+ void insertApiLevelByVersion(BlackBerryApiLevelConfiguration* apiLevel);
+ void insertRuntimeByVersion(BlackBerryRuntimeConfiguration* runtime);
};
} // namespace Internal
diff --git a/src/plugins/qnx/blackberrydeviceconfigurationwidget.cpp b/src/plugins/qnx/blackberrydeviceconfigurationwidget.cpp
index 4112c40a51..a988e7a81d 100644
--- a/src/plugins/qnx/blackberrydeviceconfigurationwidget.cpp
+++ b/src/plugins/qnx/blackberrydeviceconfigurationwidget.cpp
@@ -33,7 +33,6 @@
#include "blackberrydebugtokenuploader.h"
#include "blackberrydebugtokenrequestdialog.h"
#include "ui_blackberrydeviceconfigurationwidget.h"
-#include "blackberryconfiguration.h"
#include "blackberrydeviceconnectionmanager.h"
#include "blackberrysigningutils.h"
#include "blackberrydebugtokenreader.h"
diff --git a/src/plugins/qnx/blackberrydeviceconfigurationwizardpages.cpp b/src/plugins/qnx/blackberrydeviceconfigurationwizardpages.cpp
index 82571651fc..09c229391f 100644
--- a/src/plugins/qnx/blackberrydeviceconfigurationwizardpages.cpp
+++ b/src/plugins/qnx/blackberrydeviceconfigurationwizardpages.cpp
@@ -30,7 +30,6 @@
****************************************************************************/
#include "blackberrydeviceconfigurationwizardpages.h"
-#include "blackberryconfiguration.h"
#include "blackberrydebugtokenrequestdialog.h"
#include "blackberrydebugtokenreader.h"
#include "blackberrysshkeysgenerator.h"
@@ -38,7 +37,6 @@
#include "ui_blackberrydeviceconfigurationwizardsetuppage.h"
#include "ui_blackberrydeviceconfigurationwizardquerypage.h"
#include "ui_blackberrydeviceconfigurationwizardconfigpage.h"
-#include "blackberryconfiguration.h"
#include "blackberrydeviceconnectionmanager.h"
#include "blackberrysigningutils.h"
#include "qnxutils.h"
diff --git a/src/plugins/qnx/blackberrydeviceconnection.cpp b/src/plugins/qnx/blackberrydeviceconnection.cpp
index 4aa1a20806..3d9b6fe214 100644
--- a/src/plugins/qnx/blackberrydeviceconnection.cpp
+++ b/src/plugins/qnx/blackberrydeviceconnection.cpp
@@ -31,7 +31,6 @@
#include "blackberrydeviceconnection.h"
-#include "blackberryconfiguration.h"
#include "blackberryconfigurationmanager.h"
#include "qnxutils.h"
diff --git a/src/plugins/qnx/blackberrydeviceconnectionmanager.cpp b/src/plugins/qnx/blackberrydeviceconnectionmanager.cpp
index eb9411f113..80d76b1eba 100644
--- a/src/plugins/qnx/blackberrydeviceconnectionmanager.cpp
+++ b/src/plugins/qnx/blackberrydeviceconnectionmanager.cpp
@@ -114,7 +114,7 @@ void BlackBerryDeviceConnectionManager::connectDevice(Core::Id deviceId)
// BlackBerry Device connection needs the Qnx environments to be set
// in order to find the Connect.jar package.
// Let's delay the device connections at startup till the Qnx settings are loaded.
- if (BlackBerryConfigurationManager::instance().configurations().isEmpty()) {
+ if (BlackBerryConfigurationManager::instance().apiLevels().isEmpty()) {
m_pendingDeviceConnections << device;
connect(&BlackBerryConfigurationManager::instance(), SIGNAL(settingsLoaded()),
this, SLOT(processPendingDeviceConnections()), Qt::UniqueConnection);
@@ -308,7 +308,7 @@ void BlackBerryDeviceConnectionManager::handleProcessOutput(const QString &outpu
void BlackBerryDeviceConnectionManager::processPendingDeviceConnections()
{
if (m_pendingDeviceConnections.isEmpty()
- || BlackBerryConfigurationManager::instance().configurations().isEmpty())
+ || BlackBerryConfigurationManager::instance().apiLevels().isEmpty())
return;
foreach (ProjectExplorer::IDevice::ConstPtr device, m_pendingDeviceConnections)
diff --git a/src/plugins/qnx/blackberryinstallwizardpages.cpp b/src/plugins/qnx/blackberryinstallwizardpages.cpp
index 7e36686400..29b1e26ec5 100644
--- a/src/plugins/qnx/blackberryinstallwizardpages.cpp
+++ b/src/plugins/qnx/blackberryinstallwizardpages.cpp
@@ -31,7 +31,7 @@
#include "blackberryinstallwizardpages.h"
#include "blackberryconfigurationmanager.h"
-#include "blackberryconfiguration.h"
+#include "blackberryapilevelconfiguration.h"
#include "ui_blackberryinstallwizardoptionpage.h"
#include "ui_blackberryinstallwizardtargetpage.h"
@@ -482,7 +482,7 @@ void BlackBerryInstallWizardProcessPage::processTarget()
// deactivate target if activated before uninstalling
if (m_data.mode == BlackBerryInstallerDataHandler::UninstallMode) {
- foreach (BlackBerryConfiguration *config, BlackBerryConfigurationManager::instance().configurations()) {
+ foreach (BlackBerryApiLevelConfiguration *config, BlackBerryConfigurationManager::instance().apiLevels()) {
if (m_data.target.contains((config->targetName())) && config->isActive()) {
config->deactivate();
break;
@@ -519,11 +519,12 @@ void BlackBerryInstallWizardFinalPage::initializePage()
if (m_data.mode == BlackBerryInstallerDataHandler::ManuallMode) {
BlackBerryConfigurationManager &configManager = BlackBerryConfigurationManager::instance();
- BlackBerryConfiguration *config = configManager.configurationFromEnvFile(Utils::FileName::fromString(m_data.ndkPath));
+ BlackBerryApiLevelConfiguration *config =
+ configManager.apiLevelFromEnvFile(Utils::FileName::fromString(m_data.ndkPath));
if (!config) {
- config = new BlackBerryConfiguration(Utils::FileName::fromString(m_data.ndkPath));
- if (!configManager.addConfiguration(config)) {
+ config = new BlackBerryApiLevelConfiguration(Utils::FileName::fromString(m_data.ndkPath));
+ if (!configManager.addApiLevel(config)) {
delete config;
// TODO: more explicit error message!
label->setText(tr("An error has occurred while adding target from:\n %1").arg(m_data.ndkPath));
diff --git a/src/plugins/qnx/blackberrykeyswidget.h b/src/plugins/qnx/blackberrykeyswidget.h
index b9e3e8d0a4..46f876b197 100644
--- a/src/plugins/qnx/blackberrykeyswidget.h
+++ b/src/plugins/qnx/blackberrykeyswidget.h
@@ -32,8 +32,6 @@
#ifndef BLACKBERRYKEYSWIDGET_H_H
#define BLACKBERRYKEYSWIDGET_H_H
-#include "blackberryconfiguration.h"
-
#include <QWidget>
#include <QString>
diff --git a/src/plugins/qnx/blackberryndkprocess.cpp b/src/plugins/qnx/blackberryndkprocess.cpp
index f47431e629..058d05be13 100644
--- a/src/plugins/qnx/blackberryndkprocess.cpp
+++ b/src/plugins/qnx/blackberryndkprocess.cpp
@@ -30,7 +30,6 @@
****************************************************************************/
#include "blackberryndkprocess.h"
-#include "blackberryconfiguration.h"
#include "blackberryconfigurationmanager.h"
#include <utils/hostosinfo.h>
diff --git a/src/plugins/qnx/blackberryndksettingspage.cpp b/src/plugins/qnx/blackberryndksettingspage.cpp
index 778931e598..b02e87d29e 100644
--- a/src/plugins/qnx/blackberryndksettingspage.cpp
+++ b/src/plugins/qnx/blackberryndksettingspage.cpp
@@ -32,7 +32,7 @@
#include "blackberryndksettingspage.h"
#include "blackberryndksettingswidget.h"
#include "blackberryconfigurationmanager.h"
-#include "blackberryconfiguration.h"
+#include "blackberryapilevelconfiguration.h"
#include "qnxconstants.h"
#include <projectexplorer/projectexplorerconstants.h>
@@ -46,7 +46,7 @@ BlackBerryNDKSettingsPage::BlackBerryNDKSettingsPage(QObject *parent) :
Core::IOptionsPage(parent)
{
setId(Core::Id(Constants::QNX_BB_NDK_SETTINGS_ID));
- setDisplayName(tr("API Level"));
+ setDisplayName(tr("API Levels and Runtimes"));
setCategory(Constants::QNX_BB_CATEGORY);
setDisplayCategory(QCoreApplication::translate("BlackBerry",
Constants::QNX_BB_CATEGORY_TR));
@@ -62,19 +62,19 @@ QWidget *BlackBerryNDKSettingsPage::widget()
void BlackBerryNDKSettingsPage::apply()
{
- foreach (BlackBerryConfiguration* config, m_widget->activatedTargets()) {
+ foreach (BlackBerryApiLevelConfiguration* config, m_widget->activatedApiLevels()) {
if (!config->isActive())
config->activate();
}
- foreach (BlackBerryConfiguration* config, m_widget->deactivatedTargets()) {
+ foreach (BlackBerryApiLevelConfiguration* config, m_widget->deactivatedApiLevels()) {
if (config->isActive())
config->deactivate();
}
BlackBerryConfigurationManager &manager = BlackBerryConfigurationManager::instance();
- manager.setDefaultConfiguration(m_widget->defaultConfiguration());
+ manager.setDefaultConfiguration(m_widget->defaultApiLevel());
}
void BlackBerryNDKSettingsPage::finish()
diff --git a/src/plugins/qnx/blackberryndksettingswidget.cpp b/src/plugins/qnx/blackberryndksettingswidget.cpp
index a1e2b5663a..cca92f6c9f 100644
--- a/src/plugins/qnx/blackberryndksettingswidget.cpp
+++ b/src/plugins/qnx/blackberryndksettingswidget.cpp
@@ -35,7 +35,8 @@
#include "blackberrysigningutils.h"
#include "blackberryconfigurationmanager.h"
-#include "blackberryconfiguration.h"
+#include "blackberryapilevelconfiguration.h"
+#include "blackberryruntimeconfiguration.h"
#include <utils/pathchooser.h>
@@ -57,37 +58,44 @@ BlackBerryNDKSettingsWidget::BlackBerryNDKSettingsWidget(QWidget *parent) :
m_ui(new Ui_BlackBerryNDKSettingsWidget),
m_bbConfigManager(BlackBerryConfigurationManager::instance()),
m_autoDetectedNdks(0),
- m_manualNdks(0)
+ m_manualApiLevel(0)
{
m_ui->setupUi(this);
updateInfoTable(0);
- m_activatedTargets << m_bbConfigManager.activeConfigurations();
+ m_activatedApiLevel << m_bbConfigManager.activeApiLevels();
m_ui->ndksTreeWidget->header()->setResizeMode(QHeaderView::Stretch);
m_ui->ndksTreeWidget->header()->setStretchLastSection(false);
- m_ui->ndksTreeWidget->setHeaderItem(new QTreeWidgetItem(QStringList() << tr("API Level") << tr("Environment File")));
+ m_ui->ndksTreeWidget->setHeaderItem(new QTreeWidgetItem(QStringList() << tr("Configuration")));
m_ui->ndksTreeWidget->setTextElideMode(Qt::ElideNone);
- m_ui->ndksTreeWidget->setColumnCount(2);
- m_autoDetectedNdks = new QTreeWidgetItem(m_ui->ndksTreeWidget);
+ m_ui->ndksTreeWidget->setColumnCount(1);
+
+ m_apiLevels = new QTreeWidgetItem(m_ui->ndksTreeWidget);
+ m_apiLevels->setText(0, tr("Api Levels"));
+ m_runtimes = new QTreeWidgetItem(m_ui->ndksTreeWidget);
+ m_runtimes->setText(0, tr("Runtimes"));
+
+ m_autoDetectedNdks = new QTreeWidgetItem(m_apiLevels);
m_autoDetectedNdks->setText(0, tr("Auto-Detected"));
m_autoDetectedNdks->setFirstColumnSpanned(true);
m_autoDetectedNdks->setFlags(Qt::ItemIsEnabled);
- m_manualNdks = new QTreeWidgetItem(m_ui->ndksTreeWidget);
- m_manualNdks->setText(0, tr("Manual"));
- m_manualNdks->setFirstColumnSpanned(true);
- m_manualNdks->setFlags(Qt::ItemIsEnabled);
+ m_manualApiLevel = new QTreeWidgetItem(m_apiLevels);
+ m_manualApiLevel->setText(0, tr("Manual"));
+ m_manualApiLevel->setFirstColumnSpanned(true);
+ m_manualApiLevel->setFlags(Qt::ItemIsEnabled);
m_ui->ndksTreeWidget->expandAll();
- connect(m_ui->addNdkButton, SIGNAL(clicked()), this, SLOT(addNdkTarget()));
- connect(m_ui->removeNdkButton, SIGNAL(clicked()), this, SLOT(removeNdkTarget()));
- connect(m_ui->activateNdkTargetButton, SIGNAL(clicked()), this, SLOT(activateNdkTarget()));
- connect(m_ui->deactivateNdkTargetButton, SIGNAL(clicked()), this, SLOT(deactivateNdkTarget()));
+ connect(m_ui->addConfigButton, SIGNAL(clicked()), this, SLOT(addConfiguration()));
+ connect(m_ui->removeConfigButton, SIGNAL(clicked()), this, SLOT(removeConfiguration()));
+ connect(m_ui->activateNdkTargetButton, SIGNAL(clicked()), this, SLOT(activateApiLevel()));
+ connect(m_ui->deactivateNdkTargetButton, SIGNAL(clicked()), this, SLOT(deactivateApiLevel()));
+
connect(m_ui->cleanUpButton, SIGNAL(clicked()), this, SLOT(cleanUp()));
connect(m_ui->ndksTreeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), this, SLOT(updateInfoTable(QTreeWidgetItem*)));
- connect(this, SIGNAL(targetsUpdated()), this, SLOT(populateDefaultConfigurationCombo()));
+ connect(this, SIGNAL(configurationsUpdated()), this, SLOT(populateDefaultConfigurationCombo()));
// BlackBerryConfigurationManager.settingsChanged signal may be emitted multiple times
// during the same event handling. This would result in multiple updatePage() calls even through
@@ -102,57 +110,74 @@ BlackBerryNDKSettingsWidget::BlackBerryNDKSettingsWidget(QWidget *parent) :
bool BlackBerryNDKSettingsWidget::hasActiveNdk() const
{
- return !m_bbConfigManager.configurations().isEmpty();
+ return !m_bbConfigManager.apiLevels().isEmpty();
}
-QList<BlackBerryConfiguration *> BlackBerryNDKSettingsWidget::activatedTargets()
+QList<BlackBerryApiLevelConfiguration *> BlackBerryNDKSettingsWidget::activatedApiLevels()
{
- return m_activatedTargets;
+ return m_activatedApiLevel;
}
-QList<BlackBerryConfiguration *> BlackBerryNDKSettingsWidget::deactivatedTargets()
+QList<BlackBerryApiLevelConfiguration *> BlackBerryNDKSettingsWidget::deactivatedApiLevels()
{
- return m_deactivatedTargets;
+ return m_deactivatedApiLevel;
}
-BlackBerryConfiguration *BlackBerryNDKSettingsWidget::defaultConfiguration() const
+BlackBerryApiLevelConfiguration *BlackBerryNDKSettingsWidget::defaultApiLevel() const
{
const int currentIndex = m_ui->apiLevelCombo->currentIndex();
- return static_cast<BlackBerryConfiguration*>(
+ return static_cast<BlackBerryApiLevelConfiguration*>(
m_ui->apiLevelCombo->itemData(currentIndex).value<void*>());
}
void BlackBerryNDKSettingsWidget::updateInfoTable(QTreeWidgetItem* currentItem)
{
- BlackBerryConfiguration *config = m_bbConfigManager.configurationFromEnvFile(
- Utils::FileName::fromString(currentItem ? currentItem->text(1) : QString()));
- updateUi(currentItem, config);
-
- m_ui->informationBox->setVisible(config);
- if (config) {
- m_ui->baseNameLabel->setText(config->displayName());
- m_ui->hostLabel->setText(QDir::toNativeSeparators(config->qnxHost()));
- m_ui->targetLabel->setText(QDir::toNativeSeparators(config->sysRoot().toString()));
- m_ui->versionLabel->setText(config->version().toString());
+ updateUi(currentItem);
+ if (!currentItem)
+ return;
+
+ if (currentItem->parent() == m_runtimes) {
+ BlackBerryRuntimeConfiguration *runtime = static_cast<BlackBerryRuntimeConfiguration*>(
+ currentItem->data(0, Qt::UserRole).value<void*>());
+ if (runtime) {
+ m_ui->baseName->setText(runtime->displayName());
+ m_ui->version->setText(runtime->version().toString());
+ m_ui->path->setText(runtime->path());
+
+ m_ui->removeConfigButton->setEnabled(runtime);
+ m_ui->activateNdkTargetButton->setEnabled(false);
+ m_ui->deactivateNdkTargetButton->setEnabled(false);
+ }
+
+ return;
+ } else if (currentItem->parent() == m_autoDetectedNdks || currentItem->parent() == m_manualApiLevel) {
+ BlackBerryApiLevelConfiguration *config = static_cast<BlackBerryApiLevelConfiguration*>(
+ currentItem->data(0, Qt::UserRole).value<void*>());
+
+ m_ui->path->setText(config->ndkEnvFile().toString());
+ m_ui->baseName->setText(config->displayName());
+ m_ui->host->setText(QDir::toNativeSeparators(config->qnxHost()));
+ m_ui->target->setText(QDir::toNativeSeparators(config->sysRoot().toString()));
+ m_ui->version->setText(config->version().toString());
}
}
-void BlackBerryNDKSettingsWidget::updateNdkList()
+void BlackBerryNDKSettingsWidget::updateConfigurationList()
{
qDeleteAll(m_autoDetectedNdks->takeChildren());
- qDeleteAll(m_manualNdks->takeChildren());
+ qDeleteAll(m_manualApiLevel->takeChildren());
+ qDeleteAll(m_runtimes->takeChildren());
bool enableCleanUp = false;
- foreach (BlackBerryConfiguration *config, m_bbConfigManager.configurations()) {
- QTreeWidgetItem *parent = config->isAutoDetected() ? m_autoDetectedNdks : m_manualNdks;
+ foreach (BlackBerryApiLevelConfiguration *config, m_bbConfigManager.apiLevels()) {
+ QTreeWidgetItem *parent = config->isAutoDetected() ? m_autoDetectedNdks : m_manualApiLevel;
QTreeWidgetItem *item = new QTreeWidgetItem(parent);
item->setText(0, config->displayName());
- item->setText(1, config->ndkEnvFile().toString());
+ item->setData(0, Qt::UserRole, QVariant::fromValue(static_cast<void*>(config)));
QFont font;
- font.setBold(config->isActive() || m_activatedTargets.contains(config));
+ font.setBold(config->isActive() || m_activatedApiLevel.contains(config));
item->setFont(0, font);
- item->setFont(1, font);
item->setIcon(0, config->isValid() ? QIcon() : invalidConfigIcon);
// TODO: Do the same if qmake, qcc, debugger are no longer detected...
if (!config->isValid()) {
@@ -181,157 +206,202 @@ void BlackBerryNDKSettingsWidget::updateNdkList()
}
}
+ foreach (BlackBerryRuntimeConfiguration *runtime, m_bbConfigManager.runtimes()) {
+ QTreeWidgetItem *item = new QTreeWidgetItem(m_runtimes);
+ item->setText(0, runtime->displayName());
+ item->setData(0, Qt::UserRole, QVariant::fromValue(static_cast<void*>(runtime)));
+ }
+
m_ui->ndksTreeWidget->setCurrentItem(m_autoDetectedNdks->child(0));
m_ui->cleanUpButton->setEnabled(enableCleanUp);
}
-void BlackBerryNDKSettingsWidget::addNdkTarget()
+void BlackBerryNDKSettingsWidget::addConfiguration()
{
- launchBlackBerryInstallerWizard(BlackBerryInstallerDataHandler::InstallMode);
- emit targetsUpdated();
+ launchBlackBerryInstallerWizard(BlackBerryInstallerDataHandler::InstallMode, BlackBerryInstallerDataHandler::ApiLevel);
+ emit configurationsUpdated();
}
-void BlackBerryNDKSettingsWidget::removeNdkTarget()
+void BlackBerryNDKSettingsWidget::removeConfiguration()
{
- if (!m_ui->ndksTreeWidget->currentItem())
- return;
-
- QString ndk = m_ui->ndksTreeWidget->currentItem()->text(0);
- QString envFilePath = m_ui->ndksTreeWidget->currentItem()->text(1);
-
- BlackBerryConfiguration *config = m_bbConfigManager.configurationFromEnvFile(Utils::FileName::fromString(envFilePath));
- if (!config)
+ QTreeWidgetItem * current = m_ui->ndksTreeWidget->currentItem();
+ if (!current)
return;
- if (config->isAutoDetected()) {
- uninstallNdkTarget();
- emit targetsUpdated();
- return;
- }
+ if (current->parent() == m_runtimes) {
+ uninstallConfiguration(BlackBerryInstallerDataHandler::Runtime);
+ emit configurationsUpdated();
+ } else {
+ const QString ndk = m_ui->ndksTreeWidget->currentItem()->text(0);
+ BlackBerryApiLevelConfiguration *config = static_cast<BlackBerryApiLevelConfiguration*>(
+ current->data(0, Qt::UserRole).value<void*>());
+ if (config->isAutoDetected()) {
+ uninstallConfiguration(BlackBerryInstallerDataHandler::ApiLevel);
+ emit configurationsUpdated();
+ return;
+ }
- QMessageBox::StandardButton button =
- QMessageBox::question(Core::ICore::mainWindow(),
- tr("Clean BlackBerry 10 Configuration"),
- tr("Are you sure you want to remove:\n %1?").arg(ndk),
- QMessageBox::Yes | QMessageBox::No);
-
- if (button == QMessageBox::Yes) {
- m_activatedTargets.removeOne(config);
- m_deactivatedTargets.removeOne(config);
- m_bbConfigManager.removeConfiguration(config);
- m_manualNdks->removeChild(m_ui->ndksTreeWidget->currentItem());
- emit targetsUpdated();
+ QMessageBox::StandardButton button =
+ QMessageBox::question(Core::ICore::mainWindow(),
+ tr("Clean BlackBerry 10 Configuration"),
+ tr("Are you sure you want to remove:\n %1?").arg(ndk),
+ QMessageBox::Yes | QMessageBox::No);
+
+ if (button == QMessageBox::Yes) {
+ m_activatedApiLevel.removeOne(config);
+ m_deactivatedApiLevel.removeOne(config);
+ m_bbConfigManager.removeApiLevel(config);
+ m_manualApiLevel->removeChild(m_ui->ndksTreeWidget->currentItem());
+ emit configurationsUpdated();
+ }
}
}
-void BlackBerryNDKSettingsWidget::activateNdkTarget()
+void BlackBerryNDKSettingsWidget::activateApiLevel()
{
if (!m_ui->ndksTreeWidget->currentItem())
return;
- QString envFilePath = m_ui->ndksTreeWidget->currentItem()->text(1);
+ BlackBerryApiLevelConfiguration *config = static_cast<BlackBerryApiLevelConfiguration*>(
+ m_ui->ndksTreeWidget->currentItem()->data(0, Qt::UserRole).value<void*>());
- BlackBerryConfiguration *config = m_bbConfigManager.configurationFromEnvFile(Utils::FileName::fromString(envFilePath));
- if (config && !m_activatedTargets.contains(config)) {
- m_activatedTargets << config;
- if (m_deactivatedTargets.contains(config))
- m_deactivatedTargets.removeAt(m_deactivatedTargets.indexOf(config));
+ if (!m_activatedApiLevel.contains(config)) {
+ m_activatedApiLevel << config;
+ if (m_deactivatedApiLevel.contains(config))
+ m_deactivatedApiLevel.removeAt(m_deactivatedApiLevel.indexOf(config));
- updateUi(m_ui->ndksTreeWidget->currentItem(), config);
- emit targetsUpdated();
+ updateUi(m_ui->ndksTreeWidget->currentItem());
+ emit configurationsUpdated();
}
}
-void BlackBerryNDKSettingsWidget::deactivateNdkTarget()
+void BlackBerryNDKSettingsWidget::deactivateApiLevel()
{
if (!m_ui->ndksTreeWidget->currentItem())
return;
- QString envFilePath = m_ui->ndksTreeWidget->currentItem()->text(1);
-
- BlackBerryConfiguration *config = m_bbConfigManager.configurationFromEnvFile(Utils::FileName::fromString(envFilePath));
- if (config && m_activatedTargets.contains(config)) {
- m_deactivatedTargets << config;
- m_activatedTargets.removeAt(m_activatedTargets.indexOf(config));
- updateUi(m_ui->ndksTreeWidget->currentItem(), config);
- emit targetsUpdated();
+ BlackBerryApiLevelConfiguration *config = static_cast<BlackBerryApiLevelConfiguration*>(
+ m_ui->ndksTreeWidget->currentItem()->data(0, Qt::UserRole).value<void*>());
+ if (m_activatedApiLevel.contains(config)) {
+ m_deactivatedApiLevel << config;
+ m_activatedApiLevel.removeAt(m_activatedApiLevel.indexOf(config));
+ updateUi(m_ui->ndksTreeWidget->currentItem());
+ emit configurationsUpdated();
}
}
-void BlackBerryNDKSettingsWidget::updateUi(QTreeWidgetItem *item, BlackBerryConfiguration *config)
+void BlackBerryNDKSettingsWidget::updateUi(QTreeWidgetItem *item)
{
- if (!item || !config) {
- m_ui->removeNdkButton->setEnabled(false);
+ if (!item || (item->parent() != m_runtimes &&
+ item->parent() != m_autoDetectedNdks &&
+ item->parent() != m_manualApiLevel )) {
+ m_ui->removeConfigButton->setEnabled(false);
m_ui->activateNdkTargetButton->setEnabled(false);
m_ui->deactivateNdkTargetButton->setEnabled(false);
+ m_ui->informationBox->setVisible(false);
return;
}
- const bool contains = m_activatedTargets.contains(config);
- QFont font;
- font.setBold(contains);
- item->setFont(0, font);
- item->setFont(1, font);
-
- m_ui->activateNdkTargetButton->setEnabled(!contains);
- m_ui->deactivateNdkTargetButton->setEnabled(contains && m_activatedTargets.size() > 1);
- // Disable remove button for auto detected pre-10.2 NDKs (uninstall wizard doesn't handle them)
- m_ui->removeNdkButton->setEnabled(!(config->isAutoDetected()
- && QnxUtils::sdkInstallerPath(config->ndkPath()).isEmpty()));
+ const bool isRuntimeItem = item->parent() == m_runtimes;
+ // Update the infornation to show in the information panel
+ m_ui->informationBox->setVisible(true);
+ m_ui->informationBox->setTitle(isRuntimeItem ?
+ tr("Runtime Information") : tr("API Level Information"));
+ m_ui->pathLabel->setText(isRuntimeItem ? tr("Path:") : tr("Environment File:"));
+ m_ui->hostLabel->setVisible(!isRuntimeItem);
+ m_ui->host->setVisible(!isRuntimeItem);
+ m_ui->targetLabel->setVisible(!isRuntimeItem);
+ m_ui->target->setVisible(!isRuntimeItem);
+
+ if (!isRuntimeItem) {
+ BlackBerryApiLevelConfiguration *config = static_cast<BlackBerryApiLevelConfiguration*>(
+ item->data(0, Qt::UserRole).value<void*>());
+ const bool contains = m_activatedApiLevel.contains(config);
+ QFont font;
+ font.setBold(contains);
+ item->setFont(0, font);
+
+ m_ui->activateNdkTargetButton->setEnabled(!contains);
+ m_ui->deactivateNdkTargetButton->setEnabled(contains && m_activatedApiLevel.size() > 1);
+ // Disable remove button for auto detected pre-10.2 NDKs (uninstall wizard doesn't handle them)
+ m_ui->removeConfigButton->setEnabled(!(config->isAutoDetected()
+ && QnxUtils::sdkInstallerPath(config->ndkPath()).isEmpty()));
+ }
}
-void BlackBerryNDKSettingsWidget::uninstallNdkTarget()
+void BlackBerryNDKSettingsWidget::uninstallConfiguration(BlackBerryInstallerDataHandler::Target target)
{
const QMessageBox::StandardButton answer = QMessageBox::question(this, tr("Confirmation"),
tr("Are you sure you want to uninstall %1?").
- arg(m_ui->baseNameLabel->text()),
+ arg(m_ui->baseName->text()),
QMessageBox::Yes | QMessageBox::No);
- if (answer == QMessageBox::Yes)
- launchBlackBerryInstallerWizard(BlackBerryInstallerDataHandler::UninstallMode, m_ui->versionLabel->text());
+ if (answer == QMessageBox::Yes) {
+ if (target == BlackBerryInstallerDataHandler::ApiLevel) {
+ launchBlackBerryInstallerWizard(BlackBerryInstallerDataHandler::UninstallMode,
+ BlackBerryInstallerDataHandler::ApiLevel, m_ui->version->text());
+ } else if (target == BlackBerryInstallerDataHandler::Runtime) {
+ if (m_ui->ndksTreeWidget->currentItem()) {
+ launchBlackBerryInstallerWizard(BlackBerryInstallerDataHandler::UninstallMode,
+ BlackBerryInstallerDataHandler::Runtime,
+ m_ui->ndksTreeWidget->currentItem()->text(0));
+ }
+ }
+
+ }
}
void BlackBerryNDKSettingsWidget::cleanUp()
{
- foreach (BlackBerryConfiguration *config, m_bbConfigManager.configurations()) {
+ foreach (BlackBerryApiLevelConfiguration *config, m_bbConfigManager.apiLevels()) {
if (!config->isValid()) {
- m_activatedTargets.removeOne(config);
- m_deactivatedTargets.removeOne(config);
- m_bbConfigManager.removeConfiguration(config);
+ m_activatedApiLevel.removeOne(config);
+ m_deactivatedApiLevel.removeOne(config);
+ m_bbConfigManager.removeApiLevel(config);
}
}
- updateNdkList();
+ updateConfigurationList();
}
void BlackBerryNDKSettingsWidget::handleInstallationFinished()
{
- m_bbConfigManager.loadAutoDetectedConfigurations();
- updateNdkList();
+ m_bbConfigManager.loadAutoDetectedApiLevels();
+ m_bbConfigManager.loadAutoDetectedRuntimes();
+ updateConfigurationList();
}
void BlackBerryNDKSettingsWidget::handleUninstallationFinished()
{
- if (!m_ui->ndksTreeWidget->currentItem())
+ QTreeWidgetItem *current = m_ui->ndksTreeWidget->currentItem();
+ if (!current)
return;
- QString targetName = m_ui->ndksTreeWidget->currentItem()->text(0);
- QString envFilePath = m_ui->ndksTreeWidget->currentItem()->text(1);
+ if (current->parent() == m_runtimes) {
+ BlackBerryRuntimeConfiguration *runtime = static_cast<BlackBerryRuntimeConfiguration*>(
+ current->data(0, Qt::UserRole).value<void*>());
+ m_bbConfigManager.removeRuntime(runtime);
+ updateConfigurationList();
+ return;
+ }
+
+ const QString targetName = current->text(0);
// Check if the target is corrrecly uninstalled
foreach (const NdkInstallInformation &ndk, QnxUtils::installedNdks()) {
if (ndk.name == targetName)
return;
}
- BlackBerryConfiguration *config = m_bbConfigManager.configurationFromEnvFile(Utils::FileName::fromString(envFilePath));
- if (m_activatedTargets.contains(config))
- m_activatedTargets.removeAt(m_activatedTargets.indexOf(config));
- else if (m_deactivatedTargets.contains(config))
- m_deactivatedTargets.removeAt(m_deactivatedTargets.indexOf(config));
+ BlackBerryApiLevelConfiguration *config = static_cast<BlackBerryApiLevelConfiguration*>(
+ current->data(0, Qt::UserRole).value<void*>());
+ if (m_activatedApiLevel.contains(config))
+ m_activatedApiLevel.removeAt(m_activatedApiLevel.indexOf(config));
+ else if (m_deactivatedApiLevel.contains(config))
+ m_deactivatedApiLevel.removeAt(m_deactivatedApiLevel.indexOf(config));
- m_bbConfigManager.removeConfiguration(config);
+ m_bbConfigManager.removeApiLevel(config);
- updateNdkList();
+ updateConfigurationList();
}
void BlackBerryNDKSettingsWidget::populateDefaultConfigurationCombo()
@@ -339,7 +409,7 @@ void BlackBerryNDKSettingsWidget::populateDefaultConfigurationCombo()
// prevent QComboBox::currentIndexChanged() from being emitted
m_ui->apiLevelCombo->clear();
- QList<BlackBerryConfiguration*> configurations = m_bbConfigManager.configurations();
+ QList<BlackBerryApiLevelConfiguration*> configurations = m_bbConfigManager.apiLevels();
m_ui->apiLevelCombo->addItem(tr("Newest version"),
QVariant::fromValue(static_cast<void*>(0)));
@@ -349,9 +419,9 @@ void BlackBerryNDKSettingsWidget::populateDefaultConfigurationCombo()
int configIndex = 0;
- BlackBerryConfiguration *defaultConfig = m_bbConfigManager.defaultConfiguration();
+ BlackBerryApiLevelConfiguration *defaultConfig = m_bbConfigManager.defaultApiLevel();
- foreach (BlackBerryConfiguration *config, configurations) {
+ foreach (BlackBerryApiLevelConfiguration *config, configurations) {
m_ui->apiLevelCombo->addItem(config->displayName(),
QVariant::fromValue(static_cast<void*>(config)));
@@ -359,15 +429,17 @@ void BlackBerryNDKSettingsWidget::populateDefaultConfigurationCombo()
configIndex = m_ui->apiLevelCombo->count() - 1;
}
- const int currentIndex = (m_bbConfigManager.newestConfigurationEnabled()) ? 0 : configIndex;
+ const int currentIndex = (m_bbConfigManager.newestApiLevelEnabled()) ? 0 : configIndex;
m_ui->apiLevelCombo->setCurrentIndex(currentIndex);
}
-void BlackBerryNDKSettingsWidget::launchBlackBerryInstallerWizard(BlackBerryInstallerDataHandler::Mode mode,
- const QString& targetVersion)
+void BlackBerryNDKSettingsWidget::launchBlackBerryInstallerWizard(
+ BlackBerryInstallerDataHandler::Mode mode,
+ BlackBerryInstallerDataHandler::Target target,
+ const QString& targetVersion)
{
- BlackBerryInstallWizard wizard(mode, BlackBerryInstallerDataHandler::ApiLevel, targetVersion, this);
+ BlackBerryInstallWizard wizard(mode, target, targetVersion, this);
if (mode == BlackBerryInstallerDataHandler::InstallMode)
connect(&wizard, SIGNAL(processFinished()), this, SLOT(handleInstallationFinished()));
else
diff --git a/src/plugins/qnx/blackberryndksettingswidget.h b/src/plugins/qnx/blackberryndksettingswidget.h
index d8a2d80f9c..3e6c5d9253 100644
--- a/src/plugins/qnx/blackberryndksettingswidget.h
+++ b/src/plugins/qnx/blackberryndksettingswidget.h
@@ -45,7 +45,7 @@ QT_END_NAMESPACE
namespace Qnx {
namespace Internal {
-class BlackBerryConfiguration;
+class BlackBerryApiLevelConfiguration;
class BlackBerryConfigurationManager;
class Ui_BlackBerryNDKSettingsWidget;
@@ -57,41 +57,45 @@ public:
bool hasActiveNdk() const;
- QList<BlackBerryConfiguration *> activatedTargets();
- QList<BlackBerryConfiguration *> deactivatedTargets();
+ QList<BlackBerryApiLevelConfiguration *> activatedApiLevels();
+ QList<BlackBerryApiLevelConfiguration *> deactivatedApiLevels();
- BlackBerryConfiguration *defaultConfiguration() const;
+ BlackBerryApiLevelConfiguration *defaultApiLevel() const;
signals:
- void targetsUpdated();
+ void configurationsUpdated();
public slots:
void updateInfoTable(QTreeWidgetItem* currentItem);
- void updateNdkList();
- void addNdkTarget();
- void removeNdkTarget();
- void activateNdkTarget();
- void deactivateNdkTarget();
- void uninstallNdkTarget();
+ void updateConfigurationList();
+ void addConfiguration();
+ void removeConfiguration();
+ void activateApiLevel();
+ void deactivateApiLevel();
+ void uninstallConfiguration(BlackBerryInstallerDataHandler::Target target);
void cleanUp();
void handleInstallationFinished();
void handleUninstallationFinished();
- void updateUi(QTreeWidgetItem* item, BlackBerryConfiguration* config);
+ void updateUi(QTreeWidgetItem* item);
void populateDefaultConfigurationCombo();
void updatePage();
private:
void launchBlackBerryInstallerWizard(BlackBerryInstallerDataHandler::Mode mode,
+ BlackBerryInstallerDataHandler::Target target,
const QString& tagetVersion = QString());
Ui_BlackBerryNDKSettingsWidget *m_ui;
BlackBerryConfigurationManager &m_bbConfigManager;
+ QTreeWidgetItem *m_apiLevels;
+ QTreeWidgetItem *m_runtimes;
+
QTreeWidgetItem *m_autoDetectedNdks;
- QTreeWidgetItem *m_manualNdks;
+ QTreeWidgetItem *m_manualApiLevel;
- QList<BlackBerryConfiguration *> m_activatedTargets;
- QList<BlackBerryConfiguration *> m_deactivatedTargets;
+ QList<BlackBerryApiLevelConfiguration *> m_activatedApiLevel;
+ QList<BlackBerryApiLevelConfiguration *> m_deactivatedApiLevel;
QTimer m_timer;
};
diff --git a/src/plugins/qnx/blackberryndksettingswidget.ui b/src/plugins/qnx/blackberryndksettingswidget.ui
index 30bd18b27b..bfcc59cb19 100644
--- a/src/plugins/qnx/blackberryndksettingswidget.ui
+++ b/src/plugins/qnx/blackberryndksettingswidget.ui
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>773</width>
- <height>495</height>
+ <height>412</height>
</rect>
</property>
<property name="windowTitle">
@@ -55,14 +55,14 @@
<item row="1" column="1" rowspan="2">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
- <widget class="QPushButton" name="addNdkButton">
+ <widget class="QPushButton" name="addConfigButton">
<property name="text">
<string>Add</string>
</property>
</widget>
</item>
<item>
- <widget class="QPushButton" name="removeNdkButton">
+ <widget class="QPushButton" name="removeConfigButton">
<property name="text">
<string>Remove</string>
</property>
@@ -139,60 +139,77 @@
<item row="2" column="0">
<widget class="QGroupBox" name="informationBox">
<property name="title">
- <string>API Level Information</string>
+ <string>GroupBox</string>
</property>
<layout class="QFormLayout" name="formLayout">
+ <property name="fieldGrowthPolicy">
+ <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
+ </property>
+ <item row="2" column="0">
+ <widget class="QLabel" name="pathLabel">
+ <property name="text">
+ <string>Path:</string>
+ </property>
+ </widget>
+ </item>
<item row="2" column="1">
- <widget class="QLabel" name="versionLabel">
+ <widget class="QLabel" name="path">
<property name="text">
<string/>
</property>
</widget>
</item>
- <item row="1" column="0">
- <widget class="QLabel" name="label">
+ <item row="3" column="0">
+ <widget class="QLabel" name="baseNameLabel">
<property name="text">
<string>Name:</string>
</property>
</widget>
</item>
- <item row="2" column="0">
- <widget class="QLabel" name="label_3">
+ <item row="3" column="1">
+ <widget class="QLabel" name="baseName">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="versionLabel">
<property name="text">
<string>Version:</string>
</property>
</widget>
</item>
- <item row="3" column="1">
+ <item row="5" column="0">
<widget class="QLabel" name="hostLabel">
<property name="text">
- <string/>
+ <string>Host:</string>
</property>
</widget>
</item>
- <item row="1" column="1">
- <widget class="QLabel" name="baseNameLabel">
+ <item row="5" column="1">
+ <widget class="QLabel" name="host">
<property name="text">
<string/>
</property>
</widget>
</item>
- <item row="3" column="0">
- <widget class="QLabel" name="label_4">
+ <item row="6" column="0">
+ <widget class="QLabel" name="targetLabel">
<property name="text">
- <string>Host:</string>
+ <string>Target:</string>
</property>
</widget>
</item>
- <item row="4" column="0">
- <widget class="QLabel" name="label_5">
+ <item row="6" column="1">
+ <widget class="QLabel" name="target">
<property name="text">
- <string>Target:</string>
+ <string/>
</property>
</widget>
</item>
<item row="4" column="1">
- <widget class="QLabel" name="targetLabel">
+ <widget class="QLabel" name="version">
<property name="text">
<string/>
</property>
diff --git a/src/plugins/qnx/blackberryruntimeconfiguration.cpp b/src/plugins/qnx/blackberryruntimeconfiguration.cpp
new file mode 100644
index 0000000000..9ebce6edd4
--- /dev/null
+++ b/src/plugins/qnx/blackberryruntimeconfiguration.cpp
@@ -0,0 +1,94 @@
+/**************************************************************************
+**
+** Copyright (C) 2014 BlackBerry Limited. All rights reserved.
+**
+** Contact: BlackBerry (qt@blackberry.com)
+** Contact: KDAB (info@kdab.com)
+**
+** 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 "blackberryruntimeconfiguration.h"
+
+#include "qnxconstants.h"
+
+#include <QVariantMap>
+#include <QFileInfo>
+
+namespace Qnx {
+namespace Internal {
+
+const QLatin1String PathKey("Path");
+const QLatin1String DisplayNameKey("DisplayName");
+const QLatin1String VersionKey("Version");
+
+BlackBerryRuntimeConfiguration::BlackBerryRuntimeConfiguration(
+ const QString &path,
+ const BlackBerryVersionNumber &version)
+ : m_path(path)
+{
+ if (!version.isEmpty())
+ m_version = version;
+ else
+ m_version = BlackBerryVersionNumber::fromFileName(QFileInfo(path).baseName(),
+ QRegExp(QLatin1String("^runtime_(.*)$")));
+
+ m_displayName = QObject::tr("Runtime ") + m_version.toString();
+}
+
+BlackBerryRuntimeConfiguration::BlackBerryRuntimeConfiguration(const QVariantMap &data)
+{
+ m_path = data.value(QLatin1String(PathKey)).toString();
+ m_displayName = data.value(QLatin1String(DisplayNameKey)).toString();
+ m_version = BlackBerryVersionNumber(data.value(QLatin1String(VersionKey)).toString());
+}
+
+QString BlackBerryRuntimeConfiguration::path() const
+{
+ return m_path;
+}
+
+QString BlackBerryRuntimeConfiguration::displayName() const
+{
+ return m_displayName;
+}
+
+BlackBerryVersionNumber BlackBerryRuntimeConfiguration::version() const
+{
+ return m_version;
+}
+
+QVariantMap BlackBerryRuntimeConfiguration::toMap() const
+{
+ QVariantMap data;
+ data.insert(QLatin1String(Qnx::Constants::QNX_BB_KEY_CONFIGURATION_TYPE),
+ QLatin1String(Qnx::Constants::QNX_BB_RUNTIME_TYPE));
+ data.insert(QLatin1String(PathKey), m_path);
+ data.insert(QLatin1String(DisplayNameKey), m_displayName);
+ data.insert(QLatin1String(VersionKey), m_version.toString());
+ return data;
+}
+
+}
+}
diff --git a/src/plugins/qnx/blackberryruntimeconfiguration.h b/src/plugins/qnx/blackberryruntimeconfiguration.h
new file mode 100644
index 0000000000..7d6423e6f2
--- /dev/null
+++ b/src/plugins/qnx/blackberryruntimeconfiguration.h
@@ -0,0 +1,60 @@
+/**************************************************************************
+**
+** Copyright (C) 2014 BlackBerry Limited. All rights reserved.
+**
+** Contact: BlackBerry (qt@blackberry.com)
+** Contact: KDAB (info@kdab.com)
+**
+** 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.
+**
+****************************************************************************/
+
+#ifndef BLACKBERRYRUNTIMECONFIGURATION_H
+#define BLACKBERRYRUNTIMECONFIGURATION_H
+
+#include <blackberryversionnumber.h>
+
+namespace Qnx {
+namespace Internal {
+class BlackBerryRuntimeConfiguration
+{
+public:
+ BlackBerryRuntimeConfiguration(const QString &path,
+ const BlackBerryVersionNumber &version = BlackBerryVersionNumber());
+ BlackBerryRuntimeConfiguration(const QVariantMap &data);
+
+ QString path() const;
+ QString displayName() const;
+ BlackBerryVersionNumber version() const;
+ QVariantMap toMap() const;
+
+private:
+ QString m_path;
+ QString m_displayName;
+ BlackBerryVersionNumber m_version;
+};
+
+}
+}
+
+#endif // BLACKBERRYRUNTIMECONFIGURATION_H
diff --git a/src/plugins/qnx/blackberrysetupwizardpages.cpp b/src/plugins/qnx/blackberrysetupwizardpages.cpp
new file mode 100644
index 0000000000..9c17dda941
--- /dev/null
+++ b/src/plugins/qnx/blackberrysetupwizardpages.cpp
@@ -0,0 +1,344 @@
+/**************************************************************************
+**
+** Copyright (C) 2014 BlackBerry Limited. All rights reserved.
+**
+** Contact: BlackBerry (qt@blackberry.com)
+** Contact: KDAB (info@kdab.com)
+**
+** 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 "blackberrysetupwizardpages.h"
+#include "blackberryndksettingswidget.h"
+#include "blackberrysigningutils.h"
+#include "ui_blackberrysetupwizardkeyspage.h"
+#include "ui_blackberrysetupwizardcertificatepage.h"
+#include "ui_blackberrysetupwizarddevicepage.h"
+#include "ui_blackberrysetupwizardfinishpage.h"
+
+#include <QVBoxLayout>
+#include <QFileInfo>
+#include <QLabel>
+#include <QVBoxLayout>
+#include <QMessageBox>
+#include <QAbstractButton>
+#include <QDesktopServices>
+#include <QUrl>
+
+#include <QDebug>
+
+using namespace Qnx;
+using namespace Qnx::Internal;
+
+BlackBerrySetupWizardWelcomePage::BlackBerrySetupWizardWelcomePage(QWidget *parent) :
+ QWizardPage(parent)
+{
+ const QString welcomeMessage =
+ tr("Welcome to the BlackBerry Development "
+ "Environment Setup Wizard.\nThis wizard will guide you through "
+ "the essential steps to deploy a ready-to-go development environment "
+ "for BlackBerry 10 devices.");
+
+ setTitle(tr("BlackBerry Development Environment Setup"));
+
+ QLabel *label = new QLabel(this);
+ label->setWordWrap(true);
+ label->setText(welcomeMessage);
+
+ QVBoxLayout *layout = new QVBoxLayout;
+ layout->addStretch();
+ layout->addWidget(label);
+ layout->addStretch();
+
+ setLayout(layout);
+}
+
+//-----------------------------------------------------------------------------
+
+BlackBerrySetupWizardNdkPage::BlackBerrySetupWizardNdkPage(QWidget *parent) :
+ QWizardPage(parent),
+ m_widget(0)
+{
+ setTitle(tr("Configure the NDK Path"));
+
+ m_widget = new BlackBerryNDKSettingsWidget(this);
+ m_widget->setWizardMessageVisible(false);
+
+ connect(m_widget, SIGNAL(targetsUpdated()), this, SIGNAL(completeChanged()));
+ connect(m_widget, SIGNAL(targetsUpdated()), this, SIGNAL(targetsUpdated()));
+
+ QVBoxLayout *layout = new QVBoxLayout;
+ layout->addWidget(m_widget);
+
+ setLayout(layout);
+}
+
+BlackBerrySetupWizardNdkPage::~BlackBerrySetupWizardNdkPage()
+{
+}
+
+bool BlackBerrySetupWizardNdkPage::isComplete() const
+{
+ return m_widget->hasActiveNdk();
+}
+
+//-----------------------------------------------------------------------------
+
+BlackBerrySetupWizardKeysPage::BlackBerrySetupWizardKeysPage(QWidget *parent) :
+ QWizardPage(parent),
+ m_ui(0),
+ m_complete(false)
+{
+ setTitle(tr("Setup Signing Keys"));
+
+ initUi();
+}
+
+BlackBerrySetupWizardKeysPage::~BlackBerrySetupWizardKeysPage()
+{
+ delete m_ui;
+ m_ui = 0;
+}
+
+void BlackBerrySetupWizardKeysPage::showKeysMessage(const QString &url)
+{
+ const QMessageBox::StandardButton button = QMessageBox::question(this,
+ tr("Qt Creator"),
+ tr("This wizard will be closed and you will be taken to the BlackBerry "
+ "key request web page. Do you want to continue?"),
+ QMessageBox::Yes | QMessageBox::No);
+
+ if (button == QMessageBox::Yes) {
+ QDesktopServices::openUrl(QUrl(url));
+ wizard()->reject();
+ }
+}
+
+bool BlackBerrySetupWizardKeysPage::isComplete() const
+{
+ return m_complete;
+}
+
+void BlackBerrySetupWizardKeysPage::initUi()
+{
+ BlackBerrySigningUtils &utils = BlackBerrySigningUtils::instance();
+
+ m_ui = new Ui::BlackBerrySetupWizardKeysPage;
+ m_ui->setupUi(this);
+
+ if (utils.hasLegacyKeys()) {
+ m_ui->linkLabel->setVisible(false);
+ m_ui->legacyLabel->setVisible(true);
+ m_ui->statusLabel->setVisible(false);
+
+ setComplete(false);
+ } else if (utils.hasRegisteredKeys()) {
+ m_ui->linkLabel->setVisible(false);
+ m_ui->legacyLabel->setVisible(false);
+ m_ui->statusLabel->setVisible(true);
+
+ setComplete(true);
+ } else {
+ m_ui->linkLabel->setVisible(true);
+ m_ui->legacyLabel->setVisible(false);
+ m_ui->statusLabel->setVisible(false);
+
+ setComplete(false);
+ }
+
+ connect(m_ui->linkLabel, SIGNAL(linkActivated(QString)),
+ this, SLOT(showKeysMessage(QString)));
+ connect(m_ui->legacyLabel, SIGNAL(linkActivated(QString)),
+ this, SLOT(showKeysMessage(QString)));
+ connect(m_ui->helpLabel, SIGNAL(linkActivated(QString)),
+ this, SLOT(showKeysMessage(QString)));
+}
+
+void BlackBerrySetupWizardKeysPage::setComplete(bool complete)
+{
+ if (m_complete != complete) {
+ m_complete = complete;
+ m_ui->linkLabel->setVisible(!complete);
+ m_ui->statusLabel->setVisible(complete);
+ emit completeChanged();
+ }
+}
+
+//-----------------------------------------------------------------------------
+
+const char BlackBerrySetupWizardCertificatePage::AuthorField[] = "CertificatePage::Author";
+const char BlackBerrySetupWizardCertificatePage::PasswordField[] = "CertificatePage::Password";
+const char BlackBerrySetupWizardCertificatePage::PasswordField2[] = "CertificatePage::Password2";
+
+BlackBerrySetupWizardCertificatePage::BlackBerrySetupWizardCertificatePage(QWidget *parent)
+ : QWizardPage(parent),
+ m_ui(0),
+ m_complete(false)
+{
+ setTitle(tr("Create Developer Certificate"));
+
+ initUi();
+}
+
+bool BlackBerrySetupWizardCertificatePage::isComplete() const
+{
+ return m_complete;
+}
+
+void BlackBerrySetupWizardCertificatePage::validate()
+{
+ if (m_ui->author->text().isEmpty()
+ || m_ui->password->text().isEmpty()
+ || m_ui->password2->text().isEmpty()) {
+ m_ui->status->clear();
+ setComplete(false);
+ return;
+ }
+
+ if (m_ui->password->text() != m_ui->password2->text()) {
+ m_ui->status->setText(tr("The entered passwords do not match."));
+ setComplete(false);
+ return;
+ }
+
+ if (m_ui->password->text().size() < 6) {
+ // TODO: Use tr() once string freeze is over
+ m_ui->status->setText(QCoreApplication::translate("Qnx::Internal::BlackBerryCreateCertificateDialog", "Password must be at least 6 characters long."));
+ setComplete(false);
+ return;
+ }
+
+ m_ui->status->clear();
+ setComplete(true);
+}
+
+void BlackBerrySetupWizardCertificatePage::checkBoxChanged(int state)
+{
+ if (state == Qt::Checked) {
+ m_ui->password->setEchoMode(QLineEdit::Normal);
+ m_ui->password2->setEchoMode(QLineEdit::Normal);
+ } else {
+ m_ui->password->setEchoMode(QLineEdit::Password);
+ m_ui->password2->setEchoMode(QLineEdit::Password);
+ }
+}
+
+void BlackBerrySetupWizardCertificatePage::setComplete(bool complete)
+{
+ if (m_complete != complete) {
+ m_complete = complete;
+ emit completeChanged();
+ }
+}
+
+void BlackBerrySetupWizardCertificatePage::initUi()
+{
+ m_ui = new Ui::BlackBerrySetupWizardCertificatePage;
+ m_ui->setupUi(this);
+ m_ui->status->clear();
+
+ connect(m_ui->author, SIGNAL(textChanged(QString)),
+ this, SLOT(validate()));
+ connect(m_ui->password, SIGNAL(textChanged(QString)),
+ this, SLOT(validate()));
+ connect(m_ui->password2, SIGNAL(textChanged(QString)),
+ this, SLOT(validate()));
+ connect(m_ui->showPassword, SIGNAL(stateChanged(int)),
+ this, SLOT(checkBoxChanged(int)));
+
+ registerField(QLatin1String(AuthorField) + QLatin1Char('*'), m_ui->author);
+ registerField(QLatin1String(PasswordField) + QLatin1Char('*'), m_ui->password);
+ registerField(QLatin1String(PasswordField2) + QLatin1Char('*'), m_ui->password2);
+}
+
+//-----------------------------------------------------------------------------
+
+const char BlackBerrySetupWizardDevicePage::NameField[] = "DevicePage::Name";
+const char BlackBerrySetupWizardDevicePage::IpAddressField[] = "DevicePage::IpAddress";
+const char BlackBerrySetupWizardDevicePage::PasswordField[] = "DevicePage::PasswordField";
+const char BlackBerrySetupWizardDevicePage::PhysicalDeviceField[] = "DevicePage::PhysicalDeviceField";
+
+
+BlackBerrySetupWizardDevicePage::BlackBerrySetupWizardDevicePage(QWidget *parent)
+ : QWizardPage(parent),
+ m_ui(0)
+{
+ setTitle(tr("Configure BlackBerry Device Connection"));
+
+ m_ui = new Ui::BlackBerrySetupWizardDevicePage;
+ m_ui->setupUi(this);
+
+ m_ui->deviceName->setText(tr("BlackBerry Device"));
+ m_ui->ipAddress->setText(QLatin1String("169.254.0.1"));
+
+ connect(m_ui->deviceName, SIGNAL(textChanged(QString)), this, SIGNAL(completeChanged()));
+ connect(m_ui->ipAddress, SIGNAL(textChanged(QString)), this, SIGNAL(completeChanged()));
+ connect(m_ui->password, SIGNAL(textChanged(QString)), this, SIGNAL(completeChanged()));
+ connect(m_ui->physicalDevice, SIGNAL(toggled(bool)), this, SIGNAL(completeChanged()));
+
+ registerField(QLatin1String(NameField) + QLatin1Char('*'), m_ui->deviceName);
+ registerField(QLatin1String(IpAddressField) + QLatin1Char('*'), m_ui->ipAddress);
+ registerField(QLatin1String(PasswordField), m_ui->password);
+ registerField(QLatin1String(PhysicalDeviceField), m_ui->physicalDevice);
+}
+
+bool BlackBerrySetupWizardDevicePage::isComplete() const
+{
+ if (m_ui->deviceName->text().isEmpty() || m_ui->ipAddress->text().isEmpty())
+ return false;
+
+ const bool passwordMandatory = m_ui->physicalDevice->isChecked();
+
+ if (passwordMandatory && m_ui->password->text().isEmpty())
+ return false;
+
+ return true;
+}
+
+//-----------------------------------------------------------------------------
+
+BlackBerrySetupWizardFinishPage::BlackBerrySetupWizardFinishPage(QWidget *parent)
+ : QWizardPage(parent),
+ m_ui(0)
+{
+ setTitle(tr("Your environment is ready to be configured."));
+
+ m_ui = new Ui::BlackBerrySetupWizardFinishPage;
+ m_ui->setupUi(this);
+ setProgress(QString(), -1);
+}
+
+void BlackBerrySetupWizardFinishPage::setProgress(const QString &status, int progress)
+{
+ if (progress < 0) {
+ m_ui->progressBar->hide();
+ m_ui->statusLabel->clear();
+ return;
+ } else if (!m_ui->progressBar->isVisible()) {
+ m_ui->progressBar->show();
+ }
+
+ m_ui->statusLabel->setText(status);
+ m_ui->progressBar->setValue(progress);
+}
diff --git a/src/plugins/qnx/blackberrysigningutils.cpp b/src/plugins/qnx/blackberrysigningutils.cpp
index 1a98778405..f1f4fd4297 100644
--- a/src/plugins/qnx/blackberrysigningutils.cpp
+++ b/src/plugins/qnx/blackberrysigningutils.cpp
@@ -31,7 +31,6 @@
#include "blackberrysigningutils.h"
#include "blackberrycertificate.h"
-#include "blackberryconfiguration.h"
#include "blackberryconfigurationmanager.h"
#include "blackberrycreatecertificatedialog.h"
#include "blackberrydebugtokenreader.h"
diff --git a/src/plugins/qnx/qnx.pro b/src/plugins/qnx/qnx.pro
index 6bffecb04a..849f0d4df5 100644
--- a/src/plugins/qnx/qnx.pro
+++ b/src/plugins/qnx/qnx.pro
@@ -51,7 +51,6 @@ SOURCES += qnxplugin.cpp \
blackberryabstractdeploystep.cpp \
blackberryndksettingswidget.cpp \
blackberryndksettingspage.cpp \
- blackberryconfiguration.cpp \
bardescriptormagicmatcher.cpp \
bardescriptoreditorfactory.cpp \
bardescriptoreditor.cpp \
@@ -102,7 +101,9 @@ SOURCES += qnxplugin.cpp \
qnxattachdebugdialog.cpp \
blackberrydeployqtlibrariesdialog.cpp \
blackberrysetuppage.cpp \
- blackberrysetupwidget.cpp
+ blackberrysetupwidget.cpp \
+ blackberryruntimeconfiguration.cpp \
+ blackberryapilevelconfiguration.cpp
HEADERS += qnxplugin.h\
qnxconstants.h \
@@ -153,7 +154,6 @@ HEADERS += qnxplugin.h\
blackberryabstractdeploystep.h \
blackberryndksettingswidget.h \
blackberryndksettingspage.h \
- blackberryconfiguration.h \
bardescriptormagicmatcher.h \
bardescriptoreditorfactory.h \
bardescriptoreditor.h \
@@ -204,7 +204,9 @@ HEADERS += qnxplugin.h\
qnxattachdebugdialog.h \
blackberrydeployqtlibrariesdialog.h \
blackberrysetuppage.h \
- blackberrysetupwidget.h
+ blackberrysetupwidget.h \
+ blackberryruntimeconfiguration.h \
+ blackberryapilevelconfiguration.h
FORMS += \
blackberrydeviceconfigurationwizardsetuppage.ui \
diff --git a/src/plugins/qnx/qnx.qbs b/src/plugins/qnx/qnx.qbs
index 83d2b4fe64..c3b379524c 100644
--- a/src/plugins/qnx/qnx.qbs
+++ b/src/plugins/qnx/qnx.qbs
@@ -159,8 +159,10 @@ QtcPlugin {
"blackberryndksettingswidget.ui",
"blackberryndksettingspage.cpp",
"blackberryndksettingspage.h",
- "blackberryconfiguration.cpp",
- "blackberryconfiguration.h",
+ "blackberryapilevelconfiguration.cpp",
+ "blackberryapilevelconfiguration.h",
+ "blackberryruntimeconfiguration.cpp",
+ "blackberryruntimeconfiguration",
"blackberrycertificate.cpp",
"blackberrycertificate.h",
"blackberrykeyspage.cpp",
diff --git a/src/plugins/qnx/qnxconstants.h b/src/plugins/qnx/qnxconstants.h
index db342752a5..4cd257e1ee 100644
--- a/src/plugins/qnx/qnxconstants.h
+++ b/src/plugins/qnx/qnxconstants.h
@@ -130,6 +130,11 @@ const char QNX_LEGACY_KEYS_URL[] = "https://developer.blackberry.com/native/docu
"/com.qnx.doc.native_sdk.devguide/topic/bbid_to_sa.html";
const char QNX_REGISTER_KEYS_URL[] = "https://www.blackberry.com/SignedKeys/codesigning.html";
+const char QNX_BB_KEY_CONFIGURATION_TYPE[] = "BBConfigurationType";
+
+const char QNX_BB_APILEVEL_TYPE[] = "BBApiLevel";
+const char QNX_BB_RUNTIME_TYPE[] = "BBRuntime";
+
} // namespace Constants
} // namespace Qnx
diff --git a/src/plugins/qnx/qnxplugin.cpp b/src/plugins/qnx/qnxplugin.cpp
index 84bd85f9e0..84e911335e 100644
--- a/src/plugins/qnx/qnxplugin.cpp
+++ b/src/plugins/qnx/qnxplugin.cpp
@@ -54,7 +54,7 @@
#include "blackberrycheckdevicestatusstepfactory.h"
#include "blackberrydeviceconnectionmanager.h"
#include "blackberryconfigurationmanager.h"
-#include "blackberryconfiguration.h"
+#include "blackberryapilevelconfiguration.h"
#include "cascadesimport/cascadesimportwizard.h"
#include "qnxtoolchain.h"
#include "qnxattachdebugsupport.h"
@@ -479,44 +479,46 @@ void QNXPlugin::testConfigurationManager()
{
BlackBerryConfigurationManager &manager = BlackBerryConfigurationManager::instance();
- QCOMPARE(manager.configurations().count(), 0);
- QCOMPARE(manager.activeConfigurations().count(), 0);
- QCOMPARE(manager.defaultConfiguration(), static_cast<BlackBerryConfiguration*>(0));
- QVERIFY(manager.newestConfigurationEnabled());
+ QCOMPARE(manager.apiLevels().count(), 0);
+ QCOMPARE(manager.activeApiLevels().count(), 0);
+ QCOMPARE(manager.defaultApiLevel(), static_cast<BlackBerryApiLevelConfiguration*>(0));
+ QVERIFY(manager.newestApiLevelEnabled());
QFETCH(QVariantMap, newerConfiguration);
QFETCH(QVariantMap, olderConfiguration);
- BlackBerryConfiguration::setFakeConfig(true);
- BlackBerryConfiguration *newerConfig = new BlackBerryConfiguration(newerConfiguration);
- BlackBerryConfiguration *oldConfig = new BlackBerryConfiguration(olderConfiguration);
+ BlackBerryApiLevelConfiguration::setFakeConfig(true);
+ BlackBerryApiLevelConfiguration *newerConfig =
+ new BlackBerryApiLevelConfiguration(newerConfiguration);
+ BlackBerryApiLevelConfiguration *oldConfig =
+ new BlackBerryApiLevelConfiguration(olderConfiguration);
- QVERIFY(manager.addConfiguration(oldConfig));
- QVERIFY(manager.newestConfigurationEnabled());
- QCOMPARE(manager.defaultConfiguration(), oldConfig);
+ QVERIFY(manager.addApiLevel(oldConfig));
+ QVERIFY(manager.newestApiLevelEnabled());
+ QCOMPARE(manager.defaultApiLevel(), oldConfig);
manager.setDefaultConfiguration(oldConfig);
- QCOMPARE(manager.defaultConfiguration(), oldConfig);
- QCOMPARE(manager.configurations().first(), oldConfig);
- QVERIFY(!manager.newestConfigurationEnabled());
+ QCOMPARE(manager.defaultApiLevel(), oldConfig);
+ QCOMPARE(manager.apiLevels().first(), oldConfig);
+ QVERIFY(!manager.newestApiLevelEnabled());
- QVERIFY(manager.addConfiguration(newerConfig));
- QCOMPARE(manager.configurations().first(), newerConfig);
- QCOMPARE(manager.defaultConfiguration(), oldConfig);
+ QVERIFY(manager.addApiLevel(newerConfig));
+ QCOMPARE(manager.apiLevels().first(), newerConfig);
+ QCOMPARE(manager.defaultApiLevel(), oldConfig);
manager.setDefaultConfiguration(0);
- QVERIFY(manager.newestConfigurationEnabled());
- QCOMPARE(manager.defaultConfiguration(), newerConfig);
+ QVERIFY(manager.newestApiLevelEnabled());
+ QCOMPARE(manager.defaultApiLevel(), newerConfig);
manager.setDefaultConfiguration(oldConfig);
- manager.removeConfiguration(oldConfig);
- QCOMPARE(manager.defaultConfiguration(), newerConfig);
- QVERIFY(manager.newestConfigurationEnabled());
+ manager.removeApiLevel(oldConfig);
+ QCOMPARE(manager.defaultApiLevel(), newerConfig);
+ QVERIFY(manager.newestApiLevelEnabled());
- manager.removeConfiguration(newerConfig);
- QCOMPARE(manager.defaultConfiguration(), static_cast<BlackBerryConfiguration*>(0));
- QVERIFY(manager.newestConfigurationEnabled());
+ manager.removeApiLevel(newerConfig);
+ QCOMPARE(manager.defaultApiLevel(), static_cast<BlackBerryApiLevelConfiguration*>(0));
+ QVERIFY(manager.newestApiLevelEnabled());
}
#endif
diff --git a/src/plugins/qnx/qnxtoolchain.cpp b/src/plugins/qnx/qnxtoolchain.cpp
index 1da28c1f7d..d145d47b2e 100644
--- a/src/plugins/qnx/qnxtoolchain.cpp
+++ b/src/plugins/qnx/qnxtoolchain.cpp
@@ -34,7 +34,7 @@
#include "qnxutils.h"
#include "blackberryconfigurationmanager.h"
-#include "blackberryconfiguration.h"
+#include "blackberryapilevelconfiguration.h"
#include <utils/pathchooser.h>
@@ -87,7 +87,8 @@ ToolChainConfigWidget *QnxToolChain::configurationWidget()
void QnxToolChain::addToEnvironment(Utils::Environment &env) const
{
- foreach (BlackBerryConfiguration* config, BlackBerryConfigurationManager::instance().configurations()) {
+ foreach (BlackBerryApiLevelConfiguration* config,
+ BlackBerryConfigurationManager::instance().apiLevels()) {
if (config->gccCompiler() == compilerCommand()) {
setQnxEnvironment(env, config->qnxEnv());
break;