diff options
author | Tobias Hunger <tobias.hunger@nokia.com> | 2010-03-11 13:42:41 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@nokia.com> | 2010-03-15 13:55:11 +0100 |
commit | dceda9db70ba01381891b6b8add46d94a7075c89 (patch) | |
tree | f6a9f37d5728e09850020efaf9db8c8d29e0ccb9 | |
parent | 6ecd9cc537f41bd016843c7e6223ff7705688d59 (diff) | |
download | qt-creator-dceda9db70ba01381891b6b8add46d94a7075c89.tar.gz |
Refresh ProjectMode when supported targets change
Reviewed-by: con
-rw-r--r-- | src/plugins/projectexplorer/projectwindow.cpp | 25 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectwindow.h | 6 |
2 files changed, 25 insertions, 6 deletions
diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index e5f2bfe47b..a8e87ee682 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -277,9 +277,9 @@ ProjectWindow::ProjectWindow(QWidget *parent) connect(session, SIGNAL(aboutToSaveSession()), this, SLOT(saveStatus())); connect(session, SIGNAL(projectAdded(ProjectExplorer::Project*)), - this, SLOT(projectAdded(ProjectExplorer::Project*))); + this, SLOT(registerProject(ProjectExplorer::Project*))); connect(session, SIGNAL(aboutToRemoveProject(ProjectExplorer::Project*)), - this, SLOT(aboutToRemoveProject(ProjectExplorer::Project*))); + this, SLOT(deregisterProject(ProjectExplorer::Project*))); // Update properties to empty project for now: showProperties(-1, -1); @@ -296,7 +296,7 @@ void ProjectWindow::shutdown() disconnect(ProjectExplorerPlugin::instance()->session(), 0, this, 0); } -void ProjectWindow::projectAdded(ProjectExplorer::Project *project) +void ProjectWindow::registerProject(ProjectExplorer::Project *project) { if (!project || m_tabIndexToProject.contains(project)) return; @@ -320,13 +320,20 @@ void ProjectWindow::projectAdded(ProjectExplorer::Project *project) m_tabIndexToProject.insert(index, project); m_tabWidget->insertTab(index, project->displayName(), subtabs); + + connect(project, SIGNAL(supportedTargetIdsChanged()), + this, SLOT(refreshProject())); } -void ProjectWindow::aboutToRemoveProject(ProjectExplorer::Project *project) +void ProjectWindow::deregisterProject(ProjectExplorer::Project *project) { int index = m_tabIndexToProject.indexOf(project); if (index < 0) return; + + disconnect(project, SIGNAL(supportedTargetIdsChanged()), + this, SLOT(refreshProject())); + m_tabIndexToProject.removeAt(index); m_tabWidget->removeTab(index); } @@ -341,6 +348,16 @@ void ProjectWindow::saveStatus() // TODO } +void ProjectWindow::refreshProject() +{ + Project *project = qobject_cast<ProjectExplorer::Project *>(sender()); + if (!m_tabIndexToProject.contains(project)) + return; + + deregisterProject(project); + registerProject(project); +} + void ProjectWindow::showProperties(int index, int subIndex) { if (index < 0 || index >= m_tabIndexToProject.count()) diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h index fb4fe10a74..8edcb66d59 100644 --- a/src/plugins/projectexplorer/projectwindow.h +++ b/src/plugins/projectexplorer/projectwindow.h @@ -90,8 +90,10 @@ private slots: void showProperties(int index, int subIndex); void restoreStatus(); void saveStatus(); - void projectAdded(ProjectExplorer::Project*); - void aboutToRemoveProject(ProjectExplorer::Project*); + void registerProject(ProjectExplorer::Project*); + void deregisterProject(ProjectExplorer::Project*); + + void refreshProject(); private: void removeCurrentWidget(); |