From 60cea5e162ec8bd1d4422cd0a2f21c5eeabc8034 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Thu, 28 Feb 2013 14:06:17 +0100 Subject: DeviceKitInformation: Warn if something goes wrong Change-Id: I23bb33a1415dd11e0dafc3d2b7dfa4e391fdcd87 Reviewed-by: Tobias Hunger --- src/plugins/projectexplorer/kitinformation.cpp | 51 ++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 7 deletions(-) (limited to 'src/plugins/projectexplorer/kitinformation.cpp') 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 #include #include +#include #include #include @@ -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 -- cgit v1.2.1