ProjectExplorer: De-noise kitinformation.cpp

Change-Id: I55d443e807dc0bcd737fb8edf0dac2301e00a6c3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2022-06-29 16:22:28 +02:00
parent 7cc06b85d0
commit 451da3e104

View File

@@ -26,7 +26,6 @@
#include "kitinformation.h" #include "kitinformation.h"
#include "abi.h" #include "abi.h"
#include "devicesupport/desktopdevice.h"
#include "devicesupport/devicemanager.h" #include "devicesupport/devicemanager.h"
#include "devicesupport/devicemanagermodel.h" #include "devicesupport/devicemanagermodel.h"
#include "devicesupport/idevicefactory.h" #include "devicesupport/idevicefactory.h"
@@ -77,7 +76,7 @@ public:
SysRootKitAspectWidget(Kit *k, const KitAspect *ki) : KitAspectWidget(k, ki) SysRootKitAspectWidget(Kit *k, const KitAspect *ki) : KitAspectWidget(k, ki)
{ {
m_chooser = createSubWidget<PathChooser>(); m_chooser = createSubWidget<PathChooser>();
m_chooser->setExpectedKind(Utils::PathChooser::ExistingDirectory); m_chooser->setExpectedKind(PathChooser::ExistingDirectory);
m_chooser->setHistoryCompleter(QLatin1String("PE.SysRoot.History")); m_chooser->setHistoryCompleter(QLatin1String("PE.SysRoot.History"));
m_chooser->setFilePath(SysRootKitAspect::sysRoot(k)); m_chooser->setFilePath(SysRootKitAspect::sysRoot(k));
connect(m_chooser, &PathChooser::filePathChanged, connect(m_chooser, &PathChooser::filePathChanged,
@@ -108,7 +107,7 @@ private:
m_ignoreChange = false; m_ignoreChange = false;
} }
Utils::PathChooser *m_chooser; PathChooser *m_chooser;
bool m_ignoreChange = false; bool m_ignoreChange = false;
}; };
} // namespace Internal } // namespace Internal
@@ -126,7 +125,7 @@ SysRootKitAspect::SysRootKitAspect()
Tasks SysRootKitAspect::validate(const Kit *k) const Tasks SysRootKitAspect::validate(const Kit *k) const
{ {
Tasks result; Tasks result;
const Utils::FilePath dir = SysRootKitAspect::sysRoot(k); const FilePath dir = SysRootKitAspect::sysRoot(k);
if (dir.isEmpty()) if (dir.isEmpty())
return result; return result;
@@ -158,7 +157,7 @@ KitAspect::ItemList SysRootKitAspect::toUserOutput(const Kit *k) const
return {{tr("Sys Root"), sysRoot(k).toUserOutput()}}; return {{tr("Sys Root"), sysRoot(k).toUserOutput()}};
} }
void SysRootKitAspect::addToMacroExpander(Kit *kit, Utils::MacroExpander *expander) const void SysRootKitAspect::addToMacroExpander(Kit *kit, MacroExpander *expander) const
{ {
QTC_ASSERT(kit, return); QTC_ASSERT(kit, return);
@@ -167,28 +166,28 @@ void SysRootKitAspect::addToMacroExpander(Kit *kit, Utils::MacroExpander *expand
}); });
} }
Utils::Id SysRootKitAspect::id() Id SysRootKitAspect::id()
{ {
return "PE.Profile.SysRoot"; return "PE.Profile.SysRoot";
} }
Utils::FilePath SysRootKitAspect::sysRoot(const Kit *k) FilePath SysRootKitAspect::sysRoot(const Kit *k)
{ {
if (!k) if (!k)
return Utils::FilePath(); return FilePath();
if (!k->value(SysRootKitAspect::id()).toString().isEmpty()) if (!k->value(SysRootKitAspect::id()).toString().isEmpty())
return Utils::FilePath::fromString(k->value(SysRootKitAspect::id()).toString()); return FilePath::fromString(k->value(SysRootKitAspect::id()).toString());
for (ToolChain *tc : ToolChainKitAspect::toolChains(k)) { for (ToolChain *tc : ToolChainKitAspect::toolChains(k)) {
if (!tc->sysRoot().isEmpty()) if (!tc->sysRoot().isEmpty())
return Utils::FilePath::fromString(tc->sysRoot()); return FilePath::fromString(tc->sysRoot());
} }
return Utils::FilePath(); return FilePath();
} }
void SysRootKitAspect::setSysRoot(Kit *k, const Utils::FilePath &v) void SysRootKitAspect::setSysRoot(Kit *k, const FilePath &v)
{ {
if (!k) if (!k)
return; return;
@@ -225,14 +224,14 @@ public:
layout->setContentsMargins(0, 0, 0, 0); layout->setContentsMargins(0, 0, 0, 0);
layout->setColumnStretch(1, 2); layout->setColumnStretch(1, 2);
QList<Utils::Id> languageList = ToolChainManager::allLanguages(); QList<Id> languageList = ToolChainManager::allLanguages();
Utils::sort(languageList, [](Utils::Id l1, Utils::Id l2) { sort(languageList, [](Id l1, Id l2) {
return ToolChainManager::displayNameOfLanguageId(l1) return ToolChainManager::displayNameOfLanguageId(l1)
< ToolChainManager::displayNameOfLanguageId(l2); < ToolChainManager::displayNameOfLanguageId(l2);
}); });
QTC_ASSERT(!languageList.isEmpty(), return); QTC_ASSERT(!languageList.isEmpty(), return);
int row = 0; int row = 0;
for (Utils::Id l : qAsConst(languageList)) { for (Id l : qAsConst(languageList)) {
layout->addWidget(new QLabel(ToolChainManager::displayNameOfLanguageId(l) + ':'), row, 0); layout->addWidget(new QLabel(ToolChainManager::displayNameOfLanguageId(l) + ':'), row, 0);
auto cb = new QComboBox; auto cb = new QComboBox;
cb->setSizePolicy(QSizePolicy::Ignored, cb->sizePolicy().verticalPolicy()); cb->setSizePolicy(QSizePolicy::Ignored, cb->sizePolicy().verticalPolicy());
@@ -268,10 +267,9 @@ private:
void refresh() override void refresh() override
{ {
m_ignoreChanges = true; m_ignoreChanges = true;
const QList<Utils::Id> keys = m_languageComboboxMap.keys(); const QList<Id> keys = m_languageComboboxMap.keys();
for (const Utils::Id l : keys) { for (const Id l : keys) {
const Toolchains ltcList const Toolchains ltcList = ToolChainManager::toolchains(equal(&ToolChain::language, l));
= ToolChainManager::toolchains(Utils::equal(&ToolChain::language, l));
QComboBox *cb = m_languageComboboxMap.value(l); QComboBox *cb = m_languageComboboxMap.value(l);
cb->clear(); cb->clear();
@@ -290,13 +288,13 @@ private:
void makeReadOnly() override void makeReadOnly() override
{ {
m_isReadOnly = true; m_isReadOnly = true;
const QList<Utils::Id> keys = m_languageComboboxMap.keys(); const QList<Id> keys = m_languageComboboxMap.keys();
for (const Utils::Id l : keys) { for (const Id l : keys) {
m_languageComboboxMap.value(l)->setEnabled(false); m_languageComboboxMap.value(l)->setEnabled(false);
} }
} }
void currentToolChainChanged(Utils::Id language, int idx) void currentToolChainChanged(Id language, int idx)
{ {
if (m_ignoreChanges || idx < 0) if (m_ignoreChanges || idx < 0)
return; return;
@@ -322,7 +320,7 @@ private:
QWidget *m_mainWidget = nullptr; QWidget *m_mainWidget = nullptr;
QWidget *m_manageButton = nullptr; QWidget *m_manageButton = nullptr;
QHash<Utils::Id, QComboBox *> m_languageComboboxMap; QHash<Id, QComboBox *> m_languageComboboxMap;
bool m_ignoreChanges = false; bool m_ignoreChanges = false;
bool m_isReadOnly = false; bool m_isReadOnly = false;
}; };
@@ -343,14 +341,14 @@ ToolChainKitAspect::ToolChainKitAspect()
} }
// language id -> tool chain id // language id -> tool chain id
static QMap<Utils::Id, QByteArray> defaultToolChainIds() static QMap<Id, QByteArray> defaultToolChainIds()
{ {
QMap<Utils::Id, QByteArray> toolChains; QMap<Id, QByteArray> toolChains;
const Abi abi = Abi::hostAbi(); const Abi abi = Abi::hostAbi();
const Toolchains tcList = ToolChainManager::toolchains(Utils::equal(&ToolChain::targetAbi, abi)); const Toolchains tcList = ToolChainManager::toolchains(equal(&ToolChain::targetAbi, abi));
const QList<Utils::Id> languages = ToolChainManager::allLanguages(); const QList<Id> languages = ToolChainManager::allLanguages();
for (Utils::Id l : languages) { for (Id l : languages) {
ToolChain *tc = Utils::findOrDefault(tcList, Utils::equal(&ToolChain::language, l)); ToolChain *tc = findOrDefault(tcList, equal(&ToolChain::language, l));
toolChains.insert(l, tc ? tc->id() : QByteArray()); toolChains.insert(l, tc ? tc->id() : QByteArray());
} }
return toolChains; return toolChains;
@@ -358,7 +356,7 @@ static QMap<Utils::Id, QByteArray> defaultToolChainIds()
static QVariant defaultToolChainValue() static QVariant defaultToolChainValue()
{ {
const QMap<Utils::Id, QByteArray> toolChains = defaultToolChainIds(); const QMap<Id, QByteArray> toolChains = defaultToolChainIds();
QVariantMap result; QVariantMap result;
auto end = toolChains.end(); auto end = toolChains.end();
for (auto it = toolChains.begin(); it != end; ++it) { for (auto it = toolChains.begin(); it != end; ++it) {
@@ -393,8 +391,8 @@ void ToolChainKitAspect::upgrade(Kit *k)
{ {
QTC_ASSERT(k, return); QTC_ASSERT(k, return);
const Utils::Id oldIdV1 = KITINFORMATION_ID_V1; const Id oldIdV1 = KITINFORMATION_ID_V1;
const Utils::Id oldIdV2 = KITINFORMATION_ID_V2; const Id oldIdV2 = KITINFORMATION_ID_V2;
// upgrade <=4.1 to 4.2 (keep old settings around for now) // upgrade <=4.1 to 4.2 (keep old settings around for now)
{ {
@@ -409,11 +407,11 @@ void ToolChainKitAspect::upgrade(Kit *k)
// Used up to 4.1: // Used up to 4.1:
newValue.insert(Deprecated::Toolchain::languageId(Deprecated::Toolchain::Cxx), oldValue.toString()); newValue.insert(Deprecated::Toolchain::languageId(Deprecated::Toolchain::Cxx), oldValue.toString());
const Utils::Id typeId = DeviceTypeKitAspect::deviceTypeId(k); const Id typeId = DeviceTypeKitAspect::deviceTypeId(k);
if (typeId == Constants::DESKTOP_DEVICE_TYPE) { if (typeId == Constants::DESKTOP_DEVICE_TYPE) {
// insert default C compiler which did not exist before // insert default C compiler which did not exist before
newValue.insert(Deprecated::Toolchain::languageId(Deprecated::Toolchain::C), newValue.insert(Deprecated::Toolchain::languageId(Deprecated::Toolchain::C),
defaultToolChainIds().value(Utils::Id(Constants::C_LANGUAGE_ID))); defaultToolChainIds().value(Id(Constants::C_LANGUAGE_ID)));
} }
} }
k->setValue(oldIdV2, newValue); k->setValue(oldIdV2, newValue);
@@ -429,10 +427,10 @@ void ToolChainKitAspect::upgrade(Kit *k)
QVariantMap newValue = oldValue.toMap(); QVariantMap newValue = oldValue.toMap();
QVariantMap::iterator it = newValue.find(Deprecated::Toolchain::languageId(Deprecated::Toolchain::C)); QVariantMap::iterator it = newValue.find(Deprecated::Toolchain::languageId(Deprecated::Toolchain::C));
if (it != newValue.end()) if (it != newValue.end())
newValue.insert(Utils::Id(Constants::C_LANGUAGE_ID).toString(), it.value()); newValue.insert(Id(Constants::C_LANGUAGE_ID).toString(), it.value());
it = newValue.find(Deprecated::Toolchain::languageId(Deprecated::Toolchain::Cxx)); it = newValue.find(Deprecated::Toolchain::languageId(Deprecated::Toolchain::Cxx));
if (it != newValue.end()) if (it != newValue.end())
newValue.insert(Utils::Id(Constants::CXX_LANGUAGE_ID).toString(), it.value()); newValue.insert(Id(Constants::CXX_LANGUAGE_ID).toString(), it.value());
k->setValue(ToolChainKitAspect::id(), newValue); k->setValue(ToolChainKitAspect::id(), newValue);
k->setSticky(ToolChainKitAspect::id(), k->isSticky(oldIdV2)); k->setSticky(ToolChainKitAspect::id(), k->isSticky(oldIdV2));
} }
@@ -456,8 +454,8 @@ void ToolChainKitAspect::upgrade(Kit *k)
void ToolChainKitAspect::fix(Kit *k) void ToolChainKitAspect::fix(Kit *k)
{ {
QTC_ASSERT(ToolChainManager::isLoaded(), return); QTC_ASSERT(ToolChainManager::isLoaded(), return);
const QList<Utils::Id> languages = ToolChainManager::allLanguages(); const QList<Id> languages = ToolChainManager::allLanguages();
for (const Utils::Id l : languages) { for (const Id l : languages) {
const QByteArray tcId = toolChainId(k, l); const QByteArray tcId = toolChainId(k, l);
if (!tcId.isEmpty() && !ToolChainManager::findToolChain(tcId)) { if (!tcId.isEmpty() && !ToolChainManager::findToolChain(tcId)) {
qWarning("Tool chain set up in kit \"%s\" for \"%s\" not found.", qWarning("Tool chain set up in kit \"%s\" for \"%s\" not found.",
@@ -468,11 +466,11 @@ void ToolChainKitAspect::fix(Kit *k)
} }
} }
static Utils::Id findLanguage(const QString &ls) static Id findLanguage(const QString &ls)
{ {
QString lsUpper = ls.toUpper(); QString lsUpper = ls.toUpper();
return Utils::findOrDefault(ToolChainManager::allLanguages(), return Utils::findOrDefault(ToolChainManager::allLanguages(),
[lsUpper](Utils::Id l) { return lsUpper == l.toString().toUpper(); }); [lsUpper](Id l) { return lsUpper == l.toString().toUpper(); });
} }
void ToolChainKitAspect::setup(Kit *k) void ToolChainKitAspect::setup(Kit *k)
@@ -486,7 +484,7 @@ void ToolChainKitAspect::setup(Kit *k)
value = defaultToolChainValue().toMap(); value = defaultToolChainValue().toMap();
for (auto i = value.constBegin(); i != value.constEnd(); ++i) { for (auto i = value.constBegin(); i != value.constEnd(); ++i) {
Utils::Id l = findLanguage(i.key()); Id l = findLanguage(i.key());
if (!l.isValid()) { if (!l.isValid()) {
lockToolchains = false; lockToolchains = false;
@@ -537,14 +535,14 @@ KitAspect::ItemList ToolChainKitAspect::toUserOutput(const Kit *k) const
return {{tr("Compiler"), tc ? tc->displayName() : tr("None")}}; return {{tr("Compiler"), tc ? tc->displayName() : tr("None")}};
} }
void ToolChainKitAspect::addToBuildEnvironment(const Kit *k, Utils::Environment &env) const void ToolChainKitAspect::addToBuildEnvironment(const Kit *k, Environment &env) const
{ {
ToolChain *tc = cxxToolChain(k); ToolChain *tc = cxxToolChain(k);
if (tc) if (tc)
tc->addToEnvironment(env); tc->addToEnvironment(env);
} }
void ToolChainKitAspect::addToMacroExpander(Kit *kit, Utils::MacroExpander *expander) const void ToolChainKitAspect::addToMacroExpander(Kit *kit, MacroExpander *expander) const
{ {
QTC_ASSERT(kit, return); QTC_ASSERT(kit, return);
@@ -574,29 +572,29 @@ void ToolChainKitAspect::addToMacroExpander(Kit *kit, Utils::MacroExpander *expa
}); });
} }
QList<Utils::OutputLineParser *> ToolChainKitAspect::createOutputParsers(const Kit *k) const QList<OutputLineParser *> ToolChainKitAspect::createOutputParsers(const Kit *k) const
{ {
for (const Utils::Id langId : {Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID}) { for (const Id langId : {Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID}) {
if (const ToolChain * const tc = toolChain(k, langId)) if (const ToolChain * const tc = toolChain(k, langId))
return tc->createOutputParsers(); return tc->createOutputParsers();
} }
return {}; return {};
} }
QSet<Utils::Id> ToolChainKitAspect::availableFeatures(const Kit *k) const QSet<Id> ToolChainKitAspect::availableFeatures(const Kit *k) const
{ {
QSet<Utils::Id> result; QSet<Id> result;
for (ToolChain *tc : toolChains(k)) for (ToolChain *tc : toolChains(k))
result.insert(tc->typeId().withPrefix("ToolChain.")); result.insert(tc->typeId().withPrefix("ToolChain."));
return result; return result;
} }
Utils::Id ToolChainKitAspect::id() Id ToolChainKitAspect::id()
{ {
return KITINFORMATION_ID_V3; return KITINFORMATION_ID_V3;
} }
QByteArray ToolChainKitAspect::toolChainId(const Kit *k, Utils::Id language) QByteArray ToolChainKitAspect::toolChainId(const Kit *k, Id language)
{ {
QTC_ASSERT(ToolChainManager::isLoaded(), return nullptr); QTC_ASSERT(ToolChainManager::isLoaded(), return nullptr);
if (!k) if (!k)
@@ -605,7 +603,7 @@ QByteArray ToolChainKitAspect::toolChainId(const Kit *k, Utils::Id language)
return value.value(language.toString(), QByteArray()).toByteArray(); return value.value(language.toString(), QByteArray()).toByteArray();
} }
ToolChain *ToolChainKitAspect::toolChain(const Kit *k, Utils::Id language) ToolChain *ToolChainKitAspect::toolChain(const Kit *k, Id language)
{ {
return ToolChainManager::findToolChain(toolChainId(k, language)); return ToolChainManager::findToolChain(toolChainId(k, language));
} }
@@ -967,7 +965,7 @@ private:
QComboBox *m_comboBox; QComboBox *m_comboBox;
QWidget *m_manageButton; QWidget *m_manageButton;
DeviceManagerModel *m_model; DeviceManagerModel *m_model;
Utils::Id m_selectedId; Id m_selectedId;
}; };
} // namespace Internal } // namespace Internal
@@ -985,7 +983,7 @@ DeviceKitAspect::DeviceKitAspect()
QVariant DeviceKitAspect::defaultValue(const Kit *k) const QVariant DeviceKitAspect::defaultValue(const Kit *k) const
{ {
Utils::Id type = DeviceTypeKitAspect::deviceTypeId(k); Id type = DeviceTypeKitAspect::deviceTypeId(k);
// Use default device if that is compatible: // Use default device if that is compatible:
IDevice::ConstPtr dev = DeviceManager::instance()->defaultDevice(type); IDevice::ConstPtr dev = DeviceManager::instance()->defaultDevice(type);
if (dev && dev->isCompatibleWith(k)) if (dev && dev->isCompatibleWith(k))
@@ -1021,7 +1019,7 @@ void DeviceKitAspect::fix(Kit *k)
if (!dev.isNull() && !dev->isCompatibleWith(k)) { if (!dev.isNull() && !dev->isCompatibleWith(k)) {
qWarning("Device is no longer compatible with kit \"%s\", removing it.", qWarning("Device is no longer compatible with kit \"%s\", removing it.",
qPrintable(k->displayName())); qPrintable(k->displayName()));
setDeviceId(k, Utils::Id()); setDeviceId(k, Id());
} }
} }
@@ -1032,7 +1030,7 @@ void DeviceKitAspect::setup(Kit *k)
if (!dev.isNull() && dev->isCompatibleWith(k)) if (!dev.isNull() && dev->isCompatibleWith(k))
return; return;
setDeviceId(k, Utils::Id::fromSetting(defaultValue(k))); setDeviceId(k, Id::fromSetting(defaultValue(k)));
} }
KitAspectWidget *DeviceKitAspect::createConfigWidget(Kit *k) const KitAspectWidget *DeviceKitAspect::createConfigWidget(Kit *k) const
@@ -1053,7 +1051,7 @@ KitAspect::ItemList DeviceKitAspect::toUserOutput(const Kit *k) const
return {{tr("Device"), dev.isNull() ? tr("Unconfigured") : dev->displayName()}}; return {{tr("Device"), dev.isNull() ? tr("Unconfigured") : dev->displayName()}};
} }
void DeviceKitAspect::addToMacroExpander(Kit *kit, Utils::MacroExpander *expander) const void DeviceKitAspect::addToMacroExpander(Kit *kit, MacroExpander *expander) const
{ {
QTC_ASSERT(kit, return); QTC_ASSERT(kit, return);
expander->registerVariable("Device:HostAddress", tr("Host address"), expander->registerVariable("Device:HostAddress", tr("Host address"),
@@ -1083,7 +1081,7 @@ void DeviceKitAspect::addToMacroExpander(Kit *kit, Utils::MacroExpander *expande
}); });
} }
Utils::Id DeviceKitAspect::id() Id DeviceKitAspect::id()
{ {
return "PE.Profile.Device"; return "PE.Profile.Device";
} }
@@ -1094,17 +1092,17 @@ IDevice::ConstPtr DeviceKitAspect::device(const Kit *k)
return DeviceManager::instance()->find(deviceId(k)); return DeviceManager::instance()->find(deviceId(k));
} }
Utils::Id DeviceKitAspect::deviceId(const Kit *k) Id DeviceKitAspect::deviceId(const Kit *k)
{ {
return k ? Utils::Id::fromSetting(k->value(DeviceKitAspect::id())) : Utils::Id(); return k ? Id::fromSetting(k->value(DeviceKitAspect::id())) : Id();
} }
void DeviceKitAspect::setDevice(Kit *k, IDevice::ConstPtr dev) void DeviceKitAspect::setDevice(Kit *k, IDevice::ConstPtr dev)
{ {
setDeviceId(k, dev ? dev->id() : Utils::Id()); setDeviceId(k, dev ? dev->id() : Id());
} }
void DeviceKitAspect::setDeviceId(Kit *k, Utils::Id id) void DeviceKitAspect::setDeviceId(Kit *k, Id id)
{ {
QTC_ASSERT(k, return); QTC_ASSERT(k, return);
k->setValue(DeviceKitAspect::id(), id.toSetting()); k->setValue(DeviceKitAspect::id(), id.toSetting());
@@ -1135,7 +1133,7 @@ void DeviceKitAspect::kitsWereLoaded()
this, &DeviceKitAspect::kitUpdated); this, &DeviceKitAspect::kitUpdated);
} }
void DeviceKitAspect::deviceUpdated(Utils::Id id) void DeviceKitAspect::deviceUpdated(Id id)
{ {
const QList<Kit *> kits = KitManager::kits(); const QList<Kit *> kits = KitManager::kits();
for (Kit *k : kits) { for (Kit *k : kits) {
@@ -1203,7 +1201,7 @@ private:
void refresh() override void refresh() override
{ {
QList<Utils::Id> blackList; QList<Id> blackList;
const DeviceManager *dm = DeviceManager::instance(); const DeviceManager *dm = DeviceManager::instance();
for (int i = 0; i < dm->deviceCount(); ++i) { for (int i = 0; i < dm->deviceCount(); ++i) {
IDevice::ConstPtr device = dm->deviceAt(i); IDevice::ConstPtr device = dm->deviceAt(i);
@@ -1299,7 +1297,7 @@ KitAspect::ItemList BuildDeviceKitAspect::toUserOutput(const Kit *k) const
return {{tr("Build device"), dev.isNull() ? tr("Unconfigured") : dev->displayName()}}; return {{tr("Build device"), dev.isNull() ? tr("Unconfigured") : dev->displayName()}};
} }
void BuildDeviceKitAspect::addToMacroExpander(Kit *kit, Utils::MacroExpander *expander) const void BuildDeviceKitAspect::addToMacroExpander(Kit *kit, MacroExpander *expander) const
{ {
QTC_ASSERT(kit, return); QTC_ASSERT(kit, return);
expander->registerVariable("BuildDevice:HostAddress", tr("Build host address"), expander->registerVariable("BuildDevice:HostAddress", tr("Build host address"),
@@ -1329,7 +1327,7 @@ void BuildDeviceKitAspect::addToMacroExpander(Kit *kit, Utils::MacroExpander *ex
}); });
} }
Utils::Id BuildDeviceKitAspect::id() Id BuildDeviceKitAspect::id()
{ {
return "PE.Profile.BuildDevice"; return "PE.Profile.BuildDevice";
} }
@@ -1343,17 +1341,17 @@ IDevice::ConstPtr BuildDeviceKitAspect::device(const Kit *k)
return dev; return dev;
} }
Utils::Id BuildDeviceKitAspect::deviceId(const Kit *k) Id BuildDeviceKitAspect::deviceId(const Kit *k)
{ {
return k ? Utils::Id::fromSetting(k->value(BuildDeviceKitAspect::id())) : Utils::Id(); return k ? Id::fromSetting(k->value(BuildDeviceKitAspect::id())) : Id();
} }
void BuildDeviceKitAspect::setDevice(Kit *k, IDevice::ConstPtr dev) void BuildDeviceKitAspect::setDevice(Kit *k, IDevice::ConstPtr dev)
{ {
setDeviceId(k, dev ? dev->id() : Utils::Id()); setDeviceId(k, dev ? dev->id() : Id());
} }
void BuildDeviceKitAspect::setDeviceId(Kit *k, Utils::Id id) void BuildDeviceKitAspect::setDeviceId(Kit *k, Id id)
{ {
QTC_ASSERT(k, return); QTC_ASSERT(k, return);
k->setValue(BuildDeviceKitAspect::id(), id.toSetting()); k->setValue(BuildDeviceKitAspect::id(), id.toSetting());
@@ -1377,7 +1375,7 @@ void BuildDeviceKitAspect::kitsWereLoaded()
this, &BuildDeviceKitAspect::kitUpdated); this, &BuildDeviceKitAspect::kitUpdated);
} }
void BuildDeviceKitAspect::deviceUpdated(Utils::Id id) void BuildDeviceKitAspect::deviceUpdated(Id id)
{ {
const QList<Kit *> kits = KitManager::kits(); const QList<Kit *> kits = KitManager::kits();
for (Kit *k : kits) { for (Kit *k : kits) {
@@ -1409,14 +1407,14 @@ class EnvironmentKitAspectWidget final : public KitAspectWidget
public: public:
EnvironmentKitAspectWidget(Kit *workingCopy, const KitAspect *ki) EnvironmentKitAspectWidget(Kit *workingCopy, const KitAspect *ki)
: KitAspectWidget(workingCopy, ki), : KitAspectWidget(workingCopy, ki),
m_summaryLabel(createSubWidget<Utils::ElidingLabel>()), m_summaryLabel(createSubWidget<ElidingLabel>()),
m_manageButton(createSubWidget<QPushButton>()), m_manageButton(createSubWidget<QPushButton>()),
m_mainWidget(createSubWidget<QWidget>()) m_mainWidget(createSubWidget<QWidget>())
{ {
auto *layout = new QVBoxLayout; auto *layout = new QVBoxLayout;
layout->setContentsMargins(0, 0, 0, 0); layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(m_summaryLabel); layout->addWidget(m_summaryLabel);
if (Utils::HostOsInfo::isWindowsHost()) if (HostOsInfo::isWindowsHost())
initMSVCOutputSwitch(layout); initMSVCOutputSwitch(layout);
m_mainWidget->setLayout(layout); m_mainWidget->setLayout(layout);
refresh(); refresh();
@@ -1437,26 +1435,26 @@ private:
void refresh() override void refresh() override
{ {
const Utils::EnvironmentItems changes = currentEnvironment(); const EnvironmentItems changes = currentEnvironment();
const QString shortSummary = Utils::EnvironmentItem::toStringList(changes).join("; "); const QString shortSummary = EnvironmentItem::toStringList(changes).join("; ");
m_summaryLabel->setText(shortSummary.isEmpty() ? tr("No changes to apply.") : shortSummary); m_summaryLabel->setText(shortSummary.isEmpty() ? tr("No changes to apply.") : shortSummary);
} }
void editEnvironmentChanges() void editEnvironmentChanges()
{ {
Utils::MacroExpander *expander = m_kit->macroExpander(); MacroExpander *expander = m_kit->macroExpander();
Utils::EnvironmentDialog::Polisher polisher = [expander](QWidget *w) { EnvironmentDialog::Polisher polisher = [expander](QWidget *w) {
Utils::VariableChooser::addSupportForChildWidgets(w, expander); VariableChooser::addSupportForChildWidgets(w, expander);
}; };
auto changes = Utils::EnvironmentDialog::getEnvironmentItems(m_summaryLabel, auto changes = EnvironmentDialog::getEnvironmentItems(m_summaryLabel,
currentEnvironment(), currentEnvironment(),
QString(), QString(),
polisher); polisher);
if (!changes) if (!changes)
return; return;
if (Utils::HostOsInfo::isWindowsHost()) { if (HostOsInfo::isWindowsHost()) {
const Utils::EnvironmentItem forceMSVCEnglishItem("VSLANG", "1033"); const EnvironmentItem forceMSVCEnglishItem("VSLANG", "1033");
if (m_vslangCheckbox->isChecked() && changes->indexOf(forceMSVCEnglishItem) < 0) if (m_vslangCheckbox->isChecked() && changes->indexOf(forceMSVCEnglishItem) < 0)
changes->append(forceMSVCEnglishItem); changes->append(forceMSVCEnglishItem);
} }
@@ -1464,19 +1462,19 @@ private:
EnvironmentKitAspect::setEnvironmentChanges(m_kit, *changes); EnvironmentKitAspect::setEnvironmentChanges(m_kit, *changes);
} }
Utils::EnvironmentItems currentEnvironment() const EnvironmentItems currentEnvironment() const
{ {
Utils::EnvironmentItems changes = EnvironmentKitAspect::environmentChanges(m_kit); EnvironmentItems changes = EnvironmentKitAspect::environmentChanges(m_kit);
if (Utils::HostOsInfo::isWindowsHost()) { if (HostOsInfo::isWindowsHost()) {
const Utils::EnvironmentItem forceMSVCEnglishItem("VSLANG", "1033"); const EnvironmentItem forceMSVCEnglishItem("VSLANG", "1033");
if (changes.indexOf(forceMSVCEnglishItem) >= 0) { if (changes.indexOf(forceMSVCEnglishItem) >= 0) {
m_vslangCheckbox->setCheckState(Qt::Checked); m_vslangCheckbox->setCheckState(Qt::Checked);
changes.removeAll(forceMSVCEnglishItem); changes.removeAll(forceMSVCEnglishItem);
} }
} }
Utils::sort(changes, [](const Utils::EnvironmentItem &lhs, const Utils::EnvironmentItem &rhs) sort(changes, [](const EnvironmentItem &lhs, const EnvironmentItem &rhs)
{ return QString::localeAwareCompare(lhs.name, rhs.name) < 0; }); { return QString::localeAwareCompare(lhs.name, rhs.name) < 0; });
return changes; return changes;
} }
@@ -1489,8 +1487,8 @@ private:
"just forces UTF-8 output (may vary depending on the used MSVC " "just forces UTF-8 output (may vary depending on the used MSVC "
"compiler).")); "compiler)."));
connect(m_vslangCheckbox, &QCheckBox::toggled, this, [this](bool checked) { connect(m_vslangCheckbox, &QCheckBox::toggled, this, [this](bool checked) {
Utils::EnvironmentItems changes = EnvironmentKitAspect::environmentChanges(m_kit); EnvironmentItems changes = EnvironmentKitAspect::environmentChanges(m_kit);
const Utils::EnvironmentItem forceMSVCEnglishItem("VSLANG", "1033"); const EnvironmentItem forceMSVCEnglishItem("VSLANG", "1033");
if (!checked && changes.indexOf(forceMSVCEnglishItem) >= 0) if (!checked && changes.indexOf(forceMSVCEnglishItem) >= 0)
changes.removeAll(forceMSVCEnglishItem); changes.removeAll(forceMSVCEnglishItem);
if (checked && changes.indexOf(forceMSVCEnglishItem) < 0) if (checked && changes.indexOf(forceMSVCEnglishItem) < 0)
@@ -1499,7 +1497,7 @@ private:
}); });
} }
Utils::ElidingLabel *m_summaryLabel; ElidingLabel *m_summaryLabel;
QPushButton *m_manageButton; QPushButton *m_manageButton;
QCheckBox *m_vslangCheckbox; QCheckBox *m_vslangCheckbox;
QWidget *m_mainWidget; QWidget *m_mainWidget;
@@ -1534,16 +1532,16 @@ void EnvironmentKitAspect::fix(Kit *k)
const QVariant variant = k->value(EnvironmentKitAspect::id()); const QVariant variant = k->value(EnvironmentKitAspect::id());
if (!variant.isNull() && !variant.canConvert(QVariant::List)) { if (!variant.isNull() && !variant.canConvert(QVariant::List)) {
qWarning("Kit \"%s\" has a wrong environment value set.", qPrintable(k->displayName())); qWarning("Kit \"%s\" has a wrong environment value set.", qPrintable(k->displayName()));
setEnvironmentChanges(k, Utils::EnvironmentItems()); setEnvironmentChanges(k, EnvironmentItems());
} }
} }
void EnvironmentKitAspect::addToBuildEnvironment(const Kit *k, Environment &env) const void EnvironmentKitAspect::addToBuildEnvironment(const Kit *k, Environment &env) const
{ {
const QStringList values const QStringList values
= Utils::transform(Utils::EnvironmentItem::toStringList(environmentChanges(k)), = transform(EnvironmentItem::toStringList(environmentChanges(k)),
[k](const QString &v) { return k->macroExpander()->expand(v); }); [k](const QString &v) { return k->macroExpander()->expand(v); });
env.modify(Utils::EnvironmentItem::fromStringList(values)); env.modify(EnvironmentItem::fromStringList(values));
} }
void EnvironmentKitAspect::addToRunEnvironment(const Kit *k, Environment &env) const void EnvironmentKitAspect::addToRunEnvironment(const Kit *k, Environment &env) const
@@ -1560,25 +1558,25 @@ KitAspectWidget *EnvironmentKitAspect::createConfigWidget(Kit *k) const
KitAspect::ItemList EnvironmentKitAspect::toUserOutput(const Kit *k) const KitAspect::ItemList EnvironmentKitAspect::toUserOutput(const Kit *k) const
{ {
return { qMakePair(tr("Environment"), return { qMakePair(tr("Environment"),
Utils::EnvironmentItem::toStringList(environmentChanges(k)).join("<br>")) }; EnvironmentItem::toStringList(environmentChanges(k)).join("<br>")) };
} }
Utils::Id EnvironmentKitAspect::id() Id EnvironmentKitAspect::id()
{ {
return "PE.Profile.Environment"; return "PE.Profile.Environment";
} }
Utils::EnvironmentItems EnvironmentKitAspect::environmentChanges(const Kit *k) EnvironmentItems EnvironmentKitAspect::environmentChanges(const Kit *k)
{ {
if (k) if (k)
return Utils::EnvironmentItem::fromStringList(k->value(EnvironmentKitAspect::id()).toStringList()); return EnvironmentItem::fromStringList(k->value(EnvironmentKitAspect::id()).toStringList());
return Utils::EnvironmentItems(); return EnvironmentItems();
} }
void EnvironmentKitAspect::setEnvironmentChanges(Kit *k, const Utils::EnvironmentItems &changes) void EnvironmentKitAspect::setEnvironmentChanges(Kit *k, const EnvironmentItems &changes)
{ {
if (k) if (k)
k->setValue(EnvironmentKitAspect::id(), Utils::EnvironmentItem::toStringList(changes)); k->setValue(EnvironmentKitAspect::id(), EnvironmentItem::toStringList(changes));
} }
} // namespace ProjectExplorer } // namespace ProjectExplorer