forked from qt-creator/qt-creator
ProjectExplorer: Make communication between target and selector direct
Architecture-wise, this now means that Target knows about the MiniProjectTargetSelector, otoh, Project does less, and quite a bit of signal, slot and qobject_cast is gone. Change-Id: I0feef9328144282c7c4ca710a12ac0e495810684 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -990,13 +990,8 @@ void MiniProjectTargetSelector::doLayout(bool keepSize)
|
||||
|
||||
void MiniProjectTargetSelector::projectAdded(Project *project)
|
||||
{
|
||||
connect(project, &Project::addedProjectConfiguration,
|
||||
this, &MiniProjectTargetSelector::handleNewProjectConfiguration);
|
||||
connect(project, &Project::addedTarget,
|
||||
this, &MiniProjectTargetSelector::handleNewTarget);
|
||||
|
||||
connect(project, &Project::removedProjectConfiguration,
|
||||
this, &MiniProjectTargetSelector::handleRemovalOfProjectConfiguration);
|
||||
connect(project, &Project::removedTarget,
|
||||
this, &MiniProjectTargetSelector::handleRemovalOfTarget);
|
||||
|
||||
@@ -1012,13 +1007,8 @@ void MiniProjectTargetSelector::projectAdded(Project *project)
|
||||
|
||||
void MiniProjectTargetSelector::projectRemoved(Project *project)
|
||||
{
|
||||
disconnect(project, &Project::addedProjectConfiguration,
|
||||
this, &MiniProjectTargetSelector::handleNewProjectConfiguration);
|
||||
disconnect(project, &Project::addedTarget,
|
||||
this, &MiniProjectTargetSelector::handleNewTarget);
|
||||
|
||||
disconnect(project, &Project::removedProjectConfiguration,
|
||||
this, &MiniProjectTargetSelector::handleRemovalOfProjectConfiguration);
|
||||
disconnect(project, &Project::removedTarget,
|
||||
this, &MiniProjectTargetSelector::handleRemovalOfTarget);
|
||||
|
||||
@@ -1041,25 +1031,6 @@ void MiniProjectTargetSelector::handleNewTarget(Target *target)
|
||||
updateRunListVisible();
|
||||
}
|
||||
|
||||
void MiniProjectTargetSelector::handleNewProjectConfiguration(ProjectConfiguration *pc)
|
||||
{
|
||||
if (auto bc = qobject_cast<BuildConfiguration *>(pc)) {
|
||||
if (addedBuildConfiguration(bc))
|
||||
updateBuildListVisible();
|
||||
return;
|
||||
}
|
||||
if (auto dc = qobject_cast<DeployConfiguration *>(pc)) {
|
||||
if (addedDeployConfiguration(dc))
|
||||
updateDeployListVisible();
|
||||
return;
|
||||
}
|
||||
if (auto rc = qobject_cast<RunConfiguration *>(pc)) {
|
||||
if (addedRunConfiguration(rc))
|
||||
updateRunListVisible();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void MiniProjectTargetSelector::handleRemovalOfTarget(Target *target)
|
||||
{
|
||||
removedTarget(target);
|
||||
@@ -1070,25 +1041,6 @@ void MiniProjectTargetSelector::handleRemovalOfTarget(Target *target)
|
||||
updateRunListVisible();
|
||||
}
|
||||
|
||||
void MiniProjectTargetSelector::handleRemovalOfProjectConfiguration(ProjectConfiguration *pc)
|
||||
{
|
||||
if (auto bc = qobject_cast<BuildConfiguration *>(pc)) {
|
||||
if (removedBuildConfiguration(bc))
|
||||
updateBuildListVisible();
|
||||
return;
|
||||
}
|
||||
if (auto dc = qobject_cast<DeployConfiguration *>(pc)) {
|
||||
if (removedDeployConfiguration(dc))
|
||||
updateDeployListVisible();
|
||||
return;
|
||||
}
|
||||
if (auto rc = qobject_cast<RunConfiguration *>(pc)) {
|
||||
if (removedRunConfiguration(rc))
|
||||
updateRunListVisible();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void MiniProjectTargetSelector::addedTarget(Target *target)
|
||||
{
|
||||
if (target->project() != m_project)
|
||||
@@ -1096,12 +1048,12 @@ void MiniProjectTargetSelector::addedTarget(Target *target)
|
||||
|
||||
m_listWidgets[TARGET]->addProjectConfiguration(target);
|
||||
|
||||
foreach (BuildConfiguration *bc, target->buildConfigurations())
|
||||
addedBuildConfiguration(bc);
|
||||
foreach (DeployConfiguration *dc, target->deployConfigurations())
|
||||
addedDeployConfiguration(dc);
|
||||
foreach (RunConfiguration *rc, target->runConfigurations())
|
||||
addedRunConfiguration(rc);
|
||||
for (BuildConfiguration *bc : target->buildConfigurations())
|
||||
addedBuildConfiguration(bc, false);
|
||||
for (DeployConfiguration *dc : target->deployConfigurations())
|
||||
addedDeployConfiguration(dc, false);
|
||||
for (RunConfiguration *rc : target->runConfigurations())
|
||||
addedRunConfiguration(rc, false);
|
||||
}
|
||||
|
||||
void MiniProjectTargetSelector::removedTarget(Target *target)
|
||||
@@ -1111,65 +1063,72 @@ void MiniProjectTargetSelector::removedTarget(Target *target)
|
||||
|
||||
m_listWidgets[TARGET]->removeProjectConfiguration(target);
|
||||
|
||||
foreach (BuildConfiguration *bc, target->buildConfigurations())
|
||||
removedBuildConfiguration(bc);
|
||||
foreach (DeployConfiguration *dc, target->deployConfigurations())
|
||||
removedDeployConfiguration(dc);
|
||||
foreach (RunConfiguration *rc, target->runConfigurations())
|
||||
removedRunConfiguration(rc);
|
||||
for (BuildConfiguration *bc : target->buildConfigurations())
|
||||
removedBuildConfiguration(bc, false);
|
||||
for (DeployConfiguration *dc : target->deployConfigurations())
|
||||
removedDeployConfiguration(dc, false);
|
||||
for (RunConfiguration *rc : target->runConfigurations())
|
||||
removedRunConfiguration(rc, false);
|
||||
}
|
||||
|
||||
bool MiniProjectTargetSelector::addedBuildConfiguration(BuildConfiguration *bc)
|
||||
void MiniProjectTargetSelector::addedBuildConfiguration(BuildConfiguration *bc, bool update)
|
||||
{
|
||||
if (bc->target() != m_project->activeTarget())
|
||||
return false;
|
||||
if (!m_project || bc->target() != m_project->activeTarget())
|
||||
return;
|
||||
|
||||
m_listWidgets[BUILD]->addProjectConfiguration(bc);
|
||||
return true;
|
||||
if (update)
|
||||
updateBuildListVisible();
|
||||
}
|
||||
|
||||
bool MiniProjectTargetSelector::removedBuildConfiguration(BuildConfiguration *bc)
|
||||
void MiniProjectTargetSelector::removedBuildConfiguration(BuildConfiguration *bc, bool update)
|
||||
{
|
||||
if (bc->target() != m_project->activeTarget())
|
||||
return false;
|
||||
if (!m_project || bc->target() != m_project->activeTarget())
|
||||
return;
|
||||
|
||||
m_listWidgets[BUILD]->removeProjectConfiguration(bc);
|
||||
return true;
|
||||
if (update)
|
||||
updateBuildListVisible();
|
||||
}
|
||||
|
||||
bool MiniProjectTargetSelector::addedDeployConfiguration(DeployConfiguration *dc)
|
||||
void MiniProjectTargetSelector::addedDeployConfiguration(DeployConfiguration *dc, bool update)
|
||||
{
|
||||
if (!m_project || dc->target() != m_project->activeTarget())
|
||||
return false;
|
||||
return;
|
||||
|
||||
m_listWidgets[DEPLOY]->addProjectConfiguration(dc);
|
||||
return true;
|
||||
if (update)
|
||||
updateDeployListVisible();
|
||||
}
|
||||
|
||||
bool MiniProjectTargetSelector::removedDeployConfiguration(DeployConfiguration *dc)
|
||||
void MiniProjectTargetSelector::removedDeployConfiguration(DeployConfiguration *dc, bool update)
|
||||
{
|
||||
if (!m_project || dc->target() != m_project->activeTarget())
|
||||
return false;
|
||||
return;
|
||||
|
||||
m_listWidgets[DEPLOY]->removeProjectConfiguration(dc);
|
||||
return true;
|
||||
if (update)
|
||||
updateDeployListVisible();
|
||||
}
|
||||
bool MiniProjectTargetSelector::addedRunConfiguration(RunConfiguration *rc)
|
||||
|
||||
void MiniProjectTargetSelector::addedRunConfiguration(RunConfiguration *rc, bool update)
|
||||
{
|
||||
if (!m_project || rc->target() != m_project->activeTarget())
|
||||
return false;
|
||||
return;
|
||||
|
||||
m_listWidgets[RUN]->addProjectConfiguration(rc);
|
||||
return true;
|
||||
if (update)
|
||||
updateRunListVisible();
|
||||
}
|
||||
|
||||
bool MiniProjectTargetSelector::removedRunConfiguration(RunConfiguration *rc)
|
||||
void MiniProjectTargetSelector::removedRunConfiguration(RunConfiguration *rc, bool update)
|
||||
{
|
||||
if (!m_project || rc->target() != m_project->activeTarget())
|
||||
return false;
|
||||
return;
|
||||
|
||||
m_listWidgets[RUN]->removeProjectConfiguration(rc);
|
||||
return true;
|
||||
if (update)
|
||||
updateRunListVisible();
|
||||
}
|
||||
|
||||
void MiniProjectTargetSelector::updateProjectListVisible()
|
||||
|
@@ -38,7 +38,6 @@ class Project;
|
||||
class Target;
|
||||
class BuildConfiguration;
|
||||
class DeployConfiguration;
|
||||
class ProjectConfiguration;
|
||||
class RunConfiguration;
|
||||
|
||||
namespace Internal {
|
||||
@@ -51,7 +50,8 @@ class MiniProjectTargetSelector : public QWidget
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit MiniProjectTargetSelector(QAction *projectAction, QWidget *parent = nullptr);
|
||||
explicit MiniProjectTargetSelector(QAction *projectAction, QWidget *parent);
|
||||
|
||||
void setVisible(bool visible) override;
|
||||
|
||||
void keyPressEvent(QKeyEvent *ke) override;
|
||||
@@ -62,11 +62,10 @@ public:
|
||||
void nextOrShow();
|
||||
|
||||
private:
|
||||
friend class ProjectExplorer::Target;
|
||||
void projectAdded(ProjectExplorer::Project *project);
|
||||
void projectRemoved(ProjectExplorer::Project *project);
|
||||
void handleNewProjectConfiguration(ProjectExplorer::ProjectConfiguration *pc);
|
||||
void handleNewTarget(Target *target);
|
||||
void handleRemovalOfProjectConfiguration(ProjectExplorer::ProjectConfiguration *pc);
|
||||
void handleRemovalOfTarget(Target *pc);
|
||||
|
||||
void changeStartupProject(ProjectExplorer::Project *project);
|
||||
@@ -81,12 +80,12 @@ private:
|
||||
void switchToProjectsMode();
|
||||
void addedTarget(Target *target);
|
||||
void removedTarget(Target *target);
|
||||
bool addedBuildConfiguration(BuildConfiguration* bc);
|
||||
bool removedBuildConfiguration(BuildConfiguration* bc);
|
||||
bool addedDeployConfiguration(DeployConfiguration *dc);
|
||||
bool removedDeployConfiguration(DeployConfiguration *dc);
|
||||
bool addedRunConfiguration(RunConfiguration *rc);
|
||||
bool removedRunConfiguration(RunConfiguration *rc);
|
||||
void addedBuildConfiguration(BuildConfiguration *bc, bool update = true);
|
||||
void removedBuildConfiguration(BuildConfiguration *bc, bool update = true);
|
||||
void addedDeployConfiguration(DeployConfiguration *dc, bool update = true);
|
||||
void removedDeployConfiguration(DeployConfiguration *dc, bool update = true);
|
||||
void addedRunConfiguration(RunConfiguration *rc, bool update = true);
|
||||
void removedRunConfiguration(RunConfiguration *rc, bool update = true);
|
||||
|
||||
void updateProjectListVisible();
|
||||
void updateTargetListVisible();
|
||||
|
@@ -51,12 +51,10 @@ namespace ProjectExplorer {
|
||||
|
||||
class BuildInfo;
|
||||
class BuildSystem;
|
||||
class BuildConfiguration;
|
||||
class ContainerNode;
|
||||
class EditorConfiguration;
|
||||
class FolderNode;
|
||||
class Node;
|
||||
class ProjectConfiguration;
|
||||
class ProjectImporter;
|
||||
class ProjectNode;
|
||||
class ProjectPrivate;
|
||||
@@ -183,9 +181,6 @@ signals:
|
||||
// Note: activeTarget can be 0 (if no targets are defined).
|
||||
void activeTargetChanged(ProjectExplorer::Target *target);
|
||||
|
||||
void removedProjectConfiguration(ProjectExplorer::ProjectConfiguration *pc);
|
||||
void addedProjectConfiguration(ProjectExplorer::ProjectConfiguration *pc);
|
||||
|
||||
void aboutToRemoveTarget(ProjectExplorer::Target *target);
|
||||
void removedTarget(ProjectExplorer::Target *target);
|
||||
void addedTarget(ProjectExplorer::Target *target);
|
||||
|
@@ -2365,6 +2365,11 @@ QThreadPool *ProjectExplorerPlugin::sharedThreadPool()
|
||||
return &(dd->m_threadPool);
|
||||
}
|
||||
|
||||
MiniProjectTargetSelector *ProjectExplorerPlugin::targetSelector()
|
||||
{
|
||||
return dd->m_targetSelector;
|
||||
}
|
||||
|
||||
/*!
|
||||
This function is connected to the ICore::coreOpened signal. If
|
||||
there was no session explicitly loaded, it creates an empty new
|
||||
|
@@ -59,6 +59,7 @@ class FileNode;
|
||||
|
||||
namespace Internal {
|
||||
class AppOutputSettings;
|
||||
class MiniProjectTargetSelector;
|
||||
class ProjectExplorerSettings;
|
||||
}
|
||||
|
||||
@@ -166,6 +167,7 @@ public:
|
||||
static QStringList projectFileGlobs();
|
||||
|
||||
static QThreadPool *sharedThreadPool();
|
||||
static Internal::MiniProjectTargetSelector *targetSelector();
|
||||
|
||||
static void showSessionManager();
|
||||
static void openNewProjectDialog();
|
||||
|
@@ -37,6 +37,7 @@
|
||||
#include "kit.h"
|
||||
#include "kitinformation.h"
|
||||
#include "kitmanager.h"
|
||||
#include "miniprojecttargetselector.h"
|
||||
#include "project.h"
|
||||
#include "projectexplorer.h"
|
||||
#include "projectexplorericons.h"
|
||||
@@ -46,8 +47,6 @@
|
||||
|
||||
#include <coreplugin/coreconstants.h>
|
||||
|
||||
#include <extensionsystem/pluginmanager.h>
|
||||
|
||||
#include <utils/algorithm.h>
|
||||
#include <utils/macroexpander.h>
|
||||
#include <utils/qtcassert.h>
|
||||
@@ -279,7 +278,7 @@ void Target::addBuildConfiguration(BuildConfiguration *bc)
|
||||
// add it
|
||||
d->m_buildConfigurations.push_back(bc);
|
||||
|
||||
project()->addedProjectConfiguration(bc);
|
||||
ProjectExplorerPlugin::targetSelector()->addedBuildConfiguration(bc);
|
||||
emit addedBuildConfiguration(bc);
|
||||
d->m_buildConfigurationModel.addProjectConfiguration(bc);
|
||||
|
||||
@@ -306,14 +305,14 @@ bool Target::removeBuildConfiguration(BuildConfiguration *bc)
|
||||
}
|
||||
|
||||
emit removedBuildConfiguration(bc);
|
||||
project()->removedProjectConfiguration(bc);
|
||||
ProjectExplorerPlugin::targetSelector()->removedBuildConfiguration(bc);
|
||||
d->m_buildConfigurationModel.removeProjectConfiguration(bc);
|
||||
|
||||
delete bc;
|
||||
return true;
|
||||
}
|
||||
|
||||
QList<BuildConfiguration *> Target::buildConfigurations() const
|
||||
const QList<BuildConfiguration *> Target::buildConfigurations() const
|
||||
{
|
||||
return d->m_buildConfigurations;
|
||||
}
|
||||
@@ -347,7 +346,7 @@ void Target::addDeployConfiguration(DeployConfiguration *dc)
|
||||
// add it
|
||||
d->m_deployConfigurations.push_back(dc);
|
||||
|
||||
project()->addedProjectConfiguration(dc);
|
||||
ProjectExplorerPlugin::targetSelector()->addedDeployConfiguration(dc);
|
||||
d->m_deployConfigurationModel.addProjectConfiguration(dc);
|
||||
emit addedDeployConfiguration(dc);
|
||||
|
||||
@@ -375,7 +374,7 @@ bool Target::removeDeployConfiguration(DeployConfiguration *dc)
|
||||
SetActive::Cascade);
|
||||
}
|
||||
|
||||
project()->removedProjectConfiguration(dc);
|
||||
ProjectExplorerPlugin::targetSelector()->removedDeployConfiguration(dc);
|
||||
d->m_deployConfigurationModel.removeProjectConfiguration(dc);
|
||||
emit removedDeployConfiguration(dc);
|
||||
|
||||
@@ -383,7 +382,7 @@ bool Target::removeDeployConfiguration(DeployConfiguration *dc)
|
||||
return true;
|
||||
}
|
||||
|
||||
QList<DeployConfiguration *> Target::deployConfigurations() const
|
||||
const QList<DeployConfiguration *> Target::deployConfigurations() const
|
||||
{
|
||||
return d->m_deployConfigurations;
|
||||
}
|
||||
@@ -404,7 +403,7 @@ void Target::setActiveDeployConfiguration(DeployConfiguration *dc)
|
||||
updateDeviceState();
|
||||
}
|
||||
|
||||
QList<RunConfiguration *> Target::runConfigurations() const
|
||||
const QList<RunConfiguration *> Target::runConfigurations() const
|
||||
{
|
||||
return d->m_runConfigurations;
|
||||
}
|
||||
@@ -426,7 +425,7 @@ void Target::addRunConfiguration(RunConfiguration *rc)
|
||||
|
||||
d->m_runConfigurations.push_back(rc);
|
||||
|
||||
project()->addedProjectConfiguration(rc);
|
||||
ProjectExplorerPlugin::targetSelector()->addedRunConfiguration(rc);
|
||||
d->m_runConfigurationModel.addProjectConfiguration(rc);
|
||||
emit addedRunConfiguration(rc);
|
||||
|
||||
@@ -448,7 +447,7 @@ void Target::removeRunConfiguration(RunConfiguration *rc)
|
||||
}
|
||||
|
||||
emit removedRunConfiguration(rc);
|
||||
project()->removedProjectConfiguration(rc);
|
||||
ProjectExplorerPlugin::targetSelector()->removedRunConfiguration(rc);
|
||||
d->m_runConfigurationModel.removeProjectConfiguration(rc);
|
||||
|
||||
delete rc;
|
||||
|
@@ -73,18 +73,18 @@ public:
|
||||
void addBuildConfiguration(BuildConfiguration *bc);
|
||||
bool removeBuildConfiguration(BuildConfiguration *bc);
|
||||
|
||||
QList<BuildConfiguration *> buildConfigurations() const;
|
||||
const QList<BuildConfiguration *> buildConfigurations() const;
|
||||
BuildConfiguration *activeBuildConfiguration() const;
|
||||
|
||||
// DeployConfiguration
|
||||
void addDeployConfiguration(DeployConfiguration *dc);
|
||||
bool removeDeployConfiguration(DeployConfiguration *dc);
|
||||
|
||||
QList<DeployConfiguration *> deployConfigurations() const;
|
||||
const QList<DeployConfiguration *> deployConfigurations() const;
|
||||
DeployConfiguration *activeDeployConfiguration() const;
|
||||
|
||||
// Running
|
||||
QList<RunConfiguration *> runConfigurations() const;
|
||||
const QList<RunConfiguration *> runConfigurations() const;
|
||||
void addRunConfiguration(RunConfiguration *rc);
|
||||
void removeRunConfiguration(RunConfiguration *rc);
|
||||
|
||||
|
@@ -41,6 +41,8 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace ProjectExplorer { class BuildConfiguration; }
|
||||
|
||||
namespace Utils {
|
||||
class FilePath;
|
||||
class FileSystemWatcher;
|
||||
@@ -49,7 +51,6 @@ class FileSystemWatcher;
|
||||
namespace QtSupport { class ProFileReader; }
|
||||
|
||||
namespace QmakeProjectManager {
|
||||
class QmakeBuildConfiguration;
|
||||
class QmakeBuildSystem;
|
||||
class QmakeProFile;
|
||||
class QmakeProject;
|
||||
|
@@ -48,6 +48,7 @@ namespace ProjectExplorer { class DeploymentData; }
|
||||
namespace QtSupport { class ProFileReader; }
|
||||
|
||||
namespace QmakeProjectManager {
|
||||
class QmakeBuildConfiguration;
|
||||
|
||||
namespace Internal { class CentralizedFolderWatcher; }
|
||||
|
||||
|
Reference in New Issue
Block a user