diff --git a/src/plugins/qnx/blackberryconfiguration.cpp b/src/plugins/qnx/blackberryconfiguration.cpp index ec6f95587dc2e7a5b88ea3af52d63fe486181c93..3404e6f7eb6ba730d5f4f44984e0c478e2560c65 100644 --- a/src/plugins/qnx/blackberryconfiguration.cpp +++ b/src/plugins/qnx/blackberryconfiguration.cpp @@ -169,7 +169,13 @@ bool BlackBerryConfiguration::isAutoDetected() const bool BlackBerryConfiguration::isActive() const { - return !findRegisteredQtVersions().isEmpty(); + foreach (Kit *kit, KitManager::kits()) { + if (kit->isAutoDetected() && + kit->autoDetectionSource() == m_ndkEnvFile.toString()) + return true; + } + + return false; } bool BlackBerryConfiguration::isValid() const @@ -277,6 +283,7 @@ Kit *BlackBerryConfiguration::createKit( kit->setIconPath(FileName::fromString(QLatin1String(Constants::QNX_BB_CATEGORY_ICON))); kit->setAutoDetected(true); + kit->setAutoDetectionSource(m_ndkEnvFile.toString()); kit->setMutable(DeviceKitInformation::id(), true); kit->setSticky(QtKitInformation::id(), true); @@ -370,50 +377,24 @@ bool BlackBerryConfiguration::activate() return true; } -QList<BaseQtVersion *> BlackBerryConfiguration::findRegisteredQtVersions() const -{ - QList<BaseQtVersion *> versions; - foreach (BaseQtVersion *version, QtVersionManager::versions()) { - if (version->type() == QLatin1String(Constants::QNX_BB_QT)) { - QnxAbstractQtVersion *qnxVersion = dynamic_cast<QnxAbstractQtVersion *>(version); - if (qnxVersion && qnxVersion->isAutodetected() - && (qnxVersion->qmakeCommand() == qmake4BinaryFile() - || qnxVersion->qmakeCommand() == qmake5BinaryFile())) - versions << qnxVersion; - } - } - return versions; -} - void BlackBerryConfiguration::deactivate() { - QList<BaseQtVersion *> versions = findRegisteredQtVersions(); - QList<ToolChain *> toolChains; foreach (Kit *kit, KitManager::kits()) { - if (kit->isAutoDetected()) { + if (kit->isAutoDetected() && + kit->autoDetectionSource() == ndkEnvFile().toString()) { BaseQtVersion *version = QtKitInformation::qtVersion(kit); - if (versions.contains(version)) { - ToolChain *toolChain = ToolChainKitInformation::toolChain(kit); - if (toolChain) - toolChains << toolChain; - KitManager::deregisterKit(kit); - } + ToolChain *toolChain = ToolChainKitInformation::toolChain(kit); + const DebuggerItem *debugger = DebuggerKitInformation::debugger(kit); + if (version) + QtVersionManager::removeVersion(version); + if (toolChain) + ToolChainManager::deregisterToolChain(toolChain); + if (debugger) + DebuggerItemManager::deregisterDebugger(debugger->id()); + + KitManager::deregisterKit(kit); } } - - foreach (const DebuggerItem &item, DebuggerItemManager::debuggers()) - if (item.isAutoDetected() && - (item.command() == m_simulatorDebugger || item.command() == m_deviceDebugger)) - DebuggerItemManager::deregisterDebugger(item.id()); - - foreach (ToolChain *toolChain, ToolChainManager::toolChains()) - if (toolChain->isAutoDetected() - && (toolChains.contains(toolChain) || toolChain->compilerCommand() == m_gccCompiler)) - ToolChainManager::deregisterToolChain(toolChain); - - foreach (BaseQtVersion *version, versions) - QtVersionManager::removeVersion(version); - } } // namespace Internal diff --git a/src/plugins/qnx/blackberryconfiguration.h b/src/plugins/qnx/blackberryconfiguration.h index 9701e43485be405e9c0b4298aeeab71062118d7f..8bc2c4ee1c38b77f65a1c9a0ec908a307f4345ab 100644 --- a/src/plugins/qnx/blackberryconfiguration.h +++ b/src/plugins/qnx/blackberryconfiguration.h @@ -108,7 +108,6 @@ private: ProjectExplorer::Kit* createKit( QnxAbstractQtVersion* version, QnxToolChain* toolChain, const QVariant &debuggerItemId); - QList<QtSupport::BaseQtVersion *> findRegisteredQtVersions() const; }; } // namespace Internal diff --git a/src/plugins/qnx/blackberryconfigurationmanager.cpp b/src/plugins/qnx/blackberryconfigurationmanager.cpp index a7f265dcc93d6f9349330d15f67e5d59710238b2..10d4c9ffbd30cbba6d66f84b6522e3a8a233c8f9 100644 --- a/src/plugins/qnx/blackberryconfigurationmanager.cpp +++ b/src/plugins/qnx/blackberryconfigurationmanager.cpp @@ -49,6 +49,8 @@ #include <qtsupport/qtversionmanager.h> #include <qtsupport/qtkitinformation.h> +#include <debugger/debuggerkitinformation.h> + #include <QMessageBox> #include <QFileInfo> @@ -212,6 +214,23 @@ void BlackBerryConfigurationManager::clearInvalidConfigurations() } } +void BlackBerryConfigurationManager::setKitsAutoDetectionSource() +{ + foreach (Kit *kit, KitManager::kits()) { + if (kit->isAutoDetected() && + (DeviceTypeKitInformation::deviceTypeId(kit) == Constants::QNX_BB_CATEGORY_ICON) && + kit->autoDetectionSource().isEmpty()) { + QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(kit); + foreach (BlackBerryConfiguration *config, m_configs) { + if ((version && + (version->qmakeCommand() == config->qmake4BinaryFile() || version->qmakeCommand() == config->qmake5BinaryFile())) + && (SysRootKitInformation::sysRoot(kit) == config->sysRoot())) + kit->setAutoDetectionSource(config->ndkEnvFile().toString()); + } + } + } +} + // Switch to QnxToolchain for exisintg configuration using GccToolChain void BlackBerryConfigurationManager::checkToolChainConfiguration() { @@ -320,6 +339,9 @@ QList<Utils::EnvironmentItem> BlackBerryConfigurationManager::defaultQnxEnv() void BlackBerryConfigurationManager::loadSettings() { + // Backward compatibility: Set kit's auto detection source + // for existing BlackBerry kits that do not have it set yet. + setKitsAutoDetectionSource(); clearInvalidConfigurations(); loadAutoDetectedConfigurations(); loadManualConfigurations(); diff --git a/src/plugins/qnx/blackberryconfigurationmanager.h b/src/plugins/qnx/blackberryconfigurationmanager.h index 97602e0633ce9aa9876f66acfa2380083b058a34..7934a2adc6185d13ad0f3dd1688d05851c737d98 100644 --- a/src/plugins/qnx/blackberryconfigurationmanager.h +++ b/src/plugins/qnx/blackberryconfigurationmanager.h @@ -84,6 +84,7 @@ private: void saveManualConfigurations(); void saveActiveConfigurationNdkEnvPath(); void clearInvalidConfigurations(); + void setKitsAutoDetectionSource(); QStringList activeConfigurationNdkEnvPaths(); };