ProjectExplorer: More registerKit() simplifications

Change-Id: I61c9e9886f3952b2823433a5c94aedd441ebe7f1
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Kandeler
2019-03-12 14:07:43 +01:00
parent f1eac5f30a
commit d6dfa7fa77
7 changed files with 26 additions and 40 deletions

View File

@@ -1066,24 +1066,6 @@ void AndroidConfigurations::updateAutomaticKitList()
for (ToolChain *tc : allLanguages)
toolChainForLanguage[tc->language()] = tc;
auto initBasicKitData = [allLanguages, device](Kit *k, const QtSupport::BaseQtVersion *qt) {
k->setAutoDetected(true);
k->setAutoDetectionSource("AndroidConfiguration");
DeviceTypeKitAspect::setDeviceTypeId(k, Core::Id(Constants::ANDROID_DEVICE_TYPE));
for (ToolChain *tc : allLanguages)
ToolChainKitAspect::setToolChain(k, tc);
QtSupport::QtKitAspect::setQtVersion(k, qt);
DeviceKitAspect::setDevice(k, device);
};
const auto initStage2 = [tc](Kit *k, const QtSupport::BaseQtVersion *qt) {
Debugger::DebuggerKitAspect::setDebugger(k, findOrRegisterDebugger(tc));
AndroidGdbServerKitAspect::setGdbSever(k, currentConfig().gdbServer(tc->targetAbi()));
k->makeSticky();
k->setUnexpandedDisplayName(tr("Android for %1 (Clang %2)")
.arg(static_cast<const AndroidQtVersion *>(qt)->targetArch())
.arg(qt->displayName()));
};
for (const QtSupport::BaseQtVersion *qt : qtVersionsForArch.value(tc->targetAbi())) {
Kit *existingKit = Utils::findOrDefault(existingKits, [&](const Kit *b) {
if (qt != QtSupport::QtKitAspect::qtVersion(b))
@@ -1093,20 +1075,27 @@ void AndroidConfigurations::updateAutomaticKitList()
&& matchToolChain(toolChainForLanguage[ProjectExplorer::Constants::C_LANGUAGE_ID],
ToolChainKitAspect::toolChain(b, ProjectExplorer::Constants::C_LANGUAGE_ID));
});
if (existingKit) {
// Existing kit found.
// Update the existing kit with new data.
initBasicKitData(existingKit, qt);
initStage2(existingKit, qt);
} else {
const auto initializeKit = [&](Kit *k) {
initBasicKitData(k, qt);
initStage2(k, qt);
return true;
};
Kit * const newKit = KitManager::registerKit(initializeKit);
QTC_CHECK(!newKit != !existingKit);
}
const auto initializeKit = [allLanguages, device, tc, qt](Kit *k) {
k->setAutoDetected(true);
k->setAutoDetectionSource("AndroidConfiguration");
DeviceTypeKitAspect::setDeviceTypeId(k, Core::Id(Constants::ANDROID_DEVICE_TYPE));
for (ToolChain *tc : allLanguages)
ToolChainKitAspect::setToolChain(k, tc);
QtSupport::QtKitAspect::setQtVersion(k, qt);
DeviceKitAspect::setDevice(k, device);
Debugger::DebuggerKitAspect::setDebugger(k, findOrRegisterDebugger(tc));
AndroidGdbServerKitAspect::setGdbSever(k, currentConfig().gdbServer(tc->targetAbi()));
k->makeSticky();
k->setUnexpandedDisplayName(tr("Android for %1 (Clang %2)")
.arg(static_cast<const AndroidQtVersion *>(qt)->targetArch())
.arg(qt->displayName()));
};
if (existingKit)
initializeKit(existingKit); // Update the existing kit with new data.
else
KitManager::registerKit(initializeKit);
}
}
}