forked from qt-creator/qt-creator
Device support: Make device actions a little more flexible.
We give the implementors of the IDevice subclasses a litte more freedom by not assuming a modal dialog. Change-Id: I629a3ab7fc50a73229e6439af53f1bae0cf0259e Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
This commit is contained in:
@@ -103,19 +103,21 @@ QString MaddeDevice::displayNameForActionId(Core::Id actionId) const
|
|||||||
return QString(); // Can't happen.
|
return QString(); // Can't happen.
|
||||||
}
|
}
|
||||||
|
|
||||||
QDialog *MaddeDevice::createAction(Core::Id actionId, QWidget *parent) const
|
void MaddeDevice::executeAction(Core::Id actionId, QWidget *parent)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(actionIds().contains(actionId), return 0);
|
QTC_ASSERT(actionIds().contains(actionId), return);
|
||||||
|
|
||||||
|
QDialog *d;
|
||||||
const LinuxDeviceConfiguration::ConstPtr device
|
const LinuxDeviceConfiguration::ConstPtr device
|
||||||
= sharedFromThis().staticCast<const LinuxDeviceConfiguration>();
|
= sharedFromThis().staticCast<const LinuxDeviceConfiguration>();
|
||||||
if (actionId == Core::Id(MaddeDeviceTestActionId))
|
if (actionId == Core::Id(MaddeDeviceTestActionId))
|
||||||
return new LinuxDeviceTestDialog(device, new MaddeDeviceTester, parent);
|
d = new LinuxDeviceTestDialog(device, new MaddeDeviceTester, parent);
|
||||||
if (actionId == Core::Id(MaddeRemoteProcessesActionId))
|
else if (actionId == Core::Id(MaddeRemoteProcessesActionId))
|
||||||
return new RemoteLinuxProcessesDialog(new GenericRemoteLinuxProcessList(device), parent);
|
d = new RemoteLinuxProcessesDialog(new GenericRemoteLinuxProcessList(device), parent);
|
||||||
if (actionId == Core::Id(Constants::GenericDeployKeyToDeviceActionId))
|
else if (actionId == Core::Id(Constants::GenericDeployKeyToDeviceActionId))
|
||||||
return PublicKeyDeploymentDialog::createDialog(device, parent);
|
d = PublicKeyDeploymentDialog::createDialog(device, parent);
|
||||||
return 0; // Can't happen.
|
if (d)
|
||||||
|
d->exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString MaddeDevice::maddeDisplayType(const QString &type)
|
QString MaddeDevice::maddeDisplayType(const QString &type)
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public:
|
|||||||
QString displayType() const;
|
QString displayType() const;
|
||||||
QList<Core::Id> actionIds() const;
|
QList<Core::Id> actionIds() const;
|
||||||
QString displayNameForActionId(Core::Id actionId) const;
|
QString displayNameForActionId(Core::Id actionId) const;
|
||||||
QDialog *createAction(Core::Id actionId, QWidget *parent) const;
|
void executeAction(Core::Id actionId, QWidget *parent);
|
||||||
ProjectExplorer::IDevice::Ptr clone() const;
|
ProjectExplorer::IDevice::Ptr clone() const;
|
||||||
static QString maddeDisplayType(const QString &type);
|
static QString maddeDisplayType(const QString &type);
|
||||||
|
|
||||||
|
|||||||
@@ -283,12 +283,9 @@ void DeviceSettingsWidget::clearDetails()
|
|||||||
|
|
||||||
void DeviceSettingsWidget::handleAdditionalActionRequest(int actionId)
|
void DeviceSettingsWidget::handleAdditionalActionRequest(int actionId)
|
||||||
{
|
{
|
||||||
const IDevice::ConstPtr &device = currentDevice();
|
const IDevice::Ptr &device = m_deviceManager->mutableDeviceAt(currentIndex());
|
||||||
QTC_ASSERT(device, return);
|
QTC_ASSERT(device, return);
|
||||||
QDialog * const action = device->createAction(Core::Id::fromUniqueIdentifier(actionId), this);
|
device->executeAction(Core::Id::fromUniqueIdentifier(actionId), this);
|
||||||
if (action)
|
|
||||||
action->exec();
|
|
||||||
delete action;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -114,10 +114,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \fn QDialog *ProjectExplorer::IDevice::createAction(const QString &actionId) const
|
* \fn void ProjectExplorer::IDevice::executeAction(Core::Id actionId, QWidget *parent)
|
||||||
* \brief Produces a dialog implementing the respective action. The dialog is supposed to be
|
* \brief Executes the respective action. This is typically done via some sort of dialog or
|
||||||
* modal, so implementers must make sure to make whatever it does interruptible as
|
* wizard, so a parent widget argument is provided.
|
||||||
* to not needlessly block the UI.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|||||||
@@ -41,7 +41,6 @@
|
|||||||
#include <QVariantMap>
|
#include <QVariantMap>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
class QDialog;
|
|
||||||
class QWidget;
|
class QWidget;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
@@ -83,7 +82,7 @@ public:
|
|||||||
virtual IDeviceWidget *createWidget() = 0;
|
virtual IDeviceWidget *createWidget() = 0;
|
||||||
virtual QList<Core::Id> actionIds() const = 0;
|
virtual QList<Core::Id> actionIds() const = 0;
|
||||||
virtual QString displayNameForActionId(Core::Id actionId) const = 0;
|
virtual QString displayNameForActionId(Core::Id actionId) const = 0;
|
||||||
virtual QDialog *createAction(Core::Id actionId, QWidget *parent = 0) const = 0;
|
virtual void executeAction(Core::Id actionId, QWidget *parent = 0) = 0;
|
||||||
|
|
||||||
enum AvailabilityState { DeviceAvailable, DeviceUnavailable, DeviceAvailabilityUnknown };
|
enum AvailabilityState { DeviceAvailable, DeviceUnavailable, DeviceAvailabilityUnknown };
|
||||||
AvailabilityState availability() const;
|
AvailabilityState availability() const;
|
||||||
|
|||||||
@@ -207,11 +207,10 @@ QString SymbianIDevice::displayNameForActionId(Core::Id actionId) const
|
|||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
QDialog *SymbianIDevice::createAction(Core::Id actionId, QWidget *parent) const
|
void SymbianIDevice::executeAction(Core::Id actionId, QWidget *parent)
|
||||||
{
|
{
|
||||||
Q_UNUSED(actionId);
|
Q_UNUSED(actionId);
|
||||||
Q_UNUSED(parent);
|
Q_UNUSED(parent);
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariantMap SymbianIDevice::toMap() const
|
QVariantMap SymbianIDevice::toMap() const
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ public:
|
|||||||
ProjectExplorer::IDeviceWidget* createWidget();
|
ProjectExplorer::IDeviceWidget* createWidget();
|
||||||
QList<Core::Id> actionIds() const;
|
QList<Core::Id> actionIds() const;
|
||||||
QString displayNameForActionId(Core::Id actionId) const;
|
QString displayNameForActionId(Core::Id actionId) const;
|
||||||
QDialog* createAction(Core::Id actionId, QWidget*parent) const;
|
void executeAction(Core::Id actionId, QWidget*parent);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
SymbianIDevice(const SymbianIDevice &other);
|
SymbianIDevice(const SymbianIDevice &other);
|
||||||
|
|||||||
@@ -120,19 +120,21 @@ QString LinuxDeviceConfiguration::displayNameForActionId(Core::Id actionId) cons
|
|||||||
return QString(); // Can't happen.
|
return QString(); // Can't happen.
|
||||||
}
|
}
|
||||||
|
|
||||||
QDialog *LinuxDeviceConfiguration::createAction(Core::Id actionId, QWidget *parent) const
|
void LinuxDeviceConfiguration::executeAction(Core::Id actionId, QWidget *parent)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(actionIds().contains(actionId), return 0);
|
QTC_ASSERT(actionIds().contains(actionId), return);
|
||||||
|
|
||||||
|
QDialog *d;
|
||||||
const LinuxDeviceConfiguration::ConstPtr device
|
const LinuxDeviceConfiguration::ConstPtr device
|
||||||
= sharedFromThis().staticCast<const LinuxDeviceConfiguration>();
|
= sharedFromThis().staticCast<const LinuxDeviceConfiguration>();
|
||||||
if (actionId == Core::Id(Constants::GenericTestDeviceActionId))
|
if (actionId == Core::Id(Constants::GenericTestDeviceActionId))
|
||||||
return new LinuxDeviceTestDialog(device, new GenericLinuxDeviceTester, parent);
|
d = new LinuxDeviceTestDialog(device, new GenericLinuxDeviceTester, parent);
|
||||||
if (actionId == Core::Id(Constants::GenericRemoteProcessesActionId))
|
else if (actionId == Core::Id(Constants::GenericRemoteProcessesActionId))
|
||||||
return new RemoteLinuxProcessesDialog(new GenericRemoteLinuxProcessList(device, parent));
|
d = new RemoteLinuxProcessesDialog(new GenericRemoteLinuxProcessList(device, parent));
|
||||||
if (actionId == Core::Id(Constants::GenericDeployKeyToDeviceActionId))
|
else if (actionId == Core::Id(Constants::GenericDeployKeyToDeviceActionId))
|
||||||
return PublicKeyDeploymentDialog::createDialog(device, parent);
|
d = PublicKeyDeploymentDialog::createDialog(device, parent);
|
||||||
return 0; // Can't happen.
|
if (d)
|
||||||
|
d->exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
LinuxDeviceConfiguration::LinuxDeviceConfiguration() : d(new LinuxDeviceConfigurationPrivate)
|
LinuxDeviceConfiguration::LinuxDeviceConfiguration() : d(new LinuxDeviceConfigurationPrivate)
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ public:
|
|||||||
ProjectExplorer::IDeviceWidget *createWidget();
|
ProjectExplorer::IDeviceWidget *createWidget();
|
||||||
QList<Core::Id> actionIds() const;
|
QList<Core::Id> actionIds() const;
|
||||||
QString displayNameForActionId(Core::Id actionId) const;
|
QString displayNameForActionId(Core::Id actionId) const;
|
||||||
QDialog *createAction(Core::Id actionId, QWidget *parent) const;
|
void executeAction(Core::Id actionId, QWidget *parent);
|
||||||
void fromMap(const QVariantMap &map);
|
void fromMap(const QVariantMap &map);
|
||||||
ProjectExplorer::IDevice::Ptr clone() const;
|
ProjectExplorer::IDevice::Ptr clone() const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user