ProjectExplorer: Use direct calls to signal update wishes

Change-Id: I73d4a417f23bcf7fd8c9e16640e920100a6cce5a
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-08-02 12:00:39 +02:00
parent 1dfa84c362
commit ca67d3016c
5 changed files with 28 additions and 31 deletions

View File

@@ -39,6 +39,7 @@
#include "projectmacroexpander.h" #include "projectmacroexpander.h"
#include "projecttree.h" #include "projecttree.h"
#include "target.h" #include "target.h"
#include "session.h"
#include <coreplugin/idocument.h> #include <coreplugin/idocument.h>
@@ -104,6 +105,13 @@ BuildConfiguration::BuildConfiguration(Target *target, Core::Id id)
m_buildDirectoryAspect->setEnvironment(environment()); m_buildDirectoryAspect->setEnvironment(environment());
this->target()->buildEnvironmentChanged(this); this->target()->buildEnvironmentChanged(this);
}); });
connect(this, &BuildConfiguration::enabledChanged, this, [this] {
if (isActive() && project() == SessionManager::startupProject()) {
ProjectExplorerPlugin::updateActions();
emit ProjectExplorerPlugin::instance()->updateRunActions();
}
});
} }
Utils::FilePath BuildConfiguration::buildDirectory() const Utils::FilePath BuildConfiguration::buildDirectory() const

View File

@@ -357,7 +357,6 @@ public:
void buildQueueFinished(bool success); void buildQueueFinished(bool success);
void buildStateChanged(ProjectExplorer::Project * pro);
void loadAction(); void loadAction();
void handleUnloadProject(); void handleUnloadProject();
void unloadProjectContextMenu(); void unloadProjectContextMenu();
@@ -1390,7 +1389,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
auto buildManager = new BuildManager(this, dd->m_cancelBuildAction); auto buildManager = new BuildManager(this, dd->m_cancelBuildAction);
connect(buildManager, &BuildManager::buildStateChanged, connect(buildManager, &BuildManager::buildStateChanged,
dd, &ProjectExplorerPluginPrivate::buildStateChanged); dd, &ProjectExplorerPluginPrivate::updateActions);
connect(buildManager, &BuildManager::buildQueueFinished, connect(buildManager, &BuildManager::buildQueueFinished,
dd, &ProjectExplorerPluginPrivate::buildQueueFinished, Qt::QueuedConnection); dd, &ProjectExplorerPluginPrivate::buildQueueFinished, Qt::QueuedConnection);
@@ -2254,12 +2253,6 @@ void ProjectExplorerPluginPrivate::restoreSession()
updateActions(); updateActions();
} }
void ProjectExplorerPluginPrivate::buildStateChanged(Project * pro)
{
Q_UNUSED(pro)
updateActions();
}
void ProjectExplorerPluginPrivate::executeRunConfiguration(RunConfiguration *runConfiguration, Core::Id runMode) void ProjectExplorerPluginPrivate::executeRunConfiguration(RunConfiguration *runConfiguration, Core::Id runMode)
{ {
if (!runConfiguration->isConfigured()) { if (!runConfiguration->isConfigured()) {
@@ -2895,21 +2888,8 @@ QList<QPair<Runnable, Utils::ProcessHandle>> ProjectExplorerPlugin::runningRunCo
void ProjectExplorerPluginPrivate::projectAdded(Project *pro) void ProjectExplorerPluginPrivate::projectAdded(Project *pro)
{ {
Q_UNUSED(pro)
m_projectsMode.setEnabled(true); m_projectsMode.setEnabled(true);
// more specific action en and disabling ?
pro->subscribeSignal(&BuildConfiguration::enabledChanged, this, [this]() {
auto bc = qobject_cast<BuildConfiguration *>(sender());
if (bc && bc->isActive() && bc->project() == SessionManager::startupProject()) {
updateActions();
emit m_instance->updateRunActions();
}
});
pro->subscribeSignal(&RunConfiguration::requestRunActionsUpdate, this, [this]() {
auto rc = qobject_cast<RunConfiguration *>(sender());
if (rc && rc->isActive() && rc->project() == SessionManager::startupProject())
emit m_instance->updateRunActions();
});
} }
void ProjectExplorerPluginPrivate::projectRemoved(Project *pro) void ProjectExplorerPluginPrivate::projectRemoved(Project *pro)
@@ -3938,6 +3918,11 @@ QString ProjectExplorerPlugin::defaultBuildDirectoryTemplate()
return QString(Constants::DEFAULT_BUILD_DIRECTORY_TEMPLATE); return QString(Constants::DEFAULT_BUILD_DIRECTORY_TEMPLATE);
} }
void ProjectExplorerPlugin::updateActions()
{
dd->updateActions();
}
QList<QPair<QString, QString> > ProjectExplorerPlugin::recentProjects() QList<QPair<QString, QString> > ProjectExplorerPlugin::recentProjects()
{ {
return dd->recentProjects(); return dd->recentProjects();

View File

@@ -172,6 +172,8 @@ public:
static QString buildDirectoryTemplate(); static QString buildDirectoryTemplate();
static QString defaultBuildDirectoryTemplate(); static QString defaultBuildDirectoryTemplate();
static void updateActions();
signals: signals:
void finishedInitialization(); void finishedInitialization();

View File

@@ -25,17 +25,18 @@
#include "runconfiguration.h" #include "runconfiguration.h"
#include "project.h"
#include "runcontrol.h"
#include "target.h"
#include "toolchain.h"
#include "abi.h" #include "abi.h"
#include "buildconfiguration.h" #include "buildconfiguration.h"
#include "environmentaspect.h" #include "environmentaspect.h"
#include "kitinformation.h" #include "kitinformation.h"
#include "runconfigurationaspects.h"
#include "session.h"
#include "kitinformation.h" #include "kitinformation.h"
#include "project.h"
#include "projectexplorer.h"
#include "runconfigurationaspects.h"
#include "runcontrol.h"
#include "session.h"
#include "target.h"
#include "toolchain.h"
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/checkablemessagebox.h> #include <utils/checkablemessagebox.h>
@@ -172,8 +173,10 @@ RunConfiguration::RunConfiguration(Target *target, Core::Id id)
updateEnabledState(); updateEnabledState();
}); });
connect(this, &RunConfiguration::enabledChanged, connect(this, &RunConfiguration::enabledChanged, this, [this] {
this, &RunConfiguration::requestRunActionsUpdate); if (isActive() && project() == SessionManager::startupProject())
emit ProjectExplorerPlugin::instance()->updateRunActions();
});
Utils::MacroExpander *expander = macroExpander(); Utils::MacroExpander *expander = macroExpander();
expander->setDisplayName(tr("Run Settings")); expander->setDisplayName(tr("Run Settings"));

View File

@@ -185,7 +185,6 @@ public:
} }
signals: signals:
void requestRunActionsUpdate();
void configurationFinished(); void configurationFinished();
void enabledChanged(); void enabledChanged();