SessionManager: Clean up methods around projects

Clean up methods around projects() and update its usages to modern
language standards.

Change-Id: Ia0a4574d014ce41e0d511a392e4eed4680981d0e
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Tim Jenssen
2017-03-01 17:53:15 +01:00
committed by Tobias Hunger
parent 0a09ba7319
commit f2b8e9acd1
18 changed files with 54 additions and 52 deletions

View File

@@ -86,7 +86,7 @@ bool checkPackageName(const QString &packageName)
Project *androidProject(const Utils::FileName &fileName) Project *androidProject(const Utils::FileName &fileName)
{ {
foreach (Project *project, SessionManager::projects()) { for (Project *project : SessionManager::projects()) {
if (!project->activeTarget()) if (!project->activeTarget())
continue; continue;
Kit *kit = project->activeTarget()->kit(); Kit *kit = project->activeTarget()->kit();

View File

@@ -284,10 +284,7 @@ ParserTreeItem::ConstPtr Parser::parse()
ParserTreeItem::Ptr rootItem(new ParserTreeItem()); ParserTreeItem::Ptr rootItem(new ParserTreeItem());
// check all projects // check all projects
foreach (const Project *prj, SessionManager::projects()) { for (const Project *prj : SessionManager::projects()) {
if (!prj)
continue;
ParserTreeItem::Ptr item; ParserTreeItem::Ptr item;
QString prjName(prj->displayName()); QString prjName(prj->displayName());
QString prjType(prjName); QString prjType(prjName);
@@ -644,10 +641,8 @@ void Parser::resetData(const CPlusPlus::Snapshot &snapshot)
QStringList fileList; QStringList fileList;
// check all projects // check all projects
foreach (const Project *prj, SessionManager::projects()) { for (const Project *prj : SessionManager::projects())
if (prj) fileList += prj->files(Project::SourceFiles);
fileList += prj->files(Project::SourceFiles);
}
setFileList(fileList); setFileList(fileList);
emit resetDataDone(); emit resetDataDone();

View File

@@ -60,7 +60,7 @@ CMakeLocatorFilter::CMakeLocatorFilter()
void CMakeLocatorFilter::prepareSearch(const QString &entry) void CMakeLocatorFilter::prepareSearch(const QString &entry)
{ {
m_result.clear(); m_result.clear();
foreach (Project *p, SessionManager::projects()) { for (Project *p : SessionManager::projects()) {
CMakeProject *cmakeProject = qobject_cast<CMakeProject *>(p); CMakeProject *cmakeProject = qobject_cast<CMakeProject *>(p);
if (!cmakeProject) if (!cmakeProject)
continue; continue;

View File

@@ -158,7 +158,7 @@ void CppIncludesFilter::prepareSearch(const QString &entry)
if (m_needsUpdate) { if (m_needsUpdate) {
m_needsUpdate = false; m_needsUpdate = false;
QSet<QString> seedPaths; QSet<QString> seedPaths;
foreach (Project *project, SessionManager::projects()) { for (Project *project : SessionManager::projects()) {
foreach (const QString &filePath, project->files(Project::AllFiles)) foreach (const QString &filePath, project->files(Project::AllFiles))
seedPaths.insert(filePath); seedPaths.insert(filePath);
} }

View File

@@ -132,7 +132,7 @@ void SymbolsFindFilter::startSearch(SearchResult *search)
SymbolSearcher::Parameters parameters = search->userData().value<SymbolSearcher::Parameters>(); SymbolSearcher::Parameters parameters = search->userData().value<SymbolSearcher::Parameters>();
QSet<QString> projectFileNames; QSet<QString> projectFileNames;
if (parameters.scope == SymbolSearcher::SearchProjectsOnly) { if (parameters.scope == SymbolSearcher::SearchProjectsOnly) {
foreach (ProjectExplorer::Project *project, ProjectExplorer::SessionManager::projects()) for (ProjectExplorer::Project *project : ProjectExplorer::SessionManager::projects())
projectFileNames += project->files(ProjectExplorer::Project::AllFiles).toSet(); projectFileNames += project->files(ProjectExplorer::Project::AllFiles).toSet();
} }

View File

@@ -60,7 +60,7 @@ void ResourceHandler::ensureInitialized()
connect(p, &Project::fileListChanged, this, &ResourceHandler::updateResources); connect(p, &Project::fileListChanged, this, &ResourceHandler::updateResources);
}; };
foreach (Project *p, SessionManager::projects()) for (Project *p : SessionManager::projects())
connector(p); connector(p);
connect(SessionManager::instance(), &SessionManager::projectAdded, this, connector); connect(SessionManager::instance(), &SessionManager::projectAdded, this, connector);

View File

@@ -255,7 +255,7 @@ bool UpdateIncludeDependenciesVisitor::haveMatchingStereotypes(const qmt::MObjec
QStringList UpdateIncludeDependenciesVisitor::findFilePathOfComponent(const qmt::MComponent *component) QStringList UpdateIncludeDependenciesVisitor::findFilePathOfComponent(const qmt::MComponent *component)
{ {
QMultiHash<QString, Node> filePaths; QMultiHash<QString, Node> filePaths;
foreach (const ProjectExplorer::Project *project, ProjectExplorer::SessionManager::projects()) { for (const ProjectExplorer::Project *project : ProjectExplorer::SessionManager::projects()) {
ProjectExplorer::ProjectNode *projectNode = project->rootProjectNode(); ProjectExplorer::ProjectNode *projectNode = project->rootProjectNode();
if (projectNode) if (projectNode)
collectElementPaths(projectNode, &filePaths); collectElementPaths(projectNode, &filePaths);

View File

@@ -58,7 +58,7 @@ void AllProjectsFilter::prepareSearch(const QString &entry)
Q_UNUSED(entry) Q_UNUSED(entry)
if (!fileIterator()) { if (!fileIterator()) {
QStringList paths; QStringList paths;
foreach (Project *project, SessionManager::projects()) for (Project *project : SessionManager::projects())
paths.append(project->files(Project::AllFiles)); paths.append(project->files(Project::AllFiles));
Utils::sort(paths); Utils::sort(paths);
setFileIterator(new BaseFileFilter::ListIterator(paths)); setFileIterator(new BaseFileFilter::ListIterator(paths));

View File

@@ -79,7 +79,7 @@ Utils::FileIterator *CurrentProjectFind::files(const QStringList &nameFilters,
QTC_ASSERT(additionalParameters.isValid(), QTC_ASSERT(additionalParameters.isValid(),
return new Utils::FileListIterator(QStringList(), QList<QTextCodec *>())); return new Utils::FileListIterator(QStringList(), QList<QTextCodec *>()));
QString projectFile = additionalParameters.toString(); QString projectFile = additionalParameters.toString();
foreach (Project *project, SessionManager::projects()) { for (Project *project : SessionManager::projects()) {
if (project->document() && projectFile == project->projectFilePath().toString()) if (project->document() && projectFile == project->projectFilePath().toString())
return filesForProjects(nameFilters, exclusionFilters, QList<Project *>() << project); return filesForProjects(nameFilters, exclusionFilters, QList<Project *>() << project);
} }
@@ -105,7 +105,7 @@ void CurrentProjectFind::recheckEnabled()
if (!search) if (!search)
return; return;
QString projectFile = getAdditionalParameters(search).toString(); QString projectFile = getAdditionalParameters(search).toString();
foreach (Project *project, SessionManager::projects()) { for (Project *project : SessionManager::projects()) {
if (projectFile == project->projectFilePath().toString()) { if (projectFile == project->projectFilePath().toString()) {
search->setSearchAgainEnabled(true); search->setSearchAgainEnabled(true);
return; return;

View File

@@ -1172,7 +1172,7 @@ void MiniProjectTargetSelector::updateProjectListVisible()
void MiniProjectTargetSelector::updateTargetListVisible() void MiniProjectTargetSelector::updateTargetListVisible()
{ {
int maxCount = 0; int maxCount = 0;
foreach (Project *p, SessionManager::projects()) for (Project *p : SessionManager::projects())
maxCount = qMax(p->targets().size(), maxCount); maxCount = qMax(p->targets().size(), maxCount);
bool visible = maxCount > 1; bool visible = maxCount > 1;
@@ -1185,7 +1185,7 @@ void MiniProjectTargetSelector::updateTargetListVisible()
void MiniProjectTargetSelector::updateBuildListVisible() void MiniProjectTargetSelector::updateBuildListVisible()
{ {
int maxCount = 0; int maxCount = 0;
foreach (Project *p, SessionManager::projects()) for (Project *p : SessionManager::projects())
foreach (Target *t, p->targets()) foreach (Target *t, p->targets())
maxCount = qMax(t->buildConfigurations().size(), maxCount); maxCount = qMax(t->buildConfigurations().size(), maxCount);
@@ -1199,7 +1199,7 @@ void MiniProjectTargetSelector::updateBuildListVisible()
void MiniProjectTargetSelector::updateDeployListVisible() void MiniProjectTargetSelector::updateDeployListVisible()
{ {
int maxCount = 0; int maxCount = 0;
foreach (Project *p, SessionManager::projects()) for (Project *p : SessionManager::projects())
foreach (Target *t, p->targets()) foreach (Target *t, p->targets())
maxCount = qMax(t->deployConfigurations().size(), maxCount); maxCount = qMax(t->deployConfigurations().size(), maxCount);
@@ -1213,7 +1213,7 @@ void MiniProjectTargetSelector::updateDeployListVisible()
void MiniProjectTargetSelector::updateRunListVisible() void MiniProjectTargetSelector::updateRunListVisible()
{ {
int maxCount = 0; int maxCount = 0;
foreach (Project *p, SessionManager::projects()) for (Project *p : SessionManager::projects())
foreach (Target *t, p->targets()) foreach (Target *t, p->targets())
maxCount = qMax(t->runConfigurations().size(), maxCount); maxCount = qMax(t->runConfigurations().size(), maxCount);
@@ -1493,7 +1493,7 @@ void MiniProjectTargetSelector::updateActionAndSummary()
Project *project = SessionManager::startupProject(); Project *project = SessionManager::startupProject();
if (project) { if (project) {
projectName = project->displayName(); projectName = project->displayName();
foreach (Project *p, SessionManager::projects()) { for (Project *p : SessionManager::projects()) {
if (p != project && p->displayName() == projectName) { if (p != project && p->displayName() == projectName) {
fileName = project->projectFilePath().toUserOutput(); fileName = project->projectFilePath().toUserOutput();
break; break;

View File

@@ -1572,7 +1572,7 @@ void ProjectExplorerPluginPrivate::savePersistentSettings()
return; return;
if (!SessionManager::loadingSession()) { if (!SessionManager::loadingSession()) {
foreach (Project *pro, SessionManager::projects()) for (Project *pro : SessionManager::projects())
pro->saveSettings(); pro->saveSettings();
SessionManager::save(); SessionManager::save();
@@ -1688,7 +1688,7 @@ ProjectExplorerPlugin::OpenProjectResult ProjectExplorerPlugin::openProjects(con
const QFileInfo fi(fileName); const QFileInfo fi(fileName);
const QString filePath = fi.absoluteFilePath(); const QString filePath = fi.absoluteFilePath();
bool found = false; bool found = false;
foreach (Project *pi, SessionManager::projects()) { for (Project *pi : SessionManager::projects()) {
if (filePath == pi->projectFilePath().toString()) { if (filePath == pi->projectFilePath().toString()) {
alreadyOpen.append(pi); alreadyOpen.append(pi);
found = true; found = true;
@@ -2866,7 +2866,7 @@ void ProjectExplorerPluginPrivate::updateUnloadProjectMenu()
ActionContainer *aci = ActionManager::actionContainer(Constants::M_UNLOADPROJECTS); ActionContainer *aci = ActionManager::actionContainer(Constants::M_UNLOADPROJECTS);
QMenu *menu = aci->menu(); QMenu *menu = aci->menu();
menu->clear(); menu->clear();
foreach (Project *project, SessionManager::projects()) { for (Project *project : SessionManager::projects()) {
QAction *action = menu->addAction(tr("Close Project \"%1\"").arg(project->displayName())); QAction *action = menu->addAction(tr("Close Project \"%1\"").arg(project->displayName()));
connect(action, &QAction::triggered, connect(action, &QAction::triggered,
[project] { ProjectExplorerPlugin::unloadProject(project); } ); [project] { ProjectExplorerPlugin::unloadProject(project); } );

View File

@@ -296,7 +296,7 @@ void ProjectTree::updateExternalFileWarning()
const QList<Project *> projects = SessionManager::projects(); const QList<Project *> projects = SessionManager::projects();
if (projects.isEmpty()) if (projects.isEmpty())
return; return;
foreach (Project *project, projects) { for (Project *project : projects) {
FileName projectDir = project->projectDirectory(); FileName projectDir = project->projectDirectory();
if (projectDir.isEmpty()) if (projectDir.isEmpty())
continue; continue;

View File

@@ -89,10 +89,12 @@ public:
QStringList dependenciesOrder() const; QStringList dependenciesOrder() const;
void dependencies(const QString &proName, QStringList &result) const; void dependencies(const QString &proName, QStringList &result) const;
public:
static QString windowTitleAddition(const QString &filePath); static QString windowTitleAddition(const QString &filePath);
static QString sessionTitle(const QString &filePath); static QString sessionTitle(const QString &filePath);
bool hasProjects() const { return !m_projects.isEmpty(); }
bool hasProject(Project *p) const { return m_projects.contains(p); }
SessionNode m_sessionNode; SessionNode m_sessionNode;
QString m_sessionName = QLatin1String("default"); QString m_sessionName = QLatin1String("default");
bool m_virginSession = true; bool m_virginSession = true;
@@ -291,7 +293,7 @@ void SessionManager::setActiveTarget(Project *project, Target *target, SetActive
return; return;
Core::Id kitId = target->kit()->id(); Core::Id kitId = target->kit()->id();
foreach (Project *otherProject, SessionManager::projects()) { for (Project *otherProject : SessionManager::projects()) {
if (otherProject == project) if (otherProject == project)
continue; continue;
if (Target *otherTarget = Utils::findOrDefault(otherProject->targets(), if (Target *otherTarget = Utils::findOrDefault(otherProject->targets(),
@@ -312,7 +314,7 @@ void SessionManager::setActiveBuildConfiguration(Target *target, BuildConfigurat
Core::Id kitId = target->kit()->id(); Core::Id kitId = target->kit()->id();
QString name = bc->displayName(); // We match on displayname QString name = bc->displayName(); // We match on displayname
foreach (Project *otherProject, SessionManager::projects()) { for (Project *otherProject : SessionManager::projects()) {
if (otherProject == target->project()) if (otherProject == target->project())
continue; continue;
Target *otherTarget = otherProject->activeTarget(); Target *otherTarget = otherProject->activeTarget();
@@ -340,7 +342,7 @@ void SessionManager::setActiveDeployConfiguration(Target *target, DeployConfigur
Core::Id kitId = target->kit()->id(); Core::Id kitId = target->kit()->id();
QString name = dc->displayName(); // We match on displayname QString name = dc->displayName(); // We match on displayname
foreach (Project *otherProject, SessionManager::projects()) { for (Project *otherProject : SessionManager::projects()) {
if (otherProject == target->project()) if (otherProject == target->project())
continue; continue;
Target *otherTarget = otherProject->activeTarget(); Target *otherTarget = otherProject->activeTarget();
@@ -359,7 +361,7 @@ void SessionManager::setActiveDeployConfiguration(Target *target, DeployConfigur
void SessionManager::setStartupProject(Project *startupProject) void SessionManager::setStartupProject(Project *startupProject)
{ {
QTC_ASSERT((!startupProject) QTC_ASSERT((!startupProject)
|| (startupProject && d->m_projects.contains(startupProject)), return); || (startupProject && hasProject(startupProject)), return);
if (d->m_startupProject == startupProject) if (d->m_startupProject == startupProject)
return; return;
@@ -378,7 +380,7 @@ void SessionManager::addProject(Project *pro)
QTC_ASSERT(pro, return); QTC_ASSERT(pro, return);
d->m_virginSession = false; d->m_virginSession = false;
QTC_ASSERT(!d->m_projects.contains(pro), return); QTC_ASSERT(!hasProject(pro), return);
d->m_projects.append(pro); d->m_projects.append(pro);
d->m_sessionNode.addNode(pro->rootProjectNode()); d->m_sessionNode.addNode(pro->rootProjectNode());
@@ -436,10 +438,8 @@ bool SessionManager::save()
data.insert(QLatin1String("Color"), tmp); data.insert(QLatin1String("Color"), tmp);
} }
QStringList projectFiles; QStringList projectFiles
foreach (Project *pro, d->m_projects) = Utils::transform(projects(), [](Project *p) { return p->projectFilePath().toString(); });
projectFiles << pro->projectFilePath().toString();
// Restore infromation on projects that failed to load: // Restore infromation on projects that failed to load:
// don't readd projects to the list, which the user loaded // don't readd projects to the list, which the user loaded
foreach (const QString &failed, d->m_failedProjects) { foreach (const QString &failed, d->m_failedProjects) {
@@ -492,14 +492,19 @@ void SessionManager::closeAllProjects()
removeProjects(projects()); removeProjects(projects());
} }
QList<Project *> SessionManager::projects() const QList<Project *> SessionManager::projects()
{ {
return d->m_projects; return d->m_projects;
} }
bool SessionManager::hasProjects() bool SessionManager::hasProjects()
{ {
return !d->m_projects.isEmpty(); return d->hasProjects();
}
bool SessionManager::hasProject(Project *p)
{
return d->hasProject(p);
} }
QStringList SessionManagerPrivate::dependencies(const QString &proName) const QStringList SessionManagerPrivate::dependencies(const QString &proName) const
@@ -570,7 +575,7 @@ QStringList SessionManagerPrivate::dependenciesOrder() const
QStringList ordered; QStringList ordered;
// copy the map to a temporary list // copy the map to a temporary list
foreach (Project *pro, m_projects) { for (Project *pro : m_projects) {
const QString proName = pro->projectFilePath().toString(); const QString proName = pro->projectFilePath().toString();
unordered << QPair<QString, QStringList>(proName, m_depMap.value(proName)); unordered << QPair<QString, QStringList>(proName, m_depMap.value(proName));
} }
@@ -608,7 +613,7 @@ QList<Project *> SessionManager::projectOrder(const Project *project)
pros = d->dependenciesOrder(); pros = d->dependenciesOrder();
foreach (const QString &proFile, pros) { foreach (const QString &proFile, pros) {
foreach (Project *pro, projects()) { for (Project *pro : projects()) {
if (pro->projectFilePath().toString() == proFile) { if (pro->projectFilePath().toString() == proFile) {
result << pro; result << pro;
break; break;
@@ -651,7 +656,7 @@ Project *SessionManager::projectForNode(Node *node)
while (rootProjectNode && rootProjectNode->parentFolderNode() != &d->m_sessionNode) while (rootProjectNode && rootProjectNode->parentFolderNode() != &d->m_sessionNode)
rootProjectNode = rootProjectNode->parentFolderNode(); rootProjectNode = rootProjectNode->parentFolderNode();
return Utils::findOrDefault(d->m_projects, Utils::equal(&Project::rootProjectNode, rootProjectNode)); return Utils::findOrDefault(projects(), Utils::equal(&Project::rootProjectNode, rootProjectNode));
} }
Project *SessionManager::projectForFile(const Utils::FileName &fileName) Project *SessionManager::projectForFile(const Utils::FileName &fileName)
@@ -705,7 +710,7 @@ void SessionManager::removeProjects(QList<Project *> remove)
// Refresh dependencies // Refresh dependencies
QSet<QString> projectFiles; QSet<QString> projectFiles;
foreach (Project *pro, projects()) { for (Project *pro : projects()) {
if (!remove.contains(pro)) if (!remove.contains(pro))
projectFiles.insert(pro->projectFilePath().toString()); projectFiles.insert(pro->projectFilePath().toString());
} }
@@ -743,9 +748,10 @@ void SessionManager::removeProjects(QList<Project *> remove)
delete pro; delete pro;
} }
if (!startupProject()) if (!startupProject()) {
if (!d->m_projects.isEmpty()) if (hasProjects())
setStartupProject(d->m_projects.first()); setStartupProject(projects().first());
}
} }
/*! /*!
@@ -914,7 +920,7 @@ void SessionManagerPrivate::restoreStartupProject(const PersistentSettingsReader
{ {
const QString startupProject = reader.restoreValue(QLatin1String("StartupProject")).toString(); const QString startupProject = reader.restoreValue(QLatin1String("StartupProject")).toString();
if (!startupProject.isEmpty()) { if (!startupProject.isEmpty()) {
foreach (Project *pro, d->m_projects) { foreach (Project *pro, m_projects) {
if (pro->projectFilePath().toString() == startupProject) { if (pro->projectFilePath().toString() == startupProject) {
m_instance->setStartupProject(pro); m_instance->setStartupProject(pro);
break; break;
@@ -924,7 +930,7 @@ void SessionManagerPrivate::restoreStartupProject(const PersistentSettingsReader
if (!m_startupProject) { if (!m_startupProject) {
if (!startupProject.isEmpty()) if (!startupProject.isEmpty())
qWarning() << "Could not find startup project" << startupProject; qWarning() << "Could not find startup project" << startupProject;
if (!m_projects.isEmpty()) if (hasProjects())
m_instance->setStartupProject(m_projects.first()); m_instance->setStartupProject(m_projects.first());
} }
} }

View File

@@ -99,8 +99,9 @@ public:
static Utils::FileName sessionNameToFileName(const QString &session); static Utils::FileName sessionNameToFileName(const QString &session);
static Project *startupProject(); static Project *startupProject();
static QList<Project *> projects(); static const QList<Project *> projects();
static bool hasProjects(); static bool hasProjects();
static bool hasProject(Project *p);
static bool isDefaultVirgin(); static bool isDefaultVirgin();
static bool isDefaultSession(const QString &session); static bool isDefaultSession(const QString &session);

View File

@@ -195,7 +195,7 @@ bool MemcheckErrorFilterProxyModel::filterAcceptsRow(int sourceRow, const QModel
// ALGORITHM: look at last five stack frames, if none of these is inside any open projects, // ALGORITHM: look at last five stack frames, if none of these is inside any open projects,
// assume this error was created by an external library // assume this error was created by an external library
QSet<QString> validFolders; QSet<QString> validFolders;
foreach (Project *project, SessionManager::projects()) { for (Project *project : SessionManager::projects()) {
validFolders << project->projectDirectory().toString(); validFolders << project->projectDirectory().toString();
foreach (Target *target, project->targets()) { foreach (Target *target, project->targets()) {
foreach (const DeployableFile &file, foreach (const DeployableFile &file,

View File

@@ -209,7 +209,7 @@ void SuppressionDialog::accept()
// Add file to project if there is a project containing this file on the file system. // Add file to project if there is a project containing this file on the file system.
if (!ProjectExplorer::SessionManager::projectForFile(Utils::FileName::fromString(path))) { if (!ProjectExplorer::SessionManager::projectForFile(Utils::FileName::fromString(path))) {
foreach (ProjectExplorer::Project *p, ProjectExplorer::SessionManager::projects()) { for (ProjectExplorer::Project *p : ProjectExplorer::SessionManager::projects()) {
if (path.startsWith(p->projectDirectory().toString())) { if (path.startsWith(p->projectDirectory().toString())) {
p->rootProjectNode()->addFiles(QStringList() << path); p->rootProjectNode()->addFiles(QStringList() << path);
break; break;

View File

@@ -1257,7 +1257,7 @@ static QTextCodec *findProjectCodec(const QString &dir)
return codec; return codec;
} }
} }
return 0; return nullptr;
} }
QTextCodec *VcsBaseEditor::getCodec(const QString &source) QTextCodec *VcsBaseEditor::getCodec(const QString &source)

View File

@@ -125,7 +125,7 @@ ProjectExplorer::Project *VcsProjectCache::projectForToplevel(const Utils::FileN
{ {
PathMatcher parentMatcher; PathMatcher parentMatcher;
PathMatcher childMatcher; PathMatcher childMatcher;
foreach (ProjectExplorer::Project *project, ProjectExplorer::SessionManager::projects()) { for (ProjectExplorer::Project *project : ProjectExplorer::SessionManager::projects()) {
const Utils::FileName projectDir = project->projectDirectory(); const Utils::FileName projectDir = project->projectDirectory();
if (projectDir == vcsTopLevel) if (projectDir == vcsTopLevel)
return project; return project;