diff --git a/src/plugins/winrt/winrtdevice.cpp b/src/plugins/winrt/winrtdevice.cpp index 483c2e142c1..5f6478a72f5 100644 --- a/src/plugins/winrt/winrtdevice.cpp +++ b/src/plugins/winrt/winrtdevice.cpp @@ -43,24 +43,6 @@ namespace WinRt { namespace Internal { WinRtDevice::WinRtDevice() -{ - initFreePorts(); -} - -WinRtDevice::WinRtDevice(Core::Id internalId, int deviceId) - : m_deviceId(deviceId) -{ - setupId(AutoDetected, internalId); - initFreePorts(); -} - -WinRtDevice::WinRtDevice(const WinRtDevice &other) - : IDevice(other), m_deviceId(other.m_deviceId) -{ - initFreePorts(); -} - -void WinRtDevice::initFreePorts() { Utils::PortList portList; portList.addRange(Utils::Port(ProjectExplorer::Constants::DESKTOP_PORT_START), diff --git a/src/plugins/winrt/winrtdevice.h b/src/plugins/winrt/winrtdevice.h index 8332ee7a48d..96cca4dc381 100644 --- a/src/plugins/winrt/winrtdevice.h +++ b/src/plugins/winrt/winrtdevice.h @@ -32,11 +32,12 @@ namespace Internal { class WinRtDevice : public ProjectExplorer::IDevice { - friend class WinRtDeviceFactory; public: typedef QSharedPointer Ptr; typedef QSharedPointer ConstPtr; + static Ptr create() { return Ptr(new WinRtDevice); } + QString displayType() const override; ProjectExplorer::IDeviceWidget *createWidget() override; ProjectExplorer::DeviceProcessSignalOperation::Ptr signalOperation() const override; @@ -47,16 +48,11 @@ public: static QString displayNameForType(Core::Id type); int deviceId() const { return m_deviceId; } + void setDeviceId(int deviceId) { m_deviceId = deviceId; } -protected: +private: WinRtDevice(); - WinRtDevice(Core::Id internalId, int deviceId); - WinRtDevice(const WinRtDevice &other); -private: - void initFreePorts(); - -private: int m_deviceId = -1; }; diff --git a/src/plugins/winrt/winrtdevicefactory.cpp b/src/plugins/winrt/winrtdevicefactory.cpp index 61895c9c51a..52b6dac69da 100644 --- a/src/plugins/winrt/winrtdevicefactory.cpp +++ b/src/plugins/winrt/winrtdevicefactory.cpp @@ -63,7 +63,7 @@ WinRtDeviceFactory::WinRtDeviceFactory(Core::Id deviceType) this, &WinRtDeviceFactory::onPrerequisitesLoaded, Qt::QueuedConnection); } setDisplayName(WinRtDevice::displayNameForType(deviceType)); - setConstructionFunction([] { return IDevice::Ptr(new WinRtDevice); }); + setConstructionFunction(&WinRtDevice::create); setCombinedIcon(":/winrt/images/winrtdevicesmall.png", ":/winrt/images/winrtdevice.png"); } @@ -281,7 +281,9 @@ void WinRtDeviceFactory::parseRunnerOutput(const QByteArray &output) const continue; } - WinRtDevice *device = new WinRtDevice(internalId, deviceId); + auto device = WinRtDevice::create(); + device->setupId(IDevice::AutoDetected, internalId); + device->setDeviceId(deviceId); device->setType(deviceType); device->setMachineType(machineType); device->setDisplayName(name);