From bafd3f0b143e07b8074a35195b43165f9f83c33b Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@nokia.com>
Date: Fri, 13 Apr 2012 15:58:55 +0200
Subject: [PATCH] IDevice: Make id creation (a bit) less magic

Change-Id: Icf5743a5b5a6305d18860cf6f87d70079c3effbc
Reviewed-by: Christian Kandeler <christian.kandeler@nokia.com>
---
 src/plugins/madde/maddedevice.cpp             |  8 +++----
 src/plugins/madde/maddedevice.h               |  4 ++--
 .../devicesupport/devicemanager.cpp           |  7 +++---
 .../devicesupport/devicemanager.h             |  3 +--
 .../projectexplorer/devicesupport/idevice.cpp | 24 +++++++++----------
 .../projectexplorer/devicesupport/idevice.h   |  6 +++--
 .../qt-s60/symbianidevice.cpp                 |  2 +-
 .../remotelinux/linuxdeviceconfiguration.cpp  |  8 +++----
 .../remotelinux/linuxdeviceconfiguration.h    |  4 ++--
 9 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/src/plugins/madde/maddedevice.cpp b/src/plugins/madde/maddedevice.cpp
index 0cb4973b239..e92644536f6 100644
--- a/src/plugins/madde/maddedevice.cpp
+++ b/src/plugins/madde/maddedevice.cpp
@@ -54,9 +54,9 @@ MaddeDevice::Ptr MaddeDevice::create()
 }
 
 MaddeDevice::Ptr MaddeDevice::create(const QString &name, const QString &type,
-        MachineType machineType, Origin origin, const QString &fingerprint)
+        MachineType machineType, Origin origin, const Core::Id &id)
 {
-    return Ptr(new MaddeDevice(name, type, machineType, origin, fingerprint));
+    return Ptr(new MaddeDevice(name, type, machineType, origin, id));
 }
 
 MaddeDevice::MaddeDevice()
@@ -64,8 +64,8 @@ MaddeDevice::MaddeDevice()
 }
 
 MaddeDevice::MaddeDevice(const QString &name, const QString &type, MachineType machineType,
-        Origin origin, const QString &fingerprint)
-    : LinuxDeviceConfiguration(name, type, machineType, origin, fingerprint)
+        Origin origin, const Core::Id &id)
+    : LinuxDeviceConfiguration(name, type, machineType, origin, id)
 {
 }
 
diff --git a/src/plugins/madde/maddedevice.h b/src/plugins/madde/maddedevice.h
index 217e0a26d8a..d63ef3233f5 100644
--- a/src/plugins/madde/maddedevice.h
+++ b/src/plugins/madde/maddedevice.h
@@ -48,7 +48,7 @@ public:
 
     static Ptr create();
     static Ptr create(const QString &name, const QString &type, MachineType machineType,
-        Origin origin = ManuallyAdded, const QString &fingerprint = QString());
+                      Origin origin = ManuallyAdded, const Core::Id &id = Core::Id());
 
     QString displayType() const;
     QStringList actionIds() const;
@@ -60,7 +60,7 @@ public:
 private:
     MaddeDevice();
     MaddeDevice(const QString &name, const QString &type, MachineType machineType,
-        Origin origin, const QString &fingerprint);
+                Origin origin, const Core::Id &id);
 
     MaddeDevice(const MaddeDevice &other);
 };
diff --git a/src/plugins/projectexplorer/devicesupport/devicemanager.cpp b/src/plugins/projectexplorer/devicesupport/devicemanager.cpp
index 2555c463afa..45cb93088aa 100644
--- a/src/plugins/projectexplorer/devicesupport/devicemanager.cpp
+++ b/src/plugins/projectexplorer/devicesupport/devicemanager.cpp
@@ -54,9 +54,8 @@ namespace ProjectExplorer {
 namespace Internal {
 
 static IDevice::Ptr findAutoDetectedDevice(const QList<IDevice::Ptr> &deviceList,
-        const QString &type, const QString &fingerprint)
+        const QString &type, const Core::Id id)
 {
-    const Core::Id id(fingerprint);
     foreach (const IDevice::Ptr &device, deviceList) {
         if (device->isAutoDetected() && device->type() == type && device->id() == id)
             return device;
@@ -372,9 +371,9 @@ IDevice::ConstPtr DeviceManager::find(const Core::Id &id) const
 }
 
 IDevice::ConstPtr DeviceManager::findInactiveAutoDetectedDevice(const QString &type,
-        const QString &fingerprint)
+                                                                const Core::Id id)
 {
-    return findAutoDetectedDevice(d->inactiveAutoDetectedDevices, type, fingerprint);
+    return findAutoDetectedDevice(d->inactiveAutoDetectedDevices, type, id);
 }
 
 IDevice::ConstPtr DeviceManager::defaultDevice(const QString &deviceType) const
diff --git a/src/plugins/projectexplorer/devicesupport/devicemanager.h b/src/plugins/projectexplorer/devicesupport/devicemanager.h
index 5ab22fa7c1f..03a0d4253e3 100644
--- a/src/plugins/projectexplorer/devicesupport/devicemanager.h
+++ b/src/plugins/projectexplorer/devicesupport/devicemanager.h
@@ -61,8 +61,7 @@ public:
     int deviceCount() const;
     IDevice::ConstPtr deviceAt(int index) const;
     IDevice::ConstPtr find(const Core::Id &id) const;
-    IDevice::ConstPtr findInactiveAutoDetectedDevice(const QString &type,
-        const QString &fingerprint);
+    IDevice::ConstPtr findInactiveAutoDetectedDevice(const QString &type, const Core::Id id);
     IDevice::ConstPtr defaultDevice(const QString &deviceType) const;
     bool hasDevice(const QString &name) const;
     Core::Id deviceId(const IDevice::ConstPtr &device) const;
diff --git a/src/plugins/projectexplorer/devicesupport/idevice.cpp b/src/plugins/projectexplorer/devicesupport/idevice.cpp
index 5c120e1d50d..683c9377b2a 100644
--- a/src/plugins/projectexplorer/devicesupport/idevice.cpp
+++ b/src/plugins/projectexplorer/devicesupport/idevice.cpp
@@ -78,10 +78,10 @@
  */
 
 /*!
- * \fn Core::Id ProjectExplorer::IDevice::internalId() const
- * \brief Identify the device internally.
- * If a fingerprint is given when constructing the device, the id will be derived from it, and
- * the fingerprint can later be retrieved from the id.
+ * \fn Core::Id ProjectExplorer::IDevice::id() const
+ * \brief Identify the device.
+ * If an id is given when constructing a device then this id is used. Otherwise a UUID is
+ * generated and used to identity the device.
  * \sa ProjectExplorer::DeviceManager::findInactiveAutoDetectedDevice()
  */
 
@@ -148,7 +148,7 @@ namespace ProjectExplorer {
 
 const char DisplayNameKey[] = "Name";
 const char TypeKey[] = "OsType";
-const char InternalIdKey[] = "InternalId";
+const char IdKey[] = "InternalId";
 const char OriginKey[] = "Origin";
 
 namespace Internal {
@@ -158,7 +158,7 @@ public:
     QString displayName;
     QString type;
     IDevice::Origin origin;
-    Core::Id internalId;
+    Core::Id id;
     IDevice::AvailabilityState availability;
 };
 } // namespace Internal
@@ -167,13 +167,13 @@ IDevice::IDevice() : d(new Internal::IDevicePrivate)
 {
 }
 
-IDevice::IDevice(const QString &type, Origin origin, const QString &fingerprint)
+IDevice::IDevice(const QString &type, Origin origin, const Core::Id &id)
     : d(new Internal::IDevicePrivate)
 {
     d->type = type;
     d->origin = origin;
-    QTC_CHECK(origin == ManuallyAdded || !fingerprint.isEmpty());
-    d->internalId = fingerprint.isEmpty() ? newId() : Core::Id(fingerprint);
+    QTC_CHECK(origin == ManuallyAdded || id.isValid());
+    d->id = id.isValid() ? id : newId();
     d->availability = DeviceAvailabilityUnknown;
 }
 
@@ -227,7 +227,7 @@ bool IDevice::isAutoDetected() const
 
 Core::Id IDevice::id() const
 {
-    return d->internalId;
+    return d->id;
 }
 
 IDevice::AvailabilityState IDevice::availability() const
@@ -256,7 +256,7 @@ void IDevice::fromMap(const QVariantMap &map)
 {
     d->type = typeFromMap(map);
     d->displayName = map.value(QLatin1String(DisplayNameKey)).toString();
-    d->internalId = Core::Id(map.value(QLatin1String(InternalIdKey), newId().toString()).toString());
+    d->id = Core::Id(map.value(QLatin1String(IdKey), newId().name()).toByteArray().constData());
     d->origin = static_cast<Origin>(map.value(QLatin1String(OriginKey), ManuallyAdded).toInt());
 }
 
@@ -265,7 +265,7 @@ QVariantMap IDevice::toMap() const
     QVariantMap map;
     map.insert(QLatin1String(DisplayNameKey), d->displayName);
     map.insert(QLatin1String(TypeKey), d->type);
-    map.insert(QLatin1String(InternalIdKey), d->internalId.toString());
+    map.insert(QLatin1String(IdKey), d->id.name());
     map.insert(QLatin1String(OriginKey), d->origin);
     return map;
 }
diff --git a/src/plugins/projectexplorer/devicesupport/idevice.h b/src/plugins/projectexplorer/devicesupport/idevice.h
index f5d77d4fc99..1354a183e9d 100644
--- a/src/plugins/projectexplorer/devicesupport/idevice.h
+++ b/src/plugins/projectexplorer/devicesupport/idevice.h
@@ -32,7 +32,9 @@
 #ifndef IDEVICE_H
 #define IDEVICE_H
 
-#include <projectexplorer/projectexplorer_export.h>
+#include "../projectexplorer_export.h"
+
+#include <coreplugin/id.h>
 
 #include <coreplugin/id.h>
 
@@ -99,7 +101,7 @@ public:
 
 protected:
     IDevice();
-    IDevice(const QString &type, Origin origin, const QString &fingerprint = QString());
+    IDevice(const QString &type, Origin origin, const Core::Id &id = Core::Id());
     IDevice(const IDevice &other);
 
     Ptr sharedFromThis();
diff --git a/src/plugins/qt4projectmanager/qt-s60/symbianidevice.cpp b/src/plugins/qt4projectmanager/qt-s60/symbianidevice.cpp
index 2c31947a220..15f51a32c5a 100644
--- a/src/plugins/qt4projectmanager/qt-s60/symbianidevice.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/symbianidevice.cpp
@@ -53,7 +53,7 @@ namespace Qt4ProjectManager {
 SymbianIDevice::SymbianIDevice() :
     ProjectExplorer::IDevice(Internal::SymbianIDeviceFactory::deviceType(),
                              ProjectExplorer::IDevice::AutoDetected,
-                             QLatin1String("Symbian Device")),
+                             Core::Id("Symbian Device")),
     m_port(QLatin1String(DEFAULT_CODA_TCP_PORT)),
     m_communicationChannel(CommunicationCodaSerialConnection)
 {
diff --git a/src/plugins/remotelinux/linuxdeviceconfiguration.cpp b/src/plugins/remotelinux/linuxdeviceconfiguration.cpp
index 849da2b794f..e11c38f2526 100644
--- a/src/plugins/remotelinux/linuxdeviceconfiguration.cpp
+++ b/src/plugins/remotelinux/linuxdeviceconfiguration.cpp
@@ -84,9 +84,9 @@ LinuxDeviceConfiguration::~LinuxDeviceConfiguration()
 }
 
 LinuxDeviceConfiguration::Ptr LinuxDeviceConfiguration::create(const QString &name,
-   const QString &type, MachineType machineType, Origin origin, const QString &fingerprint)
+   const QString &type, MachineType machineType, Origin origin, const Core::Id &id)
 {
-    return Ptr(new LinuxDeviceConfiguration(name, type, machineType, origin, fingerprint));
+    return Ptr(new LinuxDeviceConfiguration(name, type, machineType, origin, id));
 }
 
 QString LinuxDeviceConfiguration::displayType() const
@@ -140,8 +140,8 @@ LinuxDeviceConfiguration::LinuxDeviceConfiguration() : d(new LinuxDeviceConfigur
 }
 
 LinuxDeviceConfiguration::LinuxDeviceConfiguration(const QString &name, const QString &type,
-        MachineType machineType, Origin origin, const QString &fingerprint)
-    : IDevice(type, origin, fingerprint), d(new LinuxDeviceConfigurationPrivate)
+        MachineType machineType, Origin origin, const Core::Id &id)
+    : IDevice(type, origin, id), d(new LinuxDeviceConfigurationPrivate)
 {
     setDisplayName(name);
     d->machineType = machineType;
diff --git a/src/plugins/remotelinux/linuxdeviceconfiguration.h b/src/plugins/remotelinux/linuxdeviceconfiguration.h
index ca94388dfd4..b8043666a95 100644
--- a/src/plugins/remotelinux/linuxdeviceconfiguration.h
+++ b/src/plugins/remotelinux/linuxdeviceconfiguration.h
@@ -71,7 +71,7 @@ public:
 
     static Ptr create();
     static Ptr create(const QString &name, const QString &type, MachineType machineType,
-        Origin origin = ManuallyAdded, const QString &fingerprint = QString());
+                      Origin origin = ManuallyAdded, const Core::Id &id = Core::Id());
 
     QString displayType() const;
     ProjectExplorer::IDeviceWidget *createWidget();
@@ -84,7 +84,7 @@ public:
 protected:
     LinuxDeviceConfiguration();
     LinuxDeviceConfiguration(const QString &name, const QString &type, MachineType machineType,
-        Origin origin, const QString &fingerprint);
+                             Origin origin, const Core::Id &id);
     LinuxDeviceConfiguration(const LinuxDeviceConfiguration &other);
 
     QVariantMap toMap() const;
-- 
GitLab