ProjectTree: Decouple ProjectTree from Projects

Make sure the ProjectTree gets its data exclusively from the Session
and the SessionNode it holds.

Change-Id: Ic44e1364adf36077018edc972e18815d7f972922
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
This commit is contained in:
Tobias Hunger
2017-03-16 15:02:23 +01:00
parent 2b6a912e6b
commit 9434fa4888
3 changed files with 12 additions and 2 deletions

View File

@@ -124,7 +124,7 @@ QVariant FlatModel::data(const QModelIndex &index, int role) const
case Qt::FontRole: {
QFont font;
if (Project *project = SessionManager::startupProject()) {
if (node == project->rootProjectNode())
if (node == SessionManager::nodeForProject(project))
font.setBold(true);
}
result = font;
@@ -227,7 +227,7 @@ ExpandData FlatModel::expandDataForNode(const Node *node) const
void FlatModel::handleProjectAdded(Project *project)
{
Node *node = project->rootProjectNode();
Node *node = SessionManager::nodeForProject(project);
m_toExpand.insert(expandDataForNode(node));
if (WrapperNode *wrapper = wrapperForNode(node)) {
wrapper->forFirstLevelChildren([this](WrapperNode *child) {

View File

@@ -680,6 +680,15 @@ Project *SessionManager::projectForNode(Node *node)
return nullptr;
}
Node *SessionManager::nodeForProject(Project *project)
{
for (const QPair<Project *,ProjectNode*> &pair : d->m_projects) {
if (pair.first == project)
return pair.second;
}
return nullptr;
}
Project *SessionManager::projectForFile(const Utils::FileName &fileName)
{
const QList<Project *> &projectList = projects();

View File

@@ -116,6 +116,7 @@ public:
static SessionNode *sessionNode();
static Project *projectForNode(Node *node);
static Node *nodeForProject(Project *project);
static Node *nodeForFile(const Utils::FileName &fileName);
static Project *projectForFile(const Utils::FileName &fileName);