KitManager: Consider sdk kits for initial default kit

Change-Id: I86874f3d138f49d9962e11323364ba856b03bffd
Task-number: QTCREATORBUG-15002
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This commit is contained in:
Daniel Teske
2015-09-04 14:26:34 +02:00
parent 37a2cee1c6
commit 33d1a91c4f
2 changed files with 22 additions and 2 deletions

View File

@@ -109,6 +109,13 @@ typename T::value_type findOr(const T &container, typename T::value_type other,
return *it; return *it;
} }
template<typename T, typename R, typename S>
typename T::value_type findOr(const T &container, typename T::value_type other, R (S::*function)() const)
{
return findOr(container, other, std::mem_fn(function));
}
template<typename T, typename F> template<typename T, typename F>
int indexOf(const T &container, F function) int indexOf(const T &container, F function)
{ {
@@ -127,6 +134,12 @@ typename T::value_type findOrDefault(const T &container, F function)
return findOr(container, typename T::value_type(), function); return findOr(container, typename T::value_type(), function);
} }
template<typename T, typename R, typename S>
typename T::value_type findOrDefault(const T &container, R (S::*function)() const)
{
return findOr(container, typename T::value_type(), function);
}
////////////////// //////////////////
// find helpers // find helpers
////////////////// //////////////////

View File

@@ -137,6 +137,7 @@ void KitManager::restoreKits()
QList<Kit *> kitsToRegister; QList<Kit *> kitsToRegister;
QList<Kit *> kitsToValidate; QList<Kit *> kitsToValidate;
QList<Kit *> kitsToCheck; QList<Kit *> kitsToCheck;
QList<Kit *> sdkKits;
// read all kits from SDK // read all kits from SDK
QFileInfo systemSettingsFile(ICore::settings(QSettings::SystemScope)->fileName()); QFileInfo systemSettingsFile(ICore::settings(QSettings::SystemScope)->fileName());
@@ -193,6 +194,7 @@ void KitManager::restoreKits()
if (toStore == current) if (toStore == current)
toStore->setup(); toStore->setup();
addKit(toStore); addKit(toStore);
sdkKits << toStore;
} }
// Delete all loaded autodetected kits that were not rediscovered: // Delete all loaded autodetected kits that were not rediscovered:
@@ -221,10 +223,15 @@ void KitManager::restoreKits()
if (k) { if (k) {
setDefaultKit(k); setDefaultKit(k);
} else if (!defaultKit()) { } else if (!defaultKit()) {
k = Utils::findOr(kitsToRegister, 0, [](Kit *k) { return k->isValid(); }); k = Utils::findOrDefault(kitsToRegister, &Kit::isValid);
if (k) {
setDefaultKit(k);
} else {
k = Utils::findOrDefault(sdkKits, &Kit::isValid);
if (k) if (k)
setDefaultKit(k); setDefaultKit(k);
} }
}
d->m_writer = new PersistentSettingsWriter(settingsFileName(), QLatin1String("QtCreatorProfiles")); d->m_writer = new PersistentSettingsWriter(settingsFileName(), QLatin1String("QtCreatorProfiles"));
d->m_initialized = true; d->m_initialized = true;