Simplify IDeviceFactory use

With a 1:1 mapping of factory and created device types, the signatures
of the device factory methods are much simpler, and yield even in
the cases where a factory created more than one device type
(WinRt and Qdb) less code after duplication of the factory.

Change-Id: I1c6279a88e8483001e5603cfe1922029243be610
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2018-10-04 19:08:16 +02:00
parent 9fe5733ef3
commit 0c2101d816
26 changed files with 109 additions and 186 deletions

View File

@@ -36,25 +36,18 @@ namespace Android {
namespace Internal { namespace Internal {
AndroidDeviceFactory::AndroidDeviceFactory() AndroidDeviceFactory::AndroidDeviceFactory()
: ProjectExplorer::IDeviceFactory(Constants::ANDROID_DEVICE_TYPE)
{ {
setObjectName(QLatin1String("AndroidDeviceFactory")); setObjectName(QLatin1String("AndroidDeviceFactory"));
} }
QString AndroidDeviceFactory::displayNameForId(Core::Id type) const QString AndroidDeviceFactory::displayName() const
{ {
if (type == Constants::ANDROID_DEVICE_TYPE) return tr("Android Device");
return tr("Android Device");
return QString();
} }
QList<Core::Id> AndroidDeviceFactory::availableCreationIds() const QIcon AndroidDeviceFactory::icon() const
{ {
return QList<Core::Id>() << Core::Id(Constants::ANDROID_DEVICE_TYPE);
}
QIcon AndroidDeviceFactory::iconForId(Core::Id type) const
{
Q_UNUSED(type)
using namespace Utils; using namespace Utils;
static const QIcon icon = static const QIcon icon =
Icon::combinedIcon({Icon({{":/android/images/androiddevicesmall.png", Icon::combinedIcon({Icon({{":/android/images/androiddevicesmall.png",
@@ -69,15 +62,14 @@ bool AndroidDeviceFactory::canCreate() const
return false; return false;
} }
ProjectExplorer::IDevice::Ptr AndroidDeviceFactory::create(Core::Id id) const ProjectExplorer::IDevice::Ptr AndroidDeviceFactory::create() const
{ {
Q_UNUSED(id)
return ProjectExplorer::IDevice::Ptr(); return ProjectExplorer::IDevice::Ptr();
} }
bool AndroidDeviceFactory::canRestore(const QVariantMap &map) const bool AndroidDeviceFactory::canRestore(const QVariantMap &map) const
{ {
return ProjectExplorer::IDevice::typeFromMap(map) == Constants::ANDROID_DEVICE_TYPE; return ProjectExplorer::IDevice::typeFromMap(map) == deviceType();
} }
ProjectExplorer::IDevice::Ptr AndroidDeviceFactory::restore(const QVariantMap &map) const ProjectExplorer::IDevice::Ptr AndroidDeviceFactory::restore(const QVariantMap &map) const

View File

@@ -36,12 +36,11 @@ class AndroidDeviceFactory : public ProjectExplorer::IDeviceFactory
public: public:
AndroidDeviceFactory(); AndroidDeviceFactory();
QString displayNameForId(Core::Id type) const override; QString displayName() const override;
QList<Core::Id> availableCreationIds() const override; QIcon icon() const override;
QIcon iconForId(Core::Id type) const override;
bool canCreate() const override; bool canCreate() const override;
ProjectExplorer::IDevice::Ptr create(Core::Id id) const override; ProjectExplorer::IDevice::Ptr create() const override;
bool canRestore(const QVariantMap &map) const override; bool canRestore(const QVariantMap &map) const override;
ProjectExplorer::IDevice::Ptr restore(const QVariantMap &map) const override; ProjectExplorer::IDevice::Ptr restore(const QVariantMap &map) const override;
}; };

View File

@@ -40,22 +40,17 @@ namespace BareMetal {
namespace Internal { namespace Internal {
BareMetalDeviceConfigurationFactory::BareMetalDeviceConfigurationFactory() BareMetalDeviceConfigurationFactory::BareMetalDeviceConfigurationFactory()
: IDeviceFactory(Constants::BareMetalOsType)
{ {
} }
QString BareMetalDeviceConfigurationFactory::displayNameForId(Core::Id type) const QString BareMetalDeviceConfigurationFactory::displayName() const
{ {
return type == Constants::BareMetalOsType ? tr("Bare Metal Device") : QString(); return tr("Bare Metal Device");
} }
QList<Core::Id> BareMetalDeviceConfigurationFactory::availableCreationIds() const QIcon BareMetalDeviceConfigurationFactory::icon() const
{ {
return QList<Core::Id>() << Core::Id(Constants::BareMetalOsType);
}
QIcon BareMetalDeviceConfigurationFactory::iconForId(Core::Id type) const
{
Q_UNUSED(type)
using namespace Utils; using namespace Utils;
static const QIcon icon = static const QIcon icon =
Icon::combinedIcon({Icon({{":/baremetal/images/baremetaldevicesmall.png", Icon::combinedIcon({Icon({{":/baremetal/images/baremetaldevicesmall.png",
@@ -65,9 +60,8 @@ QIcon BareMetalDeviceConfigurationFactory::iconForId(Core::Id type) const
return icon; return icon;
} }
IDevice::Ptr BareMetalDeviceConfigurationFactory::create(Core::Id id) const IDevice::Ptr BareMetalDeviceConfigurationFactory::create() const
{ {
QTC_ASSERT(id == Constants::BareMetalOsType, return IDevice::Ptr());
BareMetalDeviceConfigurationWizard wizard; BareMetalDeviceConfigurationWizard wizard;
if (wizard.exec() != QDialog::Accepted) if (wizard.exec() != QDialog::Accepted)
return IDevice::Ptr(); return IDevice::Ptr();
@@ -76,7 +70,7 @@ IDevice::Ptr BareMetalDeviceConfigurationFactory::create(Core::Id id) const
bool BareMetalDeviceConfigurationFactory::canRestore(const QVariantMap &map) const bool BareMetalDeviceConfigurationFactory::canRestore(const QVariantMap &map) const
{ {
return IDevice::typeFromMap(map) == Constants::BareMetalOsType; return IDevice::typeFromMap(map) == deviceType();
} }
IDevice::Ptr BareMetalDeviceConfigurationFactory::restore(const QVariantMap &map) const IDevice::Ptr BareMetalDeviceConfigurationFactory::restore(const QVariantMap &map) const

View File

@@ -38,11 +38,10 @@ class BareMetalDeviceConfigurationFactory
public: public:
BareMetalDeviceConfigurationFactory(); BareMetalDeviceConfigurationFactory();
QString displayNameForId(Core::Id type) const override; QString displayName() const override;
QList<Core::Id> availableCreationIds() const override; QIcon icon() const override;
QIcon iconForId(Core::Id type) const override;
ProjectExplorer::IDevice::Ptr create(Core::Id id) const override; ProjectExplorer::IDevice::Ptr create() const override;
bool canRestore(const QVariantMap &map) const override; bool canRestore(const QVariantMap &map) const override;
ProjectExplorer::IDevice::Ptr restore(const QVariantMap &map) const override; ProjectExplorer::IDevice::Ptr restore(const QVariantMap &map) const override;
}; };

View File

@@ -36,23 +36,18 @@ namespace Ios {
namespace Internal { namespace Internal {
IosDeviceFactory::IosDeviceFactory() IosDeviceFactory::IosDeviceFactory()
: ProjectExplorer::IDeviceFactory(Constants::IOS_DEVICE_ID)
{ {
setObjectName(QLatin1String("IosDeviceFactory")); setObjectName(QLatin1String("IosDeviceFactory"));
} }
QString IosDeviceFactory::displayNameForId(Core::Id type) const QString IosDeviceFactory::displayName() const
{ {
return type == Constants::IOS_DEVICE_TYPE ? IosDevice::name() : QString(); return IosDevice::name();
} }
QList<Core::Id> IosDeviceFactory::availableCreationIds() const QIcon IosDeviceFactory::icon() const
{ {
return QList<Core::Id>() << Core::Id(Constants::IOS_DEVICE_TYPE);
}
QIcon IosDeviceFactory::iconForId(Core::Id type) const
{
Q_UNUSED(type)
using namespace Utils; using namespace Utils;
static const QIcon icon = static const QIcon icon =
Icon::combinedIcon({Icon({{":/ios/images/iosdevicesmall.png", Icon::combinedIcon({Icon({{":/ios/images/iosdevicesmall.png",
@@ -67,9 +62,8 @@ bool IosDeviceFactory::canCreate() const
return false; return false;
} }
ProjectExplorer::IDevice::Ptr IosDeviceFactory::create(Core::Id id) const ProjectExplorer::IDevice::Ptr IosDeviceFactory::create() const
{ {
Q_UNUSED(id)
return ProjectExplorer::IDevice::Ptr(); return ProjectExplorer::IDevice::Ptr();
} }

View File

@@ -40,12 +40,11 @@ class IosDeviceFactory : public ProjectExplorer::IDeviceFactory
public: public:
IosDeviceFactory(); IosDeviceFactory();
QString displayNameForId(Core::Id type) const override; QString displayName() const override;
QList<Core::Id> availableCreationIds() const override; QIcon icon() const override;
QIcon iconForId(Core::Id type) const override;
bool canCreate() const override; bool canCreate() const override;
ProjectExplorer::IDevice::Ptr create(Core::Id id) const override; ProjectExplorer::IDevice::Ptr create() const override;
bool canRestore(const QVariantMap &map) const override; bool canRestore(const QVariantMap &map) const override;
ProjectExplorer::IDevice::Ptr restore(const QVariantMap &map) const override; ProjectExplorer::IDevice::Ptr restore(const QVariantMap &map) const override;
}; };

View File

@@ -36,25 +36,18 @@ namespace Ios {
namespace Internal { namespace Internal {
IosSimulatorFactory::IosSimulatorFactory() IosSimulatorFactory::IosSimulatorFactory()
: ProjectExplorer::IDeviceFactory(Constants::IOS_SIMULATOR_TYPE)
{ {
setObjectName(QLatin1String("IosSimulatorFactory")); setObjectName(QLatin1String("IosSimulatorFactory"));
} }
QString IosSimulatorFactory::displayNameForId(Core::Id type) const QString IosSimulatorFactory::displayName() const
{ {
if (type == Constants::IOS_SIMULATOR_TYPE) return tr("iOS Simulator");
return tr("iOS Simulator");
return QString();
} }
QList<Core::Id> IosSimulatorFactory::availableCreationIds() const QIcon IosSimulatorFactory::icon() const
{ {
return QList<Core::Id>() << Core::Id(Constants::IOS_SIMULATOR_TYPE);
}
QIcon IosSimulatorFactory::iconForId(Core::Id type) const
{
Q_UNUSED(type)
using namespace Utils; using namespace Utils;
static const QIcon icon = static const QIcon icon =
Icon::combinedIcon({Icon({{":/ios/images/iosdevicesmall.png", Icon::combinedIcon({Icon({{":/ios/images/iosdevicesmall.png",
@@ -69,15 +62,14 @@ bool IosSimulatorFactory::canCreate() const
return false; return false;
} }
ProjectExplorer::IDevice::Ptr IosSimulatorFactory::create(Core::Id id) const ProjectExplorer::IDevice::Ptr IosSimulatorFactory::create() const
{ {
Q_UNUSED(id)
return ProjectExplorer::IDevice::Ptr(); return ProjectExplorer::IDevice::Ptr();
} }
bool IosSimulatorFactory::canRestore(const QVariantMap &map) const bool IosSimulatorFactory::canRestore(const QVariantMap &map) const
{ {
return ProjectExplorer::IDevice::typeFromMap(map) == Constants::IOS_SIMULATOR_TYPE; return ProjectExplorer::IDevice::typeFromMap(map) == deviceType();
} }
ProjectExplorer::IDevice::Ptr IosSimulatorFactory::restore(const QVariantMap &map) const ProjectExplorer::IDevice::Ptr IosSimulatorFactory::restore(const QVariantMap &map) const

View File

@@ -36,12 +36,11 @@ class IosSimulatorFactory : public ProjectExplorer::IDeviceFactory
public: public:
IosSimulatorFactory(); IosSimulatorFactory();
QString displayNameForId(Core::Id type) const override; QString displayName() const override;
QList<Core::Id> availableCreationIds() const override; QIcon icon() const override;
QIcon iconForId(Core::Id type) const override;
bool canCreate() const override; bool canCreate() const override;
ProjectExplorer::IDevice::Ptr create(Core::Id id) const override; ProjectExplorer::IDevice::Ptr create() const override;
bool canRestore(const QVariantMap &map) const override; bool canRestore(const QVariantMap &map) const override;
ProjectExplorer::IDevice::Ptr restore(const QVariantMap &map) const override; ProjectExplorer::IDevice::Ptr restore(const QVariantMap &map) const override;
}; };

View File

@@ -38,24 +38,17 @@
namespace ProjectExplorer { namespace ProjectExplorer {
namespace Internal { namespace Internal {
DesktopDeviceFactory::DesktopDeviceFactory(QObject *parent) : IDeviceFactory(parent) DesktopDeviceFactory::DesktopDeviceFactory()
: IDeviceFactory(Constants::DESKTOP_DEVICE_TYPE)
{ } { }
QString DesktopDeviceFactory::displayNameForId(Core::Id type) const QString DesktopDeviceFactory::displayName() const
{ {
if (type == Constants::DESKTOP_DEVICE_TYPE) return tr("Desktop");
return tr("Desktop");
return QString();
} }
QList<Core::Id> DesktopDeviceFactory::availableCreationIds() const QIcon DesktopDeviceFactory::icon() const
{ {
return QList<Core::Id>() << Core::Id(Constants::DESKTOP_DEVICE_TYPE);
}
QIcon DesktopDeviceFactory::iconForId(Core::Id type) const
{
Q_UNUSED(type)
static const QIcon icon = static const QIcon icon =
Utils::creatorTheme()->flag(Utils::Theme::FlatSideBarIcons) Utils::creatorTheme()->flag(Utils::Theme::FlatSideBarIcons)
? Utils::Icon::combinedIcon({Icons::DESKTOP_DEVICE.icon(), ? Utils::Icon::combinedIcon({Icons::DESKTOP_DEVICE.icon(),
@@ -69,15 +62,14 @@ bool DesktopDeviceFactory::canCreate() const
return false; return false;
} }
IDevice::Ptr DesktopDeviceFactory::create(Core::Id id) const IDevice::Ptr DesktopDeviceFactory::create() const
{ {
Q_UNUSED(id);
return IDevice::Ptr(); return IDevice::Ptr();
} }
bool DesktopDeviceFactory::canRestore(const QVariantMap &map) const bool DesktopDeviceFactory::canRestore(const QVariantMap &map) const
{ {
return IDevice::idFromMap(map) == Constants::DESKTOP_DEVICE_ID; return IDevice::idFromMap(map) == deviceType();
} }
IDevice::Ptr DesktopDeviceFactory::restore(const QVariantMap &map) const IDevice::Ptr DesktopDeviceFactory::restore(const QVariantMap &map) const

View File

@@ -35,14 +35,13 @@ class DesktopDeviceFactory : public IDeviceFactory
Q_OBJECT Q_OBJECT
public: public:
explicit DesktopDeviceFactory(QObject *parent = 0); DesktopDeviceFactory();
QString displayNameForId(Core::Id type) const override; QString displayName() const override;
QList<Core::Id> availableCreationIds() const override; QIcon icon() const override;
QIcon iconForId(Core::Id type) const override;
bool canCreate() const override; bool canCreate() const override;
IDevice::Ptr create(Core::Id id) const override; IDevice::Ptr create() const override;
bool canRestore(const QVariantMap &map) const override; bool canRestore(const QVariantMap &map) const override;
IDevice::Ptr restore(const QVariantMap &map) const override; IDevice::Ptr restore(const QVariantMap &map) const override;
}; };

View File

@@ -62,7 +62,7 @@ bool DeviceCheckBuildStep::init(QList<const BuildStep *> &earlierSteps)
return false; return false;
} }
IDevice::Ptr newDevice = factory->create(deviceTypeId); IDevice::Ptr newDevice = factory->create();
if (newDevice.isNull()) { if (newDevice.isNull()) {
emit addOutput(tr("No device configured."), BuildStep::OutputFormat::ErrorMessage); emit addOutput(tr("No device configured."), BuildStep::OutputFormat::ErrorMessage);
return false; return false;

View File

@@ -45,11 +45,9 @@ DeviceFactorySelectionDialog::DeviceFactorySelectionDialog(QWidget *parent) :
for (const IDeviceFactory * const factory : IDeviceFactory::allDeviceFactories()) { for (const IDeviceFactory * const factory : IDeviceFactory::allDeviceFactories()) {
if (!factory->canCreate()) if (!factory->canCreate())
continue; continue;
foreach (Core::Id id, factory->availableCreationIds()) { QListWidgetItem *item = new QListWidgetItem(factory->displayName());
QListWidgetItem *item = new QListWidgetItem(factory->displayNameForId(id)); item->setData(Qt::UserRole, QVariant::fromValue(factory->deviceType()));
item->setData(Qt::UserRole, QVariant::fromValue(id)); ui->listWidget->addItem(item);
ui->listWidget->addItem(item);
}
} }
connect(ui->listWidget, &QListWidget::itemSelectionChanged, connect(ui->listWidget, &QListWidget::itemSelectionChanged,

View File

@@ -147,7 +147,7 @@ void DeviceSettingsWidget::addDevice()
IDeviceFactory *factory = IDeviceFactory::find(toCreate); IDeviceFactory *factory = IDeviceFactory::find(toCreate);
if (!factory) if (!factory)
return; return;
IDevice::Ptr device = factory->create(toCreate); IDevice::Ptr device = factory->create();
if (device.isNull()) if (device.isNull())
return; return;

View File

@@ -80,7 +80,7 @@ namespace ProjectExplorer {
bool IDeviceFactory::canCreate() const bool IDeviceFactory::canCreate() const
{ {
return !availableCreationIds().isEmpty(); return true;
} }
static QList<IDeviceFactory *> g_deviceFactories; static QList<IDeviceFactory *> g_deviceFactories;
@@ -89,11 +89,12 @@ IDeviceFactory *IDeviceFactory::find(Core::Id type)
{ {
return Utils::findOrDefault(g_deviceFactories, return Utils::findOrDefault(g_deviceFactories,
[&type](IDeviceFactory *factory) { [&type](IDeviceFactory *factory) {
return factory->availableCreationIds().contains(type); return factory->deviceType() == type;
}); });
} }
IDeviceFactory::IDeviceFactory(QObject *parent) : QObject(parent) IDeviceFactory::IDeviceFactory(Core::Id deviceType)
: m_deviceType(deviceType)
{ {
g_deviceFactories.append(this); g_deviceFactories.append(this);
} }

View File

@@ -47,22 +47,23 @@ public:
~IDeviceFactory() override; ~IDeviceFactory() override;
static const QList<IDeviceFactory *> allDeviceFactories(); static const QList<IDeviceFactory *> allDeviceFactories();
virtual QString displayNameForId(Core::Id type) const = 0; virtual QString displayName() const = 0;
virtual QIcon icon() const = 0;
virtual QList<Core::Id> availableCreationIds() const = 0;
virtual QIcon iconForId(Core::Id type) const = 0;
virtual bool canCreate() const; virtual bool canCreate() const;
virtual IDevice::Ptr create(Core::Id id) const = 0; virtual IDevice::Ptr create() const = 0;
virtual bool canRestore(const QVariantMap &map) const = 0; virtual bool canRestore(const QVariantMap &map) const = 0;
virtual IDevice::Ptr restore(const QVariantMap &map) const = 0; virtual IDevice::Ptr restore(const QVariantMap &map) const = 0;
static IDeviceFactory *find(Core::Id type); static IDeviceFactory *find(Core::Id type);
Core::Id deviceType() const { return m_deviceType; }
protected: protected:
explicit IDeviceFactory(QObject *parent = nullptr); explicit IDeviceFactory(Core::Id deviceType);
private:
const Core::Id m_deviceType;
}; };
} // namespace ProjectExplorer } // namespace ProjectExplorer

View File

@@ -356,9 +356,9 @@ static QIcon iconForDeviceType(Core::Id deviceType)
{ {
const IDeviceFactory *factory = Utils::findOrDefault(IDeviceFactory::allDeviceFactories(), const IDeviceFactory *factory = Utils::findOrDefault(IDeviceFactory::allDeviceFactories(),
[&deviceType](const IDeviceFactory *factory) { [&deviceType](const IDeviceFactory *factory) {
return factory->availableCreationIds().contains(deviceType); return factory->deviceType() == deviceType;
}); });
return factory ? factory->iconForId(deviceType) : QIcon(); return factory ? factory->icon() : QIcon();
} }
QIcon Kit::icon() const QIcon Kit::icon() const

View File

@@ -586,13 +586,8 @@ KitInformation::ItemList DeviceTypeKitInformation::toUserOutput(const Kit *k) co
Core::Id type = deviceTypeId(k); Core::Id type = deviceTypeId(k);
QString typeDisplayName = tr("Unknown device type"); QString typeDisplayName = tr("Unknown device type");
if (type.isValid()) { if (type.isValid()) {
IDeviceFactory *factory = Utils::findOrDefault(IDeviceFactory::allDeviceFactories(), if (IDeviceFactory *factory = IDeviceFactory::find(type))
[&type](IDeviceFactory *factory) { typeDisplayName = factory->displayName();
return factory->availableCreationIds().contains(type);
});
if (factory)
typeDisplayName = factory->displayNameForId(type);
} }
return ItemList() << qMakePair(tr("Device type"), typeDisplayName); return ItemList() << qMakePair(tr("Device type"), typeDisplayName);
} }

View File

@@ -262,10 +262,8 @@ int ToolChainInformationConfigWidget::indexOf(QComboBox *cb, const ToolChain *tc
DeviceTypeInformationConfigWidget::DeviceTypeInformationConfigWidget(Kit *workingCopy, const KitInformation *ki) : DeviceTypeInformationConfigWidget::DeviceTypeInformationConfigWidget(Kit *workingCopy, const KitInformation *ki) :
KitConfigWidget(workingCopy, ki), m_comboBox(new QComboBox) KitConfigWidget(workingCopy, ki), m_comboBox(new QComboBox)
{ {
for (IDeviceFactory *factory : IDeviceFactory::allDeviceFactories()) { for (IDeviceFactory *factory : IDeviceFactory::allDeviceFactories())
foreach (Id id, factory->availableCreationIds()) m_comboBox->addItem(factory->displayName(), factory->deviceType().toSetting());
m_comboBox->addItem(factory->displayNameForId(id), id.toSetting());
}
m_comboBox->setToolTip(toolTip()); m_comboBox->setToolTip(toolTip());

View File

@@ -515,12 +515,10 @@ QSet<Id> KitFeatureProvider::availablePlatforms() const
QString KitFeatureProvider::displayNameForPlatform(Id id) const QString KitFeatureProvider::displayNameForPlatform(Id id) const
{ {
for (IDeviceFactory *f : IDeviceFactory::allDeviceFactories()) { if (IDeviceFactory *f = IDeviceFactory::find(id)) {
if (f->availableCreationIds().contains(id)) { const QString dn = f->displayName();
const QString dn = f->displayNameForId(id); QTC_CHECK(!dn.isEmpty());
QTC_ASSERT(!dn.isEmpty(), continue); return dn;
return dn;
}
} }
return QString(); return QString();
} }

View File

@@ -37,25 +37,18 @@
namespace Qnx { namespace Qnx {
namespace Internal { namespace Internal {
QnxDeviceFactory::QnxDeviceFactory(QObject *parent) : QnxDeviceFactory::QnxDeviceFactory()
ProjectExplorer::IDeviceFactory(parent) : ProjectExplorer::IDeviceFactory(Constants::QNX_QNX_OS_TYPE)
{ {
} }
QString QnxDeviceFactory::displayNameForId(Core::Id type) const QString QnxDeviceFactory::displayName() const
{ {
QTC_ASSERT(type == Constants::QNX_QNX_OS_TYPE, return QString());
return tr("QNX Device"); return tr("QNX Device");
} }
QList<Core::Id> QnxDeviceFactory::availableCreationIds() const QIcon QnxDeviceFactory::icon() const
{ {
return {Constants::QNX_QNX_OS_TYPE};
}
QIcon QnxDeviceFactory::iconForId(Core::Id type) const
{
Q_UNUSED(type)
using namespace Utils; using namespace Utils;
static const QIcon icon = static const QIcon icon =
Icon::combinedIcon({Icon({{":/qnx/images/qnxdevicesmall.png", Icon::combinedIcon({Icon({{":/qnx/images/qnxdevicesmall.png",
@@ -70,9 +63,8 @@ bool QnxDeviceFactory::canCreate() const
return true; return true;
} }
ProjectExplorer::IDevice::Ptr QnxDeviceFactory::create(Core::Id id) const ProjectExplorer::IDevice::Ptr QnxDeviceFactory::create() const
{ {
Q_UNUSED(id);
QnxDeviceWizard wizard; QnxDeviceWizard wizard;
if (wizard.exec() != QDialog::Accepted) if (wizard.exec() != QDialog::Accepted)
return ProjectExplorer::IDevice::Ptr(); return ProjectExplorer::IDevice::Ptr();
@@ -81,7 +73,7 @@ ProjectExplorer::IDevice::Ptr QnxDeviceFactory::create(Core::Id id) const
bool QnxDeviceFactory::canRestore(const QVariantMap &map) const bool QnxDeviceFactory::canRestore(const QVariantMap &map) const
{ {
return ProjectExplorer::IDevice::typeFromMap(map) == Constants::QNX_QNX_OS_TYPE; return ProjectExplorer::IDevice::typeFromMap(map) == deviceType();
} }
ProjectExplorer::IDevice::Ptr QnxDeviceFactory::restore(const QVariantMap &map) const ProjectExplorer::IDevice::Ptr QnxDeviceFactory::restore(const QVariantMap &map) const

View File

@@ -35,14 +35,13 @@ class QnxDeviceFactory : public ProjectExplorer::IDeviceFactory
Q_OBJECT Q_OBJECT
public: public:
explicit QnxDeviceFactory(QObject *parent = 0); QnxDeviceFactory();
QString displayNameForId(Core::Id type) const override; QString displayName() const override;
QList<Core::Id> availableCreationIds() const override; QIcon icon() const override;
QIcon iconForId(Core::Id type) const override;
bool canCreate() const override; bool canCreate() const override;
ProjectExplorer::IDevice::Ptr create(Core::Id id) const override; ProjectExplorer::IDevice::Ptr create() const override;
bool canRestore(const QVariantMap &map) const override; bool canRestore(const QVariantMap &map) const override;
ProjectExplorer::IDevice::Ptr restore(const QVariantMap &map) const override; ProjectExplorer::IDevice::Ptr restore(const QVariantMap &map) const override;

View File

@@ -39,31 +39,23 @@ using namespace ProjectExplorer;
namespace RemoteLinux { namespace RemoteLinux {
GenericLinuxDeviceConfigurationFactory::GenericLinuxDeviceConfigurationFactory(QObject *parent) GenericLinuxDeviceConfigurationFactory::GenericLinuxDeviceConfigurationFactory()
: IDeviceFactory(parent) : IDeviceFactory(Constants::GenericLinuxOsType)
{ {
} }
QString GenericLinuxDeviceConfigurationFactory::displayNameForId(Core::Id type) const QString GenericLinuxDeviceConfigurationFactory::displayName() const
{ {
QTC_ASSERT(type == Constants::GenericLinuxOsType, return QString());
return tr("Generic Linux Device"); return tr("Generic Linux Device");
} }
QList<Core::Id> GenericLinuxDeviceConfigurationFactory::availableCreationIds() const QIcon GenericLinuxDeviceConfigurationFactory::icon() const
{ {
return QList<Core::Id>() << Core::Id(Constants::GenericLinuxOsType);
}
QIcon GenericLinuxDeviceConfigurationFactory::iconForId(Core::Id type) const
{
Q_UNUSED(type)
return QIcon(); return QIcon();
} }
IDevice::Ptr GenericLinuxDeviceConfigurationFactory::create(Core::Id id) const IDevice::Ptr GenericLinuxDeviceConfigurationFactory::create() const
{ {
QTC_ASSERT(id == Constants::GenericLinuxOsType, return IDevice::Ptr());
GenericLinuxDeviceConfigurationWizard wizard(Core::ICore::mainWindow()); GenericLinuxDeviceConfigurationWizard wizard(Core::ICore::mainWindow());
if (wizard.exec() != QDialog::Accepted) if (wizard.exec() != QDialog::Accepted)
return IDevice::Ptr(); return IDevice::Ptr();
@@ -72,7 +64,7 @@ IDevice::Ptr GenericLinuxDeviceConfigurationFactory::create(Core::Id id) const
bool GenericLinuxDeviceConfigurationFactory::canRestore(const QVariantMap &map) const bool GenericLinuxDeviceConfigurationFactory::canRestore(const QVariantMap &map) const
{ {
return IDevice::typeFromMap(map) == Constants::GenericLinuxOsType; return IDevice::typeFromMap(map) == deviceType();
} }
IDevice::Ptr GenericLinuxDeviceConfigurationFactory::restore(const QVariantMap &map) const IDevice::Ptr GenericLinuxDeviceConfigurationFactory::restore(const QVariantMap &map) const

View File

@@ -37,13 +37,12 @@ class REMOTELINUX_EXPORT GenericLinuxDeviceConfigurationFactory
Q_OBJECT Q_OBJECT
public: public:
GenericLinuxDeviceConfigurationFactory(QObject *parent = 0); GenericLinuxDeviceConfigurationFactory();
QString displayNameForId(Core::Id type) const override; QString displayName() const override;
QList<Core::Id> availableCreationIds() const override; QIcon icon() const override;
QIcon iconForId(Core::Id type) const override;
ProjectExplorer::IDevice::Ptr create(Core::Id id) const override; ProjectExplorer::IDevice::Ptr create() const override;
bool canRestore(const QVariantMap &map) const override; bool canRestore(const QVariantMap &map) const override;
ProjectExplorer::IDevice::Ptr restore(const QVariantMap &map) const override; ProjectExplorer::IDevice::Ptr restore(const QVariantMap &map) const override;
}; };

View File

@@ -47,9 +47,8 @@ using QtSupport::QtVersionManager;
namespace WinRt { namespace WinRt {
namespace Internal { namespace Internal {
WinRtDeviceFactory::WinRtDeviceFactory() WinRtDeviceFactory::WinRtDeviceFactory(Core::Id deviceType)
: m_process(0) : ProjectExplorer::IDeviceFactory(deviceType)
, m_initialized(false)
{ {
if (allPrerequisitesLoaded()) { if (allPrerequisitesLoaded()) {
onPrerequisitesLoaded(); onPrerequisitesLoaded();
@@ -62,21 +61,13 @@ WinRtDeviceFactory::WinRtDeviceFactory()
} }
} }
QString WinRtDeviceFactory::displayNameForId(Core::Id type) const QString WinRtDeviceFactory::displayName() const
{ {
return WinRtDevice::displayNameForType(type); return WinRtDevice::displayNameForType(deviceType());
} }
QList<Core::Id> WinRtDeviceFactory::availableCreationIds() const QIcon WinRtDeviceFactory::icon() const
{ {
return QList<Core::Id>() << Constants::WINRT_DEVICE_TYPE_LOCAL
<< Constants::WINRT_DEVICE_TYPE_PHONE
<< Constants::WINRT_DEVICE_TYPE_EMULATOR;
}
QIcon WinRtDeviceFactory::iconForId(Core::Id type) const
{
Q_UNUSED(type)
using namespace Utils; using namespace Utils;
return Icon::combinedIcon({Icon({{":/winrt/images/winrtdevicesmall.png", return Icon::combinedIcon({Icon({{":/winrt/images/winrtdevicesmall.png",
Theme::PanelTextColorDark}}, Icon::Tint), Theme::PanelTextColorDark}}, Icon::Tint),
@@ -84,16 +75,15 @@ QIcon WinRtDeviceFactory::iconForId(Core::Id type) const
Theme::IconsBaseColor}})}); Theme::IconsBaseColor}})});
} }
IDevice::Ptr WinRtDeviceFactory::create(Core::Id id) const IDevice::Ptr WinRtDeviceFactory::create() const
{ {
Q_UNUSED(id);
QTC_CHECK(false); QTC_CHECK(false);
return IDevice::Ptr(); return IDevice::Ptr();
} }
bool WinRtDeviceFactory::canRestore(const QVariantMap &map) const bool WinRtDeviceFactory::canRestore(const QVariantMap &map) const
{ {
return availableCreationIds().contains(IDevice::typeFromMap(map)); return IDevice::typeFromMap(map) == deviceType();
} }
IDevice::Ptr WinRtDeviceFactory::restore(const QVariantMap &map) const IDevice::Ptr WinRtDeviceFactory::restore(const QVariantMap &map) const

View File

@@ -35,12 +35,11 @@ class WinRtDeviceFactory : public ProjectExplorer::IDeviceFactory
{ {
Q_OBJECT Q_OBJECT
public: public:
WinRtDeviceFactory(); explicit WinRtDeviceFactory(Core::Id deviceType);
QString displayNameForId(Core::Id type) const override; QString displayName() const override;
QList<Core::Id> availableCreationIds() const override; QIcon icon() const override;
QIcon iconForId(Core::Id type) const override;
bool canCreate() const override { return false; } bool canCreate() const override { return false; }
ProjectExplorer::IDevice::Ptr create(Core::Id id) const override; ProjectExplorer::IDevice::Ptr create() const override;
bool canRestore(const QVariantMap &map) const override; bool canRestore(const QVariantMap &map) const override;
ProjectExplorer::IDevice::Ptr restore(const QVariantMap &map) const override; ProjectExplorer::IDevice::Ptr restore(const QVariantMap &map) const override;
@@ -55,8 +54,8 @@ private:
QString findRunnerFilePath() const; QString findRunnerFilePath() const;
void parseRunnerOutput(const QByteArray &output) const; void parseRunnerOutput(const QByteArray &output) const;
Utils::QtcProcess *m_process; Utils::QtcProcess *m_process = nullptr;
bool m_initialized; bool m_initialized = false;
}; };
} // Internal } // Internal

View File

@@ -52,7 +52,9 @@ public:
WinRtPhoneDeployConfigurationFactory phoneDeployConfigFactory; WinRtPhoneDeployConfigurationFactory phoneDeployConfigFactory;
WinRtEmulatorDeployConfigurationFactory emulatorDeployFactory; WinRtEmulatorDeployConfigurationFactory emulatorDeployFactory;
WinRtDeployStepFactory deployStepFactory; WinRtDeployStepFactory deployStepFactory;
WinRtDeviceFactory deviceFactory; WinRtDeviceFactory localDeviceFactory{Constants::WINRT_DEVICE_TYPE_LOCAL};
WinRtDeviceFactory phoneDeviceFactory{Constants::WINRT_DEVICE_TYPE_PHONE};
WinRtDeviceFactory emulatorDeviceFactory{Constants::WINRT_DEVICE_TYPE_EMULATOR};
}; };
WinRtPlugin::WinRtPlugin() WinRtPlugin::WinRtPlugin()