diff --git a/src/plugins/android/androidplugin.cpp b/src/plugins/android/androidplugin.cpp index 607a29e7cac..27b3ae99bc3 100644 --- a/src/plugins/android/androidplugin.cpp +++ b/src/plugins/android/androidplugin.cpp @@ -88,6 +88,25 @@ public: } }; +class QmlPreviewRunWorkerFactory : public RunWorkerFactory +{ +public: + QmlPreviewRunWorkerFactory() + { + addSupportedRunMode(QML_PREVIEW_RUN_MODE); + setProducer([](RunControl *runControl) -> RunWorker * { + const Runnable runnable = runControl->runConfiguration()->runnable(); + return new AndroidQmlToolingSupport(runControl, runnable.executable); + }); + addConstraint([](RunConfiguration *runConfig) { + return runConfig->isEnabled() + && runConfig->id().name().startsWith("QmlProjectManager.QmlRunConfiguration") + && DeviceTypeKitAspect::deviceTypeId(runConfig->target()->kit()) + == Android::Constants::ANDROID_DEVICE_TYPE; + }); + } +}; + class AndroidPluginPrivate : public QObject { public: @@ -131,6 +150,7 @@ public: AndroidPackageInstallationFactory packackeInstallationFactory; AndroidManifestEditorFactory manifestEditorFactory; AndroidRunConfigurationFactory runConfigFactory; + SimpleRunWorkerFactory runWorkerFactory; SimpleRunWorkerFactory debugWorkerFactory{DEBUG_RUN_MODE}; @@ -138,6 +158,8 @@ public: profilerWorkerFactory{QML_PROFILER_RUN_MODE}; SimpleRunWorkerFactory qmlPreviewWorkerFactory{QML_PREVIEW_RUN_MODE}; + QmlPreviewRunWorkerFactory qmlPreviewWorkerFactory2; + AndroidBuildApkStepFactory buildApkStepFactory; AndroidGdbServerKitAspect gdbServerKitAspect; }; @@ -152,16 +174,6 @@ bool AndroidPlugin::initialize(const QStringList &arguments, QString *errorMessa Q_UNUSED(arguments); Q_UNUSED(errorMessage); - RunControl::registerWorker(QML_PREVIEW_RUN_MODE, [](RunControl *runControl) -> RunWorker* { - const Runnable runnable = runControl->runConfiguration()->runnable(); - return new AndroidQmlToolingSupport(runControl, runnable.executable); - }, [](RunConfiguration *runConfig) { - return runConfig->isEnabled() - && runConfig->id().name().startsWith("QmlProjectManager.QmlRunConfiguration") - && DeviceTypeKitAspect::deviceTypeId(runConfig->target()->kit()) - == Android::Constants::ANDROID_DEVICE_TYPE; - }); - d = new AndroidPluginPrivate; connect(KitManager::instance(), &KitManager::kitsLoaded, diff --git a/src/plugins/projectexplorer/runcontrol.h b/src/plugins/projectexplorer/runcontrol.h index f4b5ae5c823..b2164bc44a0 100644 --- a/src/plugins/projectexplorer/runcontrol.h +++ b/src/plugins/projectexplorer/runcontrol.h @@ -257,14 +257,6 @@ public: static void registerWorkerCreator(Core::Id id, const WorkerCreator &workerCreator); - static void registerWorker(Core::Id runMode, const WorkerCreator &producer, - const Constraint &constraint = {}) - { - auto factory = new RunWorkerFactory; - factory->setProducer(producer); - factory->addSupportedRunMode(runMode); - factory->addConstraint(constraint); - } template static void registerWorker(Core::Id runMode, const Constraint &constraint) { diff --git a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp index 92a4fe0a444..55e2974e699 100644 --- a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp @@ -80,12 +80,34 @@ namespace Internal { Q_GLOBAL_STATIC(QmlProfilerSettings, qmlProfilerGlobalSettings) +bool constraint(RunConfiguration *runConfiguration) +{ + Target *target = runConfiguration ? runConfiguration->target() : nullptr; + Kit *kit = target ? target->kit() : nullptr; + return DeviceTypeKitAspect::deviceTypeId(kit) + == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE; +} + +class QmlProfilerRunWorkerFactory : public RunWorkerFactory +{ +public: + QmlProfilerRunWorkerFactory(QmlProfilerTool *tool) + { + addSupportedRunMode(ProjectExplorer::Constants::QML_PROFILER_RUN_MODE); + setProducer([tool](RunControl *runControl) { + return new LocalQmlProfilerSupport(tool, runControl); + }); + addConstraint(constraint); + } +}; + class QmlProfilerPluginPrivate { public: QmlProfilerTool m_profilerTool; QmlProfilerOptionsPage m_profilerOptionsPage; QmlProfilerActions m_actions; + QmlProfilerRunWorkerFactory m_profilerWorkerFactory{&m_profilerTool}; }; bool QmlProfilerPlugin::initialize(const QStringList &arguments, QString *errorString) @@ -102,13 +124,6 @@ void QmlProfilerPlugin::extensionsInitialized() RunConfiguration::registerAspect(); - auto constraint = [](RunConfiguration *runConfiguration) { - Target *target = runConfiguration ? runConfiguration->target() : nullptr; - Kit *kit = target ? target->kit() : nullptr; - return DeviceTypeKitAspect::deviceTypeId(kit) - == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE; - }; - RunControl::registerWorkerCreator(ProjectExplorer::Constants::QML_PROFILER_RUN_MODE, [this](RunControl *runControl) { auto runner = new QmlProfilerRunner(runControl); @@ -116,11 +131,6 @@ void QmlProfilerPlugin::extensionsInitialized() &d->m_profilerTool, &QmlProfilerTool::finalizeRunControl); return runner; }); - - RunControl::registerWorker(ProjectExplorer::Constants::QML_PROFILER_RUN_MODE, - [this](ProjectExplorer::RunControl *runControl) { - return new LocalQmlProfilerSupport(&d->m_profilerTool, runControl); - }, constraint); } ExtensionSystem::IPlugin::ShutdownFlag QmlProfilerPlugin::aboutToShutdown()