forked from qt-creator/qt-creator
Show target page (in project mode) even if project only has one target.
The distinction doesn't really make sense anymore. This is also a prerequisite for 1. adding a "manage" button for managing targets to the target page, and 2. using the "add" button to import builds even for "configured" projects Change-Id: Ib8287dc7d11efa84c54933a591ef15a76042318f Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
This commit is contained in:
@@ -294,7 +294,7 @@ void ProjectWindow::handleProfilesChanges()
|
|||||||
int index = m_tabWidget->currentIndex();
|
int index = m_tabWidget->currentIndex();
|
||||||
QList<Project *> projects = m_tabIndexToProject;
|
QList<Project *> projects = m_tabIndexToProject;
|
||||||
foreach (ProjectExplorer::Project *project, projects) {
|
foreach (ProjectExplorer::Project *project, projects) {
|
||||||
if (m_usesTargetPage.value(project) != useTargetPage(project)) {
|
if (m_hasTarget.value(project) != hasTarget(project)) {
|
||||||
changed = true;
|
changed = true;
|
||||||
deregisterProject(project);
|
deregisterProject(project);
|
||||||
registerProject(project);
|
registerProject(project);
|
||||||
@@ -304,21 +304,9 @@ void ProjectWindow::handleProfilesChanges()
|
|||||||
m_tabWidget->setCurrentIndex(index);
|
m_tabWidget->setCurrentIndex(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ProjectWindow::useTargetPage(ProjectExplorer::Project *project)
|
bool ProjectWindow::hasTarget(ProjectExplorer::Project *project)
|
||||||
{
|
{
|
||||||
if (project->targets().isEmpty())
|
return !project->targets().isEmpty();
|
||||||
return false;
|
|
||||||
if (project->targets().size() > 1)
|
|
||||||
return true;
|
|
||||||
int count = 0;
|
|
||||||
QList<Profile *> profiles = ProfileManager::instance()->profiles();
|
|
||||||
foreach (Profile *p, profiles) {
|
|
||||||
if (project->supportsProfile(p))
|
|
||||||
++count;
|
|
||||||
if (count > 1)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectWindow::registerProject(ProjectExplorer::Project *project)
|
void ProjectWindow::registerProject(ProjectExplorer::Project *project)
|
||||||
@@ -338,25 +326,11 @@ void ProjectWindow::registerProject(ProjectExplorer::Project *project)
|
|||||||
|
|
||||||
QStringList subtabs;
|
QStringList subtabs;
|
||||||
|
|
||||||
bool usesTargetPage = useTargetPage(project);
|
bool projectHasTarget = hasTarget(project);
|
||||||
m_usesTargetPage.insert(project, usesTargetPage);
|
m_hasTarget.insert(project, projectHasTarget);
|
||||||
|
|
||||||
if (!usesTargetPage){
|
if (projectHasTarget) // Use the Targets page
|
||||||
// Show the target specific pages directly
|
|
||||||
if (project->activeTarget()) {
|
|
||||||
QList<ITargetPanelFactory *> factories =
|
|
||||||
ExtensionSystem::PluginManager::getObjects<ITargetPanelFactory>();
|
|
||||||
|
|
||||||
qSort(factories.begin(), factories.end(), &IPanelFactory::prioritySort);
|
|
||||||
|
|
||||||
foreach (ITargetPanelFactory *factory, factories)
|
|
||||||
if (factory->supports(project->activeTarget()))
|
|
||||||
subtabs << factory->displayName();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Use the Targets page
|
|
||||||
subtabs << QCoreApplication::translate("TargetSettingsPanelFactory", "Targets");
|
subtabs << QCoreApplication::translate("TargetSettingsPanelFactory", "Targets");
|
||||||
}
|
|
||||||
|
|
||||||
// Add the project specific pages
|
// Add the project specific pages
|
||||||
QList<IProjectPanelFactory *> factories = ExtensionSystem::PluginManager::getObjects<IProjectPanelFactory>();
|
QList<IProjectPanelFactory *> factories = ExtensionSystem::PluginManager::getObjects<IProjectPanelFactory>();
|
||||||
@@ -410,7 +384,7 @@ void ProjectWindow::showProperties(int index, int subIndex)
|
|||||||
m_previousTargetSubIndex = previousPanelWidget->currentSubIndex();
|
m_previousTargetSubIndex = previousPanelWidget->currentSubIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_usesTargetPage.value(project)) {
|
if (m_hasTarget.value(project)) {
|
||||||
if (subIndex == 0) {
|
if (subIndex == 0) {
|
||||||
// Targets page
|
// Targets page
|
||||||
removeCurrentWidget();
|
removeCurrentWidget();
|
||||||
@@ -422,22 +396,8 @@ void ProjectWindow::showProperties(int index, int subIndex)
|
|||||||
m_centralWidget->setCurrentWidget(m_currentWidget);
|
m_centralWidget->setCurrentWidget(m_currentWidget);
|
||||||
}
|
}
|
||||||
++pos;
|
++pos;
|
||||||
} else if (project->activeTarget()) {
|
|
||||||
// No Targets page, target specific pages are first in the list
|
|
||||||
QList<ITargetPanelFactory *> factories = ExtensionSystem::PluginManager::getObjects<ITargetPanelFactory>();
|
|
||||||
qSort(factories.begin(), factories.end(), &ITargetPanelFactory::prioritySort);
|
|
||||||
foreach (ITargetPanelFactory *panelFactory, factories) {
|
|
||||||
if (panelFactory->supports(project->activeTarget())) {
|
|
||||||
if (subIndex == pos) {
|
|
||||||
fac = panelFactory;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
++pos;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!fac) {
|
|
||||||
QList<IProjectPanelFactory *> factories = ExtensionSystem::PluginManager::getObjects<IProjectPanelFactory>();
|
QList<IProjectPanelFactory *> factories = ExtensionSystem::PluginManager::getObjects<IProjectPanelFactory>();
|
||||||
qSort(factories.begin(), factories.end(), &IPanelFactory::prioritySort);
|
qSort(factories.begin(), factories.end(), &IPanelFactory::prioritySort);
|
||||||
foreach (IProjectPanelFactory *panelFactory, factories) {
|
foreach (IProjectPanelFactory *panelFactory, factories) {
|
||||||
@@ -449,7 +409,6 @@ void ProjectWindow::showProperties(int index, int subIndex)
|
|||||||
++pos;
|
++pos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (fac) {
|
if (fac) {
|
||||||
removeCurrentWidget();
|
removeCurrentWidget();
|
||||||
|
|||||||
@@ -93,14 +93,14 @@ private slots:
|
|||||||
void removedTarget(ProjectExplorer::Target*);
|
void removedTarget(ProjectExplorer::Target*);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool useTargetPage(ProjectExplorer::Project *project);
|
bool hasTarget(ProjectExplorer::Project *project);
|
||||||
void removeCurrentWidget();
|
void removeCurrentWidget();
|
||||||
|
|
||||||
DoubleTabWidget *m_tabWidget;
|
DoubleTabWidget *m_tabWidget;
|
||||||
QStackedWidget *m_centralWidget;
|
QStackedWidget *m_centralWidget;
|
||||||
QWidget *m_currentWidget;
|
QWidget *m_currentWidget;
|
||||||
QList<ProjectExplorer::Project *> m_tabIndexToProject;
|
QList<ProjectExplorer::Project *> m_tabIndexToProject;
|
||||||
QMap<ProjectExplorer::Project *, bool> m_usesTargetPage;
|
QMap<ProjectExplorer::Project *, bool> m_hasTarget;
|
||||||
int m_previousTargetSubIndex;
|
int m_previousTargetSubIndex;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user