forked from qt-creator/qt-creator
		
	ProjectExplorer: Streamline use of WorkerFactories
Change-Id: I58693457f6441f6992cae61365a58b3d2d933986 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
		@@ -1982,22 +1982,6 @@ void ProjectExplorerPluginPrivate::buildStateChanged(Project * pro)
 | 
			
		||||
    updateActions();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NBS TODO implement more than one runner
 | 
			
		||||
using RunControlFactory = std::function<RunControl *(RunConfiguration *, Core::Id, QString *)>;
 | 
			
		||||
 | 
			
		||||
static RunControlFactory findRunControlFactory(RunConfiguration *config, Core::Id mode)
 | 
			
		||||
{
 | 
			
		||||
    if (auto producer = RunControl::producer(config, mode)) {
 | 
			
		||||
        return [producer, config](RunConfiguration *rc, Id runMode, QString *) {
 | 
			
		||||
            auto runControl = new RunControl(rc, runMode);
 | 
			
		||||
            (void) producer(runControl);
 | 
			
		||||
            return runControl;
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return {};
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ProjectExplorerPluginPrivate::executeRunConfiguration(RunConfiguration *runConfiguration, Core::Id runMode)
 | 
			
		||||
{
 | 
			
		||||
    if (!runConfiguration->isConfigured()) {
 | 
			
		||||
@@ -2015,17 +1999,15 @@ void ProjectExplorerPluginPrivate::executeRunConfiguration(RunConfiguration *run
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (RunControlFactory runControlFactory = findRunControlFactory(runConfiguration, runMode)) {
 | 
			
		||||
        emit m_instance->aboutToExecuteProject(runConfiguration->target()->project(), runMode);
 | 
			
		||||
    RunControl::WorkerCreator producer = RunControl::producer(runConfiguration, runMode);
 | 
			
		||||
 | 
			
		||||
        QString errorMessage;
 | 
			
		||||
        RunControl *control = runControlFactory(runConfiguration, runMode, &errorMessage);
 | 
			
		||||
        if (!control) {
 | 
			
		||||
            m_instance->showRunErrorMessage(errorMessage);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        startRunControl(control);
 | 
			
		||||
    }
 | 
			
		||||
    QTC_ASSERT(producer, return);
 | 
			
		||||
    auto runControl = new RunControl(runConfiguration, runMode);
 | 
			
		||||
    (void) producer(runControl);
 | 
			
		||||
 | 
			
		||||
    emit m_instance->aboutToExecuteProject(runConfiguration->target()->project(), runMode);
 | 
			
		||||
 | 
			
		||||
    startRunControl(runControl);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ProjectExplorerPlugin::showRunErrorMessage(const QString &errorMessage)
 | 
			
		||||
@@ -2793,7 +2775,8 @@ bool ProjectExplorerPlugin::canRunStartupProject(Core::Id runMode, QString *whyN
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // shouldn't actually be shown to the user...
 | 
			
		||||
    if (!findRunControlFactory(activeRC, runMode)) {
 | 
			
		||||
    RunControl::WorkerCreator producer = RunControl::producer(activeRC, runMode);
 | 
			
		||||
    if (!producer) {
 | 
			
		||||
        if (whyNot)
 | 
			
		||||
            *whyNot = tr("Cannot run \"%1\".").arg(activeRC->displayName());
 | 
			
		||||
        return false;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user