forked from qt-creator/qt-creator
Introduce the concept of an abstract device.
The idea is that all kinds of devices inherit from one abstract base class and that they are all managed by one device manager, who does not know about their specifics. For now, the only concrete subclass is the LinuxDeviceConguration. Change-Id: I31ff5586a0fdd6bcf8dcc0554bb2b91fe65b2f3f Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
This commit is contained in:
@@ -31,15 +31,14 @@
|
||||
**************************************************************************/
|
||||
#include "linuxdeviceconfiguration.h"
|
||||
|
||||
#include "linuxdeviceconfigurations.h"
|
||||
#include "remotelinux_constants.h"
|
||||
|
||||
#include <utils/portlist.h>
|
||||
#include <utils/ssh/sshconnection.h>
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
#include <QSettings>
|
||||
#include <QDesktopServices>
|
||||
#include <QStringList>
|
||||
|
||||
using namespace Utils;
|
||||
typedef SshConnectionParameters::AuthenticationType AuthType;
|
||||
@@ -47,9 +46,6 @@ typedef SshConnectionParameters::AuthenticationType AuthType;
|
||||
namespace RemoteLinux {
|
||||
namespace Internal {
|
||||
namespace {
|
||||
const QLatin1String NameKey("Name");
|
||||
const QLatin1String OldOsVersionKey("OsVersion"); // Outdated, only use for upgrading.
|
||||
const QLatin1String TypeKey("OsType");
|
||||
const QLatin1String MachineTypeKey("Type");
|
||||
const QLatin1String HostKey("Host");
|
||||
const QLatin1String SshPortKey("SshPort");
|
||||
@@ -59,8 +55,6 @@ const QLatin1String AuthKey("Authentication");
|
||||
const QLatin1String KeyFileKey("KeyFile");
|
||||
const QLatin1String PasswordKey("Password");
|
||||
const QLatin1String TimeoutKey("Timeout");
|
||||
const QLatin1String InternalIdKey("InternalId");
|
||||
const QLatin1String AttributesKey("Attributes");
|
||||
|
||||
const AuthType DefaultAuthType(SshConnectionParameters::AuthenticationByKey);
|
||||
const int DefaultTimeout(10);
|
||||
@@ -71,13 +65,8 @@ class LinuxDeviceConfigurationPrivate
|
||||
{
|
||||
public:
|
||||
SshConnectionParameters sshParameters;
|
||||
QString displayName;
|
||||
QString type;
|
||||
LinuxDeviceConfiguration::MachineType machineType;
|
||||
PortList freePorts;
|
||||
LinuxDeviceConfiguration::Origin origin;
|
||||
LinuxDeviceConfiguration::Id internalId;
|
||||
QVariantHash attributes;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
@@ -89,14 +78,8 @@ LinuxDeviceConfiguration::~LinuxDeviceConfiguration()
|
||||
delete d;
|
||||
}
|
||||
|
||||
// TODO: For pre-2.6 versions. Remove in 2.8.
|
||||
LinuxDeviceConfiguration::Ptr LinuxDeviceConfiguration::create(const QSettings &settings)
|
||||
{
|
||||
return Ptr(new LinuxDeviceConfiguration(settings));
|
||||
}
|
||||
|
||||
LinuxDeviceConfiguration::Ptr LinuxDeviceConfiguration::create(const QString &name,
|
||||
const QString &type, MachineType machineType, Origin origin)
|
||||
const QString &type, MachineType machineType, Origin origin)
|
||||
{
|
||||
return Ptr(new LinuxDeviceConfiguration(name, type, machineType, origin));
|
||||
}
|
||||
@@ -107,58 +90,17 @@ LinuxDeviceConfiguration::LinuxDeviceConfiguration() : d(new LinuxDeviceConfigur
|
||||
|
||||
LinuxDeviceConfiguration::LinuxDeviceConfiguration(const QString &name, const QString &type,
|
||||
MachineType machineType, Origin origin)
|
||||
: d(new LinuxDeviceConfigurationPrivate)
|
||||
: IDevice(type, origin), d(new LinuxDeviceConfigurationPrivate)
|
||||
{
|
||||
d->displayName = name;
|
||||
d->type = type;
|
||||
setDisplayName(name);
|
||||
d->machineType = machineType;
|
||||
d->origin = origin;
|
||||
}
|
||||
|
||||
// TODO: For pre-2.6 versions. Remove in 2.8.
|
||||
LinuxDeviceConfiguration::LinuxDeviceConfiguration(const QSettings &settings)
|
||||
: d(new LinuxDeviceConfigurationPrivate)
|
||||
{
|
||||
d->origin = ManuallyAdded;
|
||||
d->displayName = settings.value(NameKey).toString();
|
||||
d->type = settings.value(TypeKey).toString();
|
||||
d->machineType = static_cast<MachineType>(settings.value(MachineTypeKey, DefaultMachineType).toInt());
|
||||
d->internalId = settings.value(InternalIdKey, InvalidId).toULongLong();
|
||||
d->attributes = settings.value(AttributesKey).toHash();
|
||||
|
||||
// Convert from version < 2.3.
|
||||
if (d->type.isEmpty()) {
|
||||
const int oldOsType = settings.value(OldOsVersionKey, -1).toInt();
|
||||
switch (oldOsType) {
|
||||
case 0: d->type = QLatin1String("Maemo5OsType"); break;
|
||||
case 1: d->type = QLatin1String("HarmattanOsType"); break;
|
||||
case 2: d->type = QLatin1String("MeeGoOsType"); break;
|
||||
default: d->type = QLatin1String(Constants::GenericLinuxOsType);
|
||||
}
|
||||
}
|
||||
|
||||
d->freePorts = PortList::fromString(settings.value(PortsSpecKey, QLatin1String("10000-10100")).toString());
|
||||
d->sshParameters.host = settings.value(HostKey).toString();
|
||||
d->sshParameters.port = settings.value(SshPortKey, 22).toInt();
|
||||
d->sshParameters.userName = settings.value(UserNameKey).toString();
|
||||
d->sshParameters.authenticationType
|
||||
= static_cast<AuthType>(settings.value(AuthKey, DefaultAuthType).toInt());
|
||||
d->sshParameters.password = settings.value(PasswordKey).toString();
|
||||
d->sshParameters.privateKeyFile
|
||||
= settings.value(KeyFileKey, defaultPrivateKeyFilePath()).toString();
|
||||
d->sshParameters.timeout = settings.value(TimeoutKey, DefaultTimeout).toInt();
|
||||
}
|
||||
|
||||
LinuxDeviceConfiguration::LinuxDeviceConfiguration(const LinuxDeviceConfiguration &other)
|
||||
: d(new LinuxDeviceConfigurationPrivate)
|
||||
: IDevice(other), d(new LinuxDeviceConfigurationPrivate)
|
||||
{
|
||||
d->displayName = other.d->displayName;
|
||||
d->type = other.d->type;
|
||||
d->machineType = other.machineType();
|
||||
d->freePorts = other.freePorts();
|
||||
d->origin = other.d->origin;
|
||||
d->internalId = other.d->internalId;
|
||||
d->attributes = other.d->attributes;
|
||||
d->sshParameters = other.d->sshParameters;
|
||||
}
|
||||
|
||||
@@ -180,15 +122,8 @@ LinuxDeviceConfiguration::Ptr LinuxDeviceConfiguration::create()
|
||||
|
||||
void LinuxDeviceConfiguration::fromMap(const QVariantMap &map)
|
||||
{
|
||||
d->origin = ManuallyAdded;
|
||||
d->displayName = map.value(NameKey).toString();
|
||||
d->type = map.value(TypeKey).toString();
|
||||
IDevice::fromMap(map);
|
||||
d->machineType = static_cast<MachineType>(map.value(MachineTypeKey, DefaultMachineType).toInt());
|
||||
d->internalId = map.value(InternalIdKey, InvalidId).toULongLong();
|
||||
const QVariantMap attrMap = map.value(AttributesKey).toMap();
|
||||
for (QVariantMap::ConstIterator it = attrMap.constBegin(); it != attrMap.constEnd(); ++it)
|
||||
d->attributes.insert(it.key(), it.value());
|
||||
|
||||
d->freePorts = PortList::fromString(map.value(PortsSpecKey,
|
||||
QLatin1String("10000-10100")).toString());
|
||||
d->sshParameters.host = map.value(HostKey).toString();
|
||||
@@ -203,9 +138,7 @@ void LinuxDeviceConfiguration::fromMap(const QVariantMap &map)
|
||||
|
||||
QVariantMap LinuxDeviceConfiguration::toMap() const
|
||||
{
|
||||
QVariantMap map;
|
||||
map.insert(NameKey, d->displayName);
|
||||
map.insert(TypeKey, d->type);
|
||||
QVariantMap map = IDevice::toMap();
|
||||
map.insert(MachineTypeKey, d->machineType);
|
||||
map.insert(HostKey, d->sshParameters.host);
|
||||
map.insert(SshPortKey, d->sshParameters.port);
|
||||
@@ -215,17 +148,10 @@ QVariantMap LinuxDeviceConfiguration::toMap() const
|
||||
map.insert(PasswordKey, d->sshParameters.password);
|
||||
map.insert(KeyFileKey, d->sshParameters.privateKeyFile);
|
||||
map.insert(TimeoutKey, d->sshParameters.timeout);
|
||||
map.insert(InternalIdKey, d->internalId);
|
||||
QVariantMap attrMap;
|
||||
for (QVariantHash::ConstIterator it = d->attributes.constBegin();
|
||||
it != d->attributes.constEnd(); ++it) {
|
||||
attrMap.insert(it.key(), it.value());
|
||||
}
|
||||
map.insert(AttributesKey, attrMap);
|
||||
return map;
|
||||
}
|
||||
|
||||
LinuxDeviceConfiguration::Ptr LinuxDeviceConfiguration::clone() const
|
||||
ProjectExplorer::IDevice::Ptr LinuxDeviceConfiguration::clone() const
|
||||
{
|
||||
return Ptr(new LinuxDeviceConfiguration(*this));
|
||||
}
|
||||
@@ -241,11 +167,6 @@ LinuxDeviceConfiguration::MachineType LinuxDeviceConfiguration::machineType() co
|
||||
return d->machineType;
|
||||
}
|
||||
|
||||
LinuxDeviceConfiguration::Id LinuxDeviceConfiguration::internalId() const
|
||||
{
|
||||
return d->internalId;
|
||||
}
|
||||
|
||||
void LinuxDeviceConfiguration::setSshParameters(const SshConnectionParameters &sshParameters)
|
||||
{
|
||||
d->sshParameters = sshParameters;
|
||||
@@ -256,48 +177,6 @@ void LinuxDeviceConfiguration::setFreePorts(const PortList &freePorts)
|
||||
d->freePorts = freePorts;
|
||||
}
|
||||
|
||||
void LinuxDeviceConfiguration::setAttribute(const QString &name, const QVariant &value)
|
||||
{
|
||||
d->attributes[name] = value;
|
||||
}
|
||||
|
||||
bool LinuxDeviceConfiguration::isAutoDetected() const
|
||||
{
|
||||
return d->origin == AutoDetected;
|
||||
}
|
||||
|
||||
QVariantHash LinuxDeviceConfiguration::attributes() const
|
||||
{
|
||||
return d->attributes;
|
||||
}
|
||||
|
||||
QVariant LinuxDeviceConfiguration::attribute(const QString &name) const
|
||||
{
|
||||
return d->attributes.value(name);
|
||||
}
|
||||
|
||||
PortList LinuxDeviceConfiguration::freePorts() const { return d->freePorts; }
|
||||
QString LinuxDeviceConfiguration::displayName() const { return d->displayName; }
|
||||
QString LinuxDeviceConfiguration::type() const { return d->type; }
|
||||
|
||||
void LinuxDeviceConfiguration::setDisplayName(const QString &name) { d->displayName = name; }
|
||||
void LinuxDeviceConfiguration::setInternalId(Id id) { d->internalId = id; }
|
||||
|
||||
const LinuxDeviceConfiguration::Id LinuxDeviceConfiguration::InvalidId = 0;
|
||||
|
||||
|
||||
ILinuxDeviceConfigurationWidget::ILinuxDeviceConfigurationWidget(
|
||||
const LinuxDeviceConfiguration::Ptr &deviceConfig,
|
||||
QWidget *parent)
|
||||
: QWidget(parent),
|
||||
m_deviceConfiguration(deviceConfig)
|
||||
{
|
||||
QTC_CHECK(m_deviceConfiguration);
|
||||
}
|
||||
|
||||
LinuxDeviceConfiguration::Ptr ILinuxDeviceConfigurationWidget::deviceConfiguration() const
|
||||
{
|
||||
return m_deviceConfiguration;
|
||||
}
|
||||
|
||||
} // namespace RemoteLinux
|
||||
|
||||
Reference in New Issue
Block a user