forked from qt-creator/qt-creator
iOS: Dissolve IosRunControlFactory
Follows suite. Change-Id: I2ef11d19d9a2d3d0f3f282a94f98a40478273fbc Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
This commit is contained in:
@@ -36,17 +36,22 @@
|
|||||||
#include "iosdsymbuildstep.h"
|
#include "iosdsymbuildstep.h"
|
||||||
#include "iosqtversionfactory.h"
|
#include "iosqtversionfactory.h"
|
||||||
#include "iosrunfactories.h"
|
#include "iosrunfactories.h"
|
||||||
|
#include "iosrunner.h"
|
||||||
#include "iossettingspage.h"
|
#include "iossettingspage.h"
|
||||||
#include "iossimulator.h"
|
#include "iossimulator.h"
|
||||||
#include "iossimulatorfactory.h"
|
#include "iossimulatorfactory.h"
|
||||||
#include "iostoolhandler.h"
|
#include "iostoolhandler.h"
|
||||||
|
#include "iosrunconfiguration.h"
|
||||||
|
|
||||||
|
#include <projectexplorer/devicesupport/devicemanager.h>
|
||||||
#include <projectexplorer/kitmanager.h>
|
#include <projectexplorer/kitmanager.h>
|
||||||
|
#include <projectexplorer/runconfiguration.h>
|
||||||
|
|
||||||
#include <qtsupport/qtversionmanager.h>
|
#include <qtsupport/qtversionmanager.h>
|
||||||
|
|
||||||
#include <QtPlugin>
|
#include <QtPlugin>
|
||||||
|
|
||||||
#include <projectexplorer/devicesupport/devicemanager.h>
|
using namespace ProjectExplorer;
|
||||||
|
|
||||||
namespace Ios {
|
namespace Ios {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
@@ -67,7 +72,6 @@ bool IosPlugin::initialize(const QStringList &arguments, QString *errorMessage)
|
|||||||
|
|
||||||
addAutoReleasedObject(new Internal::IosBuildConfigurationFactory);
|
addAutoReleasedObject(new Internal::IosBuildConfigurationFactory);
|
||||||
addAutoReleasedObject(new Internal::IosToolChainFactory);
|
addAutoReleasedObject(new Internal::IosToolChainFactory);
|
||||||
addAutoReleasedObject(new Internal::IosRunControlFactory);
|
|
||||||
addAutoReleasedObject(new Internal::IosRunConfigurationFactory);
|
addAutoReleasedObject(new Internal::IosRunConfigurationFactory);
|
||||||
addAutoReleasedObject(new Internal::IosSettingsPage);
|
addAutoReleasedObject(new Internal::IosSettingsPage);
|
||||||
addAutoReleasedObject(new Internal::IosQtVersionFactory);
|
addAutoReleasedObject(new Internal::IosQtVersionFactory);
|
||||||
@@ -78,6 +82,17 @@ bool IosPlugin::initialize(const QStringList &arguments, QString *errorMessage)
|
|||||||
addAutoReleasedObject(new Internal::IosDsymBuildStepFactory);
|
addAutoReleasedObject(new Internal::IosDsymBuildStepFactory);
|
||||||
addAutoReleasedObject(new Internal::IosDeployConfigurationFactory);
|
addAutoReleasedObject(new Internal::IosDeployConfigurationFactory);
|
||||||
|
|
||||||
|
auto constraint = [](RunConfiguration *runConfig) {
|
||||||
|
return qobject_cast<Internal::IosRunConfiguration *>(runConfig) != nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
RunControl::registerWorker<Internal::IosRunSupport>
|
||||||
|
(ProjectExplorer::Constants::NORMAL_RUN_MODE, constraint);
|
||||||
|
RunControl::registerWorker<Internal::IosDebugSupport>
|
||||||
|
(ProjectExplorer::Constants::DEBUG_RUN_MODE, constraint);
|
||||||
|
RunControl::registerWorker<Internal::IosQmlProfilerSupport>
|
||||||
|
(ProjectExplorer::Constants::QML_PROFILER_RUN_MODE, constraint);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,6 @@
|
|||||||
|
|
||||||
#include "iosconstants.h"
|
#include "iosconstants.h"
|
||||||
#include "iosrunconfiguration.h"
|
#include "iosrunconfiguration.h"
|
||||||
#include "iosrunner.h"
|
|
||||||
#include "iosmanager.h"
|
#include "iosmanager.h"
|
||||||
|
|
||||||
#include <debugger/analyzer/analyzermanager.h>
|
#include <debugger/analyzer/analyzermanager.h>
|
||||||
@@ -143,53 +142,5 @@ RunConfiguration *IosRunConfigurationFactory::doRestore(Target *parent, const QV
|
|||||||
return new IosRunConfiguration(parent, id, pathFromId(id));
|
return new IosRunConfiguration(parent, id, pathFromId(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
IosRunControlFactory::IosRunControlFactory(QObject *parent)
|
|
||||||
: IRunControlFactory(parent)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool IosRunControlFactory::canRun(RunConfiguration *runConfiguration,
|
|
||||||
Core::Id mode) const
|
|
||||||
{
|
|
||||||
if (mode != ProjectExplorer::Constants::NORMAL_RUN_MODE
|
|
||||||
&& mode != ProjectExplorer::Constants::DEBUG_RUN_MODE
|
|
||||||
&& mode != ProjectExplorer::Constants::QML_PROFILER_RUN_MODE) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return qobject_cast<IosRunConfiguration *>(runConfiguration);
|
|
||||||
}
|
|
||||||
|
|
||||||
RunControl *IosRunControlFactory::create(RunConfiguration *runConfig,
|
|
||||||
Core::Id mode, QString *errorMessage)
|
|
||||||
{
|
|
||||||
Q_UNUSED(errorMessage);
|
|
||||||
Q_ASSERT(canRun(runConfig, mode));
|
|
||||||
IosRunConfiguration *rc = qobject_cast<IosRunConfiguration *>(runConfig);
|
|
||||||
Q_ASSERT(rc);
|
|
||||||
Target *target = runConfig->target();
|
|
||||||
QTC_ASSERT(target, return 0);
|
|
||||||
|
|
||||||
Core::Id devId = DeviceKitInformation::deviceId(rc->target()->kit());
|
|
||||||
// The device can only run an application at a time, if an app is running stop it.
|
|
||||||
if (m_activeRunControls.contains(devId)) {
|
|
||||||
if (QPointer<RunControl> activeRunControl = m_activeRunControls[devId])
|
|
||||||
activeRunControl->initiateStop();
|
|
||||||
m_activeRunControls.remove(devId);
|
|
||||||
}
|
|
||||||
auto runControl = new RunControl(runConfig, mode);
|
|
||||||
if (mode == ProjectExplorer::Constants::NORMAL_RUN_MODE) {
|
|
||||||
(void) new Ios::Internal::IosRunSupport(runControl);
|
|
||||||
} else if (mode == ProjectExplorer::Constants::QML_PROFILER_RUN_MODE) {
|
|
||||||
(void) new IosQmlProfilerSupport(runControl);
|
|
||||||
} else {
|
|
||||||
(void) new IosDebugSupport(runControl);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (devId.isValid())
|
|
||||||
m_activeRunControls[devId] = runControl;
|
|
||||||
return runControl;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Ios
|
} // namespace Ios
|
||||||
|
|||||||
@@ -29,8 +29,6 @@
|
|||||||
#include <qmakeprojectmanager/qmakerunconfigurationfactory.h>
|
#include <qmakeprojectmanager/qmakerunconfigurationfactory.h>
|
||||||
|
|
||||||
namespace ProjectExplorer {
|
namespace ProjectExplorer {
|
||||||
class RunControl;
|
|
||||||
class RunConfigWidget;
|
|
||||||
class Target;
|
class Target;
|
||||||
class Node;
|
class Node;
|
||||||
} // namespace ProjectExplorer
|
} // namespace ProjectExplorer
|
||||||
@@ -68,20 +66,5 @@ private:
|
|||||||
const QVariantMap &map) override;
|
const QVariantMap &map) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class IosRunControlFactory : public ProjectExplorer::IRunControlFactory
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit IosRunControlFactory(QObject *parent = 0);
|
|
||||||
|
|
||||||
bool canRun(ProjectExplorer::RunConfiguration *runConfiguration,
|
|
||||||
Core::Id mode) const override;
|
|
||||||
ProjectExplorer::RunControl *create(ProjectExplorer::RunConfiguration *runConfiguration,
|
|
||||||
Core::Id mode, QString *) override;
|
|
||||||
private:
|
|
||||||
mutable QMap<Core::Id, QPointer<ProjectExplorer::RunControl> > m_activeRunControls;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Ios
|
} // namespace Ios
|
||||||
|
|||||||
@@ -74,9 +74,29 @@ using namespace Utils;
|
|||||||
namespace Ios {
|
namespace Ios {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
|
static void stopRunningRunControl(RunControl *runControl)
|
||||||
|
{
|
||||||
|
static QMap<Core::Id, QPointer<RunControl>> activeRunControls;
|
||||||
|
|
||||||
|
RunConfiguration *runConfig = runControl->runConfiguration();
|
||||||
|
Target *target = runConfig->target();
|
||||||
|
Core::Id devId = DeviceKitInformation::deviceId(target->kit());
|
||||||
|
|
||||||
|
// The device can only run an application at a time, if an app is running stop it.
|
||||||
|
if (activeRunControls.contains(devId)) {
|
||||||
|
if (QPointer<RunControl> activeRunControl = activeRunControls[devId])
|
||||||
|
activeRunControl->initiateStop();
|
||||||
|
activeRunControls.remove(devId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (devId.isValid())
|
||||||
|
activeRunControls[devId] = runControl;
|
||||||
|
}
|
||||||
|
|
||||||
IosRunner::IosRunner(RunControl *runControl)
|
IosRunner::IosRunner(RunControl *runControl)
|
||||||
: RunWorker(runControl)
|
: RunWorker(runControl)
|
||||||
{
|
{
|
||||||
|
stopRunningRunControl(runControl);
|
||||||
auto runConfig = qobject_cast<IosRunConfiguration *>(runControl->runConfiguration());
|
auto runConfig = qobject_cast<IosRunConfiguration *>(runControl->runConfiguration());
|
||||||
m_bundleDir = runConfig->bundleDirectory().toString();
|
m_bundleDir = runConfig->bundleDirectory().toString();
|
||||||
m_arguments = QStringList(runConfig->commandLineArguments());
|
m_arguments = QStringList(runConfig->commandLineArguments());
|
||||||
|
|||||||
Reference in New Issue
Block a user