forked from qt-creator/qt-creator
ios: disable run button while an application is running
Task-number: QTCREATORBUG-10670 Change-Id: I23b553984b2c1848983299613004cbd910dc92dc Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
This commit is contained in:
@@ -157,7 +157,26 @@ bool IosRunControlFactory::canRun(RunConfiguration *runConfiguration,
|
||||
{
|
||||
if (mode != NormalRunMode && mode != DebugRunMode)
|
||||
return false;
|
||||
return qobject_cast<IosRunConfiguration *>(runConfiguration);
|
||||
IosRunConfiguration *rc = qobject_cast<IosRunConfiguration *>(runConfiguration);
|
||||
if (!rc)
|
||||
return false;
|
||||
|
||||
IDevice::ConstPtr device = DeviceKitInformation::device(rc->target()->kit());
|
||||
if (!device || device->deviceState() != IDevice::DeviceReadyToUse)
|
||||
return false;
|
||||
|
||||
// The device can only run the same application once, any subsequent runs will
|
||||
// not launch a second instance. Disable the Run button if the application is already
|
||||
// running on the device.
|
||||
if (m_activeRunControls.contains(device->id())) {
|
||||
QPointer<ProjectExplorer::RunControl> activeRunControl = m_activeRunControls[device->id()];
|
||||
if (activeRunControl && activeRunControl.data()->isRunning())
|
||||
return false;
|
||||
else
|
||||
m_activeRunControls.remove(device->id());
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
RunControl *IosRunControlFactory::create(RunConfiguration *runConfig,
|
||||
@@ -166,10 +185,15 @@ RunControl *IosRunControlFactory::create(RunConfiguration *runConfig,
|
||||
Q_ASSERT(canRun(runConfig, mode));
|
||||
IosRunConfiguration *rc = qobject_cast<IosRunConfiguration *>(runConfig);
|
||||
Q_ASSERT(rc);
|
||||
RunControl *res = 0;
|
||||
if (mode == NormalRunMode)
|
||||
return new Ios::Internal::IosRunControl(rc);
|
||||
res = new Ios::Internal::IosRunControl(rc);
|
||||
else
|
||||
return IosDebugSupport::createDebugRunControl(rc, errorMessage);
|
||||
res = IosDebugSupport::createDebugRunControl(rc, errorMessage);
|
||||
IDevice::ConstPtr device = DeviceKitInformation::device(rc->target()->kit());
|
||||
if (device)
|
||||
m_activeRunControls[device->id()] = res;
|
||||
return res;
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
Reference in New Issue
Block a user