forked from qt-creator/qt-creator
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:
@@ -109,6 +109,13 @@ typename T::value_type findOr(const T &container, typename T::value_type other,
|
||||
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>
|
||||
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);
|
||||
}
|
||||
|
||||
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
|
||||
//////////////////
|
||||
|
||||
@@ -137,6 +137,7 @@ void KitManager::restoreKits()
|
||||
QList<Kit *> kitsToRegister;
|
||||
QList<Kit *> kitsToValidate;
|
||||
QList<Kit *> kitsToCheck;
|
||||
QList<Kit *> sdkKits;
|
||||
|
||||
// read all kits from SDK
|
||||
QFileInfo systemSettingsFile(ICore::settings(QSettings::SystemScope)->fileName());
|
||||
@@ -193,6 +194,7 @@ void KitManager::restoreKits()
|
||||
if (toStore == current)
|
||||
toStore->setup();
|
||||
addKit(toStore);
|
||||
sdkKits << toStore;
|
||||
}
|
||||
|
||||
// Delete all loaded autodetected kits that were not rediscovered:
|
||||
@@ -221,10 +223,15 @@ void KitManager::restoreKits()
|
||||
if (k) {
|
||||
setDefaultKit(k);
|
||||
} 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)
|
||||
setDefaultKit(k);
|
||||
}
|
||||
}
|
||||
|
||||
d->m_writer = new PersistentSettingsWriter(settingsFileName(), QLatin1String("QtCreatorProfiles"));
|
||||
d->m_initialized = true;
|
||||
|
||||
Reference in New Issue
Block a user