forked from qt-creator/qt-creator
ProjectExplorer: Add Aspect Settings to devices
Change-Id: I4a69945dbb862a2741998a3bbbb0512e5fb829c9 Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
@@ -128,6 +128,12 @@ public:
|
|||||||
DockerDevicePrivate *m_dev = nullptr;
|
DockerDevicePrivate *m_dev = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class DockerDeviceSettings : public DeviceSettings
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DockerDeviceSettings() { displayName.setDefaultValue(Tr::tr("Docker Image")); }
|
||||||
|
};
|
||||||
|
|
||||||
class DockerDevicePrivate : public QObject
|
class DockerDevicePrivate : public QObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -410,12 +416,12 @@ QString DockerDeviceFileAccess::mapToDevicePath(const QString &hostPath) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
DockerDevice::DockerDevice(const DockerDeviceData &data)
|
DockerDevice::DockerDevice(const DockerDeviceData &data)
|
||||||
: d(new DockerDevicePrivate(this, data))
|
: ProjectExplorer::IDevice(std::make_unique<DockerDeviceSettings>())
|
||||||
|
, d(new DockerDevicePrivate(this, data))
|
||||||
{
|
{
|
||||||
setFileAccess(&d->m_fileAccess);
|
setFileAccess(&d->m_fileAccess);
|
||||||
setDisplayType(Tr::tr("Docker"));
|
setDisplayType(Tr::tr("Docker"));
|
||||||
setOsType(OsTypeLinux);
|
setOsType(OsTypeLinux);
|
||||||
setDefaultDisplayName(Tr::tr("Docker Image"));
|
|
||||||
setupId(IDevice::ManuallyAdded);
|
setupId(IDevice::ManuallyAdded);
|
||||||
setType(Constants::DOCKER_DEVICE_TYPE);
|
setType(Constants::DOCKER_DEVICE_TYPE);
|
||||||
setMachineType(IDevice::Hardware);
|
setMachineType(IDevice::Hardware);
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ DesktopDevice::DesktopDevice()
|
|||||||
|
|
||||||
setupId(IDevice::AutoDetected, DESKTOP_DEVICE_ID);
|
setupId(IDevice::AutoDetected, DESKTOP_DEVICE_ID);
|
||||||
setType(DESKTOP_DEVICE_TYPE);
|
setType(DESKTOP_DEVICE_TYPE);
|
||||||
setDefaultDisplayName(Tr::tr("Local PC"));
|
settings()->displayName.setDefaultValue(Tr::tr("Local PC"));
|
||||||
setDisplayType(Tr::tr("Desktop"));
|
setDisplayType(Tr::tr("Desktop"));
|
||||||
|
|
||||||
setDeviceState(IDevice::DeviceStateUnknown);
|
setDeviceState(IDevice::DeviceStateUnknown);
|
||||||
|
|||||||
@@ -123,9 +123,13 @@ namespace Internal {
|
|||||||
class IDevicePrivate
|
class IDevicePrivate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
IDevicePrivate() = default;
|
IDevicePrivate(std::unique_ptr<DeviceSettings> s)
|
||||||
|
: settings(std::move(s))
|
||||||
|
{
|
||||||
|
if (!settings)
|
||||||
|
settings = std::make_unique<DeviceSettings>();
|
||||||
|
}
|
||||||
|
|
||||||
DisplayName displayName;
|
|
||||||
QString displayType;
|
QString displayType;
|
||||||
Id type;
|
Id type;
|
||||||
IDevice::Origin origin = IDevice::AutoDetected;
|
IDevice::Origin origin = IDevice::AutoDetected;
|
||||||
@@ -148,12 +152,22 @@ public:
|
|||||||
QList<IDevice::DeviceAction> deviceActions;
|
QList<IDevice::DeviceAction> deviceActions;
|
||||||
Store extraData;
|
Store extraData;
|
||||||
IDevice::OpenTerminal openTerminal;
|
IDevice::OpenTerminal openTerminal;
|
||||||
|
|
||||||
|
std::unique_ptr<DeviceSettings> settings;
|
||||||
};
|
};
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|
||||||
|
DeviceSettings::DeviceSettings()
|
||||||
|
{
|
||||||
|
displayName.setSettingsKey(DisplayNameKey);
|
||||||
|
displayName.setDisplayStyle(StringAspect::DisplayStyle::LineEditDisplay);
|
||||||
|
displayName.setLabelText(Tr::tr("Name:"));
|
||||||
|
}
|
||||||
|
|
||||||
DeviceTester::DeviceTester(QObject *parent) : QObject(parent) { }
|
DeviceTester::DeviceTester(QObject *parent) : QObject(parent) { }
|
||||||
|
|
||||||
IDevice::IDevice() : d(new Internal::IDevicePrivate)
|
IDevice::IDevice(std::unique_ptr<DeviceSettings> settings)
|
||||||
|
: d(new Internal::IDevicePrivate(std::move(settings)))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -264,17 +278,17 @@ Environment IDevice::systemEnvironment() const
|
|||||||
|
|
||||||
QString IDevice::displayName() const
|
QString IDevice::displayName() const
|
||||||
{
|
{
|
||||||
return d->displayName.value();
|
return d->settings->displayName();
|
||||||
}
|
}
|
||||||
|
|
||||||
void IDevice::setDisplayName(const QString &name)
|
void IDevice::setDisplayName(const QString &name)
|
||||||
{
|
{
|
||||||
d->displayName.setValue(name);
|
settings()->displayName.setValue(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IDevice::setDefaultDisplayName(const QString &name)
|
void IDevice::setDefaultDisplayName(const QString &name)
|
||||||
{
|
{
|
||||||
d->displayName.setDefaultValue(name);
|
settings()->displayName.setDefaultValue(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString IDevice::displayType() const
|
QString IDevice::displayType() const
|
||||||
@@ -439,7 +453,8 @@ Id IDevice::idFromMap(const Store &map)
|
|||||||
void IDevice::fromMap(const Store &map)
|
void IDevice::fromMap(const Store &map)
|
||||||
{
|
{
|
||||||
d->type = typeFromMap(map);
|
d->type = typeFromMap(map);
|
||||||
d->displayName.fromMap(map, DisplayNameKey);
|
settings()->fromMap(map);
|
||||||
|
|
||||||
d->id = Id::fromSetting(map.value(IdKey));
|
d->id = Id::fromSetting(map.value(IdKey));
|
||||||
d->osType = osTypeFromString(map.value(ClientOsTypeKey, osTypeToString(OsTypeLinux)).toString());
|
d->osType = osTypeFromString(map.value(ClientOsTypeKey, osTypeToString(OsTypeLinux)).toString());
|
||||||
if (!d->id.isValid())
|
if (!d->id.isValid())
|
||||||
@@ -487,7 +502,8 @@ void IDevice::fromMap(const Store &map)
|
|||||||
Store IDevice::toMap() const
|
Store IDevice::toMap() const
|
||||||
{
|
{
|
||||||
Store map;
|
Store map;
|
||||||
d->displayName.toMap(map, DisplayNameKey);
|
d->settings->toMap(map);
|
||||||
|
|
||||||
map.insert(TypeKey, d->type.toString());
|
map.insert(TypeKey, d->type.toString());
|
||||||
map.insert(ClientOsTypeKey, osTypeToString(d->osType));
|
map.insert(ClientOsTypeKey, osTypeToString(d->osType));
|
||||||
map.insert(IdKey, d->id.toSetting());
|
map.insert(IdKey, d->id.toSetting());
|
||||||
@@ -528,6 +544,11 @@ IDevice::Ptr IDevice::clone() const
|
|||||||
return device;
|
return device;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DeviceSettings *IDevice::settings() const
|
||||||
|
{
|
||||||
|
return d->settings.get();
|
||||||
|
}
|
||||||
|
|
||||||
QString IDevice::deviceStateToString() const
|
QString IDevice::deviceStateToString() const
|
||||||
{
|
{
|
||||||
switch (d->deviceState) {
|
switch (d->deviceState) {
|
||||||
|
|||||||
@@ -8,10 +8,11 @@
|
|||||||
|
|
||||||
#include <solutions/tasking/tasktree.h>
|
#include <solutions/tasking/tasktree.h>
|
||||||
|
|
||||||
#include <utils/id.h>
|
#include <utils/aspects.h>
|
||||||
#include <utils/expected.h>
|
#include <utils/expected.h>
|
||||||
#include <utils/filepath.h>
|
#include <utils/filepath.h>
|
||||||
#include <utils/hostosinfo.h>
|
#include <utils/hostosinfo.h>
|
||||||
|
#include <utils/id.h>
|
||||||
#include <utils/store.h>
|
#include <utils/store.h>
|
||||||
|
|
||||||
#include <QAbstractSocket>
|
#include <QAbstractSocket>
|
||||||
@@ -83,6 +84,14 @@ public:
|
|||||||
std::function<QList<Utils::Port>(const QByteArray &commandOutput)> parsePorts;
|
std::function<QList<Utils::Port>(const QByteArray &commandOutput)> parsePorts;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class PROJECTEXPLORER_EXPORT DeviceSettings : public Utils::AspectContainer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DeviceSettings();
|
||||||
|
|
||||||
|
Utils::StringAspect displayName{this};
|
||||||
|
};
|
||||||
|
|
||||||
// See cpp file for documentation.
|
// See cpp file for documentation.
|
||||||
class PROJECTEXPLORER_EXPORT IDevice : public QEnableSharedFromThis<IDevice>
|
class PROJECTEXPLORER_EXPORT IDevice : public QEnableSharedFromThis<IDevice>
|
||||||
{
|
{
|
||||||
@@ -99,6 +108,8 @@ public:
|
|||||||
|
|
||||||
Ptr clone() const;
|
Ptr clone() const;
|
||||||
|
|
||||||
|
DeviceSettings *settings() const;
|
||||||
|
|
||||||
QString displayName() const;
|
QString displayName() const;
|
||||||
void setDisplayName(const QString &name);
|
void setDisplayName(const QString &name);
|
||||||
void setDefaultDisplayName(const QString &name);
|
void setDefaultDisplayName(const QString &name);
|
||||||
@@ -216,7 +227,7 @@ public:
|
|||||||
virtual void checkOsType() {}
|
virtual void checkOsType() {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
IDevice();
|
IDevice(std::unique_ptr<DeviceSettings> settings = nullptr);
|
||||||
|
|
||||||
virtual void fromMap(const Utils::Store &map);
|
virtual void fromMap(const Utils::Store &map);
|
||||||
virtual Utils::Store toMap() const;
|
virtual Utils::Store toMap() const;
|
||||||
|
|||||||
@@ -69,7 +69,6 @@ IDevice::Ptr IDeviceFactory::create() const
|
|||||||
IDevice::Ptr device = m_creator();
|
IDevice::Ptr device = m_creator();
|
||||||
if (!device) // e.g. Cancel used on the dialog to create a device
|
if (!device) // e.g. Cancel used on the dialog to create a device
|
||||||
return {};
|
return {};
|
||||||
device->setDefaultDisplayName(displayName());
|
|
||||||
return device;
|
return device;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,7 +79,7 @@ IDevice::Ptr IDeviceFactory::construct() const
|
|||||||
|
|
||||||
IDevice::Ptr device = m_constructor();
|
IDevice::Ptr device = m_constructor();
|
||||||
QTC_ASSERT(device, return {});
|
QTC_ASSERT(device, return {});
|
||||||
device->setDefaultDisplayName(displayName());
|
device->settings()->displayName.setDefaultValue(displayName());
|
||||||
return device;
|
return device;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -293,6 +293,12 @@ public:
|
|||||||
LinuxDevicePrivate *m_dev;
|
LinuxDevicePrivate *m_dev;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class LinuxDeviceSettings : public DeviceSettings
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LinuxDeviceSettings() { displayName.setDefaultValue(Tr::tr("Remote Linux Device")); }
|
||||||
|
};
|
||||||
|
|
||||||
class LinuxDevicePrivate
|
class LinuxDevicePrivate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -937,7 +943,8 @@ private:
|
|||||||
// LinuxDevice
|
// LinuxDevice
|
||||||
|
|
||||||
LinuxDevice::LinuxDevice()
|
LinuxDevice::LinuxDevice()
|
||||||
: d(new LinuxDevicePrivate(this))
|
: IDevice(std::make_unique<LinuxDeviceSettings>())
|
||||||
|
, d(new LinuxDevicePrivate(this))
|
||||||
{
|
{
|
||||||
setFileAccess(&d->m_fileAccess);
|
setFileAccess(&d->m_fileAccess);
|
||||||
setDisplayType(Tr::tr("Remote Linux"));
|
setDisplayType(Tr::tr("Remote Linux"));
|
||||||
|
|||||||
Reference in New Issue
Block a user