diff options
Diffstat (limited to 'src/plugins/projectexplorer/devicesupport/devicemanager.cpp')
-rw-r--r-- | src/plugins/projectexplorer/devicesupport/devicemanager.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/plugins/projectexplorer/devicesupport/devicemanager.cpp b/src/plugins/projectexplorer/devicesupport/devicemanager.cpp index 5477752854..2555c463af 100644 --- a/src/plugins/projectexplorer/devicesupport/devicemanager.cpp +++ b/src/plugins/projectexplorer/devicesupport/devicemanager.cpp @@ -161,10 +161,10 @@ void DeviceManager::loadPre2_6() QVariantMap map; foreach (const QString &key, settings->childKeys()) map.insert(key, settings->value(key)); - const IDeviceFactory *factory = factoryForDeviceType(IDevice::typeFromMap(map)); + const IDeviceFactory * const factory = restoreFactory(map); if (!factory) continue; - IDevice::Ptr device = factory->loadDevice(map); + IDevice::Ptr device = factory->restore(map); QTC_ASSERT(device, continue); d->devices << device; } @@ -182,10 +182,10 @@ void DeviceManager::fromMap(const QVariantMap &map) const QVariantList deviceList = map.value(QLatin1String(DeviceListKey)).toList(); foreach (const QVariant &v, deviceList) { const QVariantMap map = v.toMap(); - const IDeviceFactory * const factory = factoryForDeviceType(IDevice::typeFromMap(map)); + const IDeviceFactory * const factory = restoreFactory(map); if (!factory) continue; - IDevice::Ptr device = factory->loadDevice(map); + const IDevice::Ptr device = factory->restore(map); QTC_ASSERT(device, continue); if (device->isAutoDetected()) d->inactiveAutoDetectedDevices << device; @@ -320,14 +320,16 @@ void DeviceManager::setDefaultDevice(int idx) emit updated(); } -const IDeviceFactory *DeviceManager::factoryForDeviceType(const QString &type) +const IDeviceFactory *DeviceManager::restoreFactory(const QVariantMap &map) { const QList<IDeviceFactory *> &factories = ExtensionSystem::PluginManager::instance()->getObjects<IDeviceFactory>(); foreach (const IDeviceFactory * const factory, factories) { - if (factory->supportsDeviceType(type)) + if (factory->canRestore(map)) return factory; } + qWarning("Warning: No factory found for device of type '%s'.", + qPrintable(IDevice::typeFromMap(map))); return 0; } |