added addconfigureddevice for descriptors to devicemanager

pull/1/head
Michael Zanetti 2014-04-13 23:27:00 +02:00
parent 2d84223ad6
commit 29c6fa4071
4 changed files with 40 additions and 3 deletions

View File

@ -180,6 +180,24 @@ DeviceManager::DeviceError DeviceManager::addConfiguredDevice(const DeviceClassI
return DeviceErrorCreationMethodNotSupported;
}
DeviceManager::DeviceError DeviceManager::addConfiguredDevice(const DeviceClassId &deviceClassId, const DeviceDescriptorId &deviceDescriptorId)
{
DeviceClass deviceClass = findDeviceClass(deviceClassId);
if (!deviceClass.isValid()) {
return DeviceErrorDeviceClassNotFound;
}
if (deviceClass.createMethod() != DeviceClass::CreateMethodDiscovery) {
return DeviceErrorCreationMethodNotSupported;
}
DeviceDescriptor descriptor = m_discoveredDevices.take(deviceClassId).take(deviceDescriptorId);
if (!descriptor.isValid()) {
return DeviceErrorDeviceDescriptorNotFound;
}
return addConfiguredDeviceInternal(deviceClassId, descriptor.params());
}
DeviceManager::DeviceError DeviceManager::addConfiguredDeviceInternal(const DeviceClassId &deviceClassId, const QVariantMap &params, const DeviceId id)
{
DeviceClass deviceClass = findDeviceClass(deviceClassId);
@ -435,7 +453,11 @@ void DeviceManager::createNewAutoDevices()
void DeviceManager::slotDevicesDiscovered(const DeviceClassId &deviceClassId, const QList<DeviceDescriptor> deviceDescriptors)
{
m_discoveredDevices[deviceClassId] = deviceDescriptors;
QHash<DeviceDescriptorId, DeviceDescriptor> descriptorHash;
foreach (const DeviceDescriptor &descriptor, deviceDescriptors) {
descriptorHash.insert(descriptor.id(), descriptor);
}
m_discoveredDevices[deviceClassId] = descriptorHash;
emit devicesDiscovered(deviceClassId, deviceDescriptors);
}

View File

@ -57,7 +57,8 @@ public:
DeviceErrorDuplicateUuid,
DeviceErrorCreationMethodNotSupported,
DeviceErrorDeviceParameterError,
DeviceErrorActionParameterError
DeviceErrorActionParameterError,
DeviceErrorDeviceDescriptorNotFound
};
explicit DeviceManager(QObject *parent = 0);
@ -72,6 +73,7 @@ public:
QList<Device*> configuredDevices() const;
DeviceError addConfiguredDevice(const DeviceClassId &deviceClassId, const QVariantMap &params, const DeviceId id = DeviceId::createDeviceId());
DeviceError addConfiguredDevice(const DeviceClassId &deviceClassId, const DeviceDescriptorId &deviceDescriptorId);
DeviceError removeConfiguredDevice(const DeviceId &deviceId);
Device* findConfiguredDevice(const DeviceId &id) const;
@ -108,7 +110,7 @@ private:
QHash<VendorId, QList<DeviceClassId> > m_vendorDeviceMap;
QHash<DeviceClassId, DeviceClass> m_supportedDevices;
QList<Device*> m_configuredDevices;
QHash<DeviceClassId, QList<DeviceDescriptor> > m_discoveredDevices;
QHash<DeviceClassId, QHash<DeviceDescriptorId, DeviceDescriptor> > m_discoveredDevices;
QHash<PluginId, DevicePlugin*> m_devicePlugins;

View File

@ -1,5 +1,10 @@
#include "devicedescriptor.h"
DeviceDescriptor::DeviceDescriptor()
{
}
DeviceDescriptor::DeviceDescriptor(const DeviceDescriptorId &id, const DeviceClassId &deviceClassId, const QString &title, const QString &description) :
m_id(id),
m_deviceClassId(deviceClassId),
@ -8,6 +13,11 @@ DeviceDescriptor::DeviceDescriptor(const DeviceDescriptorId &id, const DeviceCla
{
}
bool DeviceDescriptor::isValid() const
{
return !m_id.isNull() && !m_deviceClassId.isNull();
}
DeviceDescriptorId DeviceDescriptor::id() const
{
return m_id;

View File

@ -8,8 +8,11 @@
class DeviceDescriptor
{
public:
DeviceDescriptor();
DeviceDescriptor(const DeviceDescriptorId &id, const DeviceClassId &deviceClassId, const QString &title = QString(), const QString &description = QString());
bool isValid() const;
DeviceDescriptorId id() const;
DeviceClassId deviceClassId() const;