summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer/kitinformation.cpp
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@digia.com>2013-02-28 14:06:17 +0100
committerTobias Hunger <tobias.hunger@digia.com>2013-02-28 18:12:03 +0100
commit60cea5e162ec8bd1d4422cd0a2f21c5eeabc8034 (patch)
tree30330d309015a18d7bcdbbfa0320791c836e02a0 /src/plugins/projectexplorer/kitinformation.cpp
parent5063ac3105f6dd4270c5e0157011287ef58bde8b (diff)
downloadqt-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.cpp51
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