ProjectExplorer: Use more const

Clean up action update and use more const variables. Spread some
const over other code, so that const variables can actually be used.

Change-Id: Ia814900ddff294aeafedb2a223d3705990f9b7c1
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Tobias Hunger
2016-12-16 14:39:07 +01:00
parent d8dc5fcd8a
commit 63cf5b8ad6
5 changed files with 25 additions and 31 deletions

View File

@@ -561,26 +561,26 @@ void BuildManager::appendStep(BuildStep *step, const QString &name)
}
template <class T>
int count(const QHash<T *, int> &hash, T *key)
int count(const QHash<T *, int> &hash, const T *key)
{
typename QHash<T *, int>::const_iterator it = hash.find(key);
typename QHash<T *, int>::const_iterator it = hash.find(const_cast<T *>(key));
typename QHash<T *, int>::const_iterator end = hash.end();
if (it != end)
return *it;
return 0;
}
bool BuildManager::isBuilding(Project *pro)
bool BuildManager::isBuilding(const Project *pro)
{
return count(d->m_activeBuildSteps, pro) > 0;
}
bool BuildManager::isBuilding(Target *t)
bool BuildManager::isBuilding(const Target *t)
{
return count(d->m_activeBuildStepsPerTarget, t) > 0;
}
bool BuildManager::isBuilding(ProjectConfiguration *p)
bool BuildManager::isBuilding(const ProjectConfiguration *p)
{
return count(d->m_activeBuildStepsPerProjectConfiguration, p) > 0;
}

View File

@@ -54,9 +54,9 @@ public:
const QStringList &preambelMessage = QStringList());
static bool buildList(BuildStepList *bsl, const QString &stepListName);
static bool isBuilding(Project *p);
static bool isBuilding(Target *t);
static bool isBuilding(ProjectConfiguration *p);
static bool isBuilding(const Project *p);
static bool isBuilding(const Target *t);
static bool isBuilding(const ProjectConfiguration *p);
static bool isBuilding(BuildStep *step);
// Append any build step to the list of build steps (currently only used to add the QMakeStep)

View File

@@ -192,7 +192,7 @@ public:
void updateContextMenuActions();
void executeRunConfiguration(RunConfiguration *, Core::Id mode);
QPair<bool, QString> buildSettingsEnabledForSession();
QPair<bool, QString> buildSettingsEnabled(Project *pro);
QPair<bool, QString> buildSettingsEnabled(const Project *pro);
void addToRecentProjects(const QString &fileName, const QString &displayName);
void startRunControl(RunControl *runControl, Core::Id runMode);
@@ -2063,15 +2063,15 @@ QString ProjectExplorerPlugin::directoryFor(Node *node)
void ProjectExplorerPluginPrivate::updateActions()
{
Project *project = SessionManager::startupProject();
Project *currentProject = ProjectTree::currentProject(); // for context menu actions
const Project *const project = SessionManager::startupProject();
const Project *const currentProject = ProjectTree::currentProject(); // for context menu actions
QPair<bool, QString> buildActionState = buildSettingsEnabled(project);
QPair<bool, QString> buildActionContextState = buildSettingsEnabled(currentProject);
QPair<bool, QString> buildSessionState = buildSettingsEnabledForSession();
const QPair<bool, QString> buildActionState = buildSettingsEnabled(project);
const QPair<bool, QString> buildActionContextState = buildSettingsEnabled(currentProject);
const QPair<bool, QString> buildSessionState = buildSettingsEnabledForSession();
QString projectName = project ? project->displayName() : QString();
QString projectNameContextMenu = currentProject ? currentProject->displayName() : QString();
const QString projectName = project ? project->displayName() : QString();
const QString projectNameContextMenu = currentProject ? currentProject->displayName() : QString();
m_unloadAction->setParameter(projectName);
m_unloadActionContextMenu->setParameter(projectNameContextMenu);
@@ -2093,16 +2093,10 @@ void ProjectExplorerPluginPrivate::updateActions()
m_setStartupProjectAction->setParameter(projectNameContextMenu);
m_setStartupProjectAction->setVisible(currentProject != project);
bool hasDependencies = SessionManager::projectOrder(currentProject).size() > 1;
if (hasDependencies) {
m_buildActionContextMenu->setVisible(true);
m_rebuildActionContextMenu->setVisible(true);
m_cleanActionContextMenu->setVisible(true);
} else {
m_buildActionContextMenu->setVisible(false);
m_rebuildActionContextMenu->setVisible(false);
m_cleanActionContextMenu->setVisible(false);
}
const bool hasDependencies = SessionManager::projectOrder(currentProject).size() > 1;
m_buildActionContextMenu->setVisible(hasDependencies);
m_rebuildActionContextMenu->setVisible(hasDependencies);
m_cleanActionContextMenu->setVisible(hasDependencies);
m_buildActionContextMenu->setEnabled(buildActionContextState.first);
m_rebuildActionContextMenu->setEnabled(buildActionContextState.first);
@@ -2438,16 +2432,16 @@ void ProjectExplorerPluginPrivate::runProjectContextMenu()
}
}
static bool hasBuildSettings(Project *pro)
static bool hasBuildSettings(const Project *pro)
{
return Utils::anyOf(SessionManager::projectOrder(pro), [](Project *project) {
return Utils::anyOf(SessionManager::projectOrder(pro), [](const Project *project) {
return project
&& project->activeTarget()
&& project->activeTarget()->activeBuildConfiguration();
});
}
QPair<bool, QString> ProjectExplorerPluginPrivate::buildSettingsEnabled(Project *pro)
QPair<bool, QString> ProjectExplorerPluginPrivate::buildSettingsEnabled(const Project *pro)
{
QPair<bool, QString> result;
result.first = true;

View File

@@ -574,7 +574,7 @@ QStringList SessionManagerPrivate::dependenciesOrder() const
return ordered;
}
QList<Project *> SessionManager::projectOrder(Project *project)
QList<Project *> SessionManager::projectOrder(const Project *project)
{
QList<Project *> result;

View File

@@ -110,7 +110,7 @@ public:
static QVariant value(const QString &name);
// NBS rewrite projectOrder (dependency management)
static QList<Project *> projectOrder(Project *project = 0);
static QList<Project *> projectOrder(const Project *project = 0);
static SessionNode *sessionNode();