forked from qt-creator/qt-creator
DeviceManager: Allow for replacements of devices
When adding a device with an existing internalId, the devicemanager will now replace the device with that id, calling remove on the old one and adding the new one afterwards. The DeviceManager also emits a deviceUpdated signal with the id of the device that was changed. Change-Id: I88c789de355f3e059dbf909c20f58548a2fd46fc Reviewed-by: Christian Kandeler <christian.kandeler@nokia.com>
This commit is contained in:
@@ -226,8 +226,10 @@ QString DeviceManager::settingsFilePath()
|
||||
void DeviceManager::addDevice(const IDevice::Ptr &device)
|
||||
{
|
||||
QTC_ASSERT(this != instance() || (device->isAutoDetected()), return);
|
||||
QTC_ASSERT(!device->isAutoDetected() || !findAutoDetectedDevice(d->devices, device->type(),
|
||||
device->fingerprint()), return);
|
||||
|
||||
const int pos = indexForInternalId(device->internalId());
|
||||
if (pos >= 0)
|
||||
removeDevice(pos);
|
||||
|
||||
// Ensure uniqueness of name.
|
||||
QString name = device->displayName();
|
||||
@@ -239,7 +241,8 @@ void DeviceManager::addDevice(const IDevice::Ptr &device)
|
||||
while (hasDevice(name));
|
||||
}
|
||||
device->setDisplayName(name);
|
||||
device->setInternalId(unusedId());
|
||||
if (pos < 0)
|
||||
device->setInternalId(unusedId());
|
||||
if (!defaultDevice(device->type()))
|
||||
d->defaultDevices.insert(device->type(), device->internalId());
|
||||
d->devices << device;
|
||||
@@ -258,6 +261,9 @@ void DeviceManager::addDevice(const IDevice::Ptr &device)
|
||||
}
|
||||
|
||||
emit deviceAdded(device);
|
||||
if (pos >= 0)
|
||||
emit deviceUpdated(device->internalId());
|
||||
|
||||
emit updated();
|
||||
}
|
||||
|
||||
|
@@ -73,6 +73,8 @@ public:
|
||||
static const IDeviceFactory *factoryForDeviceType(const QString &type);
|
||||
|
||||
signals:
|
||||
void deviceUpdated(ProjectExplorer::IDevice::Id id);
|
||||
|
||||
void deviceAdded(const QSharedPointer<const IDevice> &device);
|
||||
void deviceRemoved(int index);
|
||||
void displayNameChanged(int index);
|
||||
|
@@ -153,6 +153,8 @@ namespace Internal {
|
||||
class IDevicePrivate
|
||||
{
|
||||
public:
|
||||
IDevicePrivate() : internalId(IDevice::invalidId()) { }
|
||||
|
||||
QString displayName;
|
||||
QString type;
|
||||
IDevice::Origin origin;
|
||||
|
Reference in New Issue
Block a user