diff options
author | Tobias Hunger <tobias.hunger@digia.com> | 2013-02-28 14:06:17 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@digia.com> | 2013-02-28 18:12:03 +0100 |
commit | 60cea5e162ec8bd1d4422cd0a2f21c5eeabc8034 (patch) | |
tree | 30330d309015a18d7bcdbbfa0320791c836e02a0 /src/plugins/projectexplorer/kitinformation.cpp | |
parent | 5063ac3105f6dd4270c5e0157011287ef58bde8b (diff) | |
download | qt-creator-60cea5e162ec8bd1d4422cd0a2f21c5eeabc8034.tar.gz |
DeviceKitInformation: Warn if something goes wrong
Change-Id: I23bb33a1415dd11e0dafc3d2b7dfa4e391fdcd87
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Diffstat (limited to 'src/plugins/projectexplorer/kitinformation.cpp')
-rw-r--r-- | src/plugins/projectexplorer/kitinformation.cpp | 51 |
1 files changed, 44 insertions, 7 deletions
diff --git a/src/plugins/projectexplorer/kitinformation.cpp b/src/plugins/projectexplorer/kitinformation.cpp index 71f27e3987..f7ed99b472 100644 --- a/src/plugins/projectexplorer/kitinformation.cpp +++ b/src/plugins/projectexplorer/kitinformation.cpp @@ -40,6 +40,7 @@ #include <extensionsystem/pluginmanager.h> #include <projectexplorer/abi.h> #include <utils/pathchooser.h> +#include <utils/qtcassert.h> #include <QComboBox> #include <QHBoxLayout> @@ -336,12 +337,8 @@ static const char DEVICE_INFORMATION[] = "PE.Profile.Device"; DeviceKitInformation::DeviceKitInformation() { setObjectName(QLatin1String("DeviceInformation")); - connect(DeviceManager::instance(), SIGNAL(deviceRemoved(Core::Id)), - this, SIGNAL(validationNeeded())); - connect(DeviceManager::instance(), SIGNAL(deviceUpdated(Core::Id)), - this, SIGNAL(validationNeeded())); - connect(DeviceManager::instance(), SIGNAL(deviceUpdated(Core::Id)), - this, SLOT(deviceUpdated(Core::Id))); + connect(KitManager::instance(), SIGNAL(kitsLoaded()), + this, SLOT(kitsWereLoaded())); } Core::Id DeviceKitInformation::dataId() const @@ -381,6 +378,16 @@ void DeviceKitInformation::fix(Kit *k) if (!dev.isNull() && dev->type() == DeviceTypeKitInformation::deviceTypeId(k)) return; + setDeviceId(k, Core::Id()); +} + +void DeviceKitInformation::setup(Kit *k) +{ + QTC_ASSERT(DeviceManager::instance()->isLoaded(), return); + IDevice::ConstPtr dev = DeviceKitInformation::device(k); + if (!dev.isNull() && dev->type() == DeviceTypeKitInformation::deviceTypeId(k)) + return; + setDeviceId(k, Core::Id::fromSetting(defaultValue(k))); } @@ -403,6 +410,7 @@ KitInformation::ItemList DeviceKitInformation::toUserOutput(Kit *k) const IDevice::ConstPtr DeviceKitInformation::device(const Kit *k) { + QTC_ASSERT(DeviceManager::instance()->isLoaded(), return IDevice::ConstPtr()); DeviceManager *dm = DeviceManager::instance(); return dm ? dm->find(deviceId(k)) : IDevice::ConstPtr(); } @@ -422,11 +430,40 @@ void DeviceKitInformation::setDeviceId(Kit *k, const Core::Id id) k->setValue(DEVICE_INFORMATION, id.toSetting()); } -void DeviceKitInformation::deviceUpdated(const Core::Id &id) +void DeviceKitInformation::kitsWereLoaded() { foreach (Kit *k, KitManager::instance()->kits()) + fix(k); + + connect(DeviceManager::instance(), SIGNAL(deviceAdded(Core::Id)), + this, SLOT(deviceAdded(Core::Id))); + connect(DeviceManager::instance(), SIGNAL(deviceRemoved(Core::Id)), + this, SLOT(deviceRemoved(Core::Id))); + connect(DeviceManager::instance(), SIGNAL(deviceUpdated(Core::Id)), + this, SLOT(deviceUpdated(Core::Id))); +} + +void DeviceKitInformation::deviceUpdated(const Core::Id &id) +{ + foreach (Kit *k, KitManager::instance()->kits()) { if (deviceId(k) == id) notifyAboutUpdate(k); + } +} + +void DeviceKitInformation::deviceAdded(const Core::Id &id) +{ + Q_UNUSED(id); + DeviceMatcher m; + foreach (Kit *k, KitManager::instance()->kits(&m)) + fix(k); +} + +void DeviceKitInformation::deviceRemoved(const Core::Id &id) +{ + DeviceMatcher m(id); + foreach (Kit *k, KitManager::instance()->kits(&m)) + fix(k); } } // namespace ProjectExplorer |