From b492c264faba030b1b234776cfbc5a1d844768c1 Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@nokia.com> Date: Mon, 22 Feb 2010 14:42:37 +0100 Subject: [PATCH] Sort targets on displayname in project mode Reviewed-by: con --- .../projectexplorer/targetsettingspanel.cpp | 24 +++++++++++++------ .../projectexplorer/targetsettingspanel.h | 1 + 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp index f38e26c57ef..98522e228ca 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.cpp +++ b/src/plugins/projectexplorer/targetsettingspanel.cpp @@ -172,7 +172,7 @@ void TargetSettingsPanelWidget::setupUi() foreach (Target *t, m_project->targets()) targetAdded(t); - m_selector->markActive(m_project->targets().indexOf(m_project->activeTarget())); + m_selector->markActive(m_targets.indexOf(m_project->activeTarget())); connect(m_selector, SIGNAL(currentIndexChanged(int,int)), this, SLOT(currentTargetIndexChanged(int,int))); @@ -182,7 +182,7 @@ void TargetSettingsPanelWidget::setupUi() this, SLOT(removeTarget())); if (m_project->targets().count()) - currentTargetIndexChanged(m_project->targets().indexOf(m_project->activeTarget()), 0); + currentTargetIndexChanged(m_targets.indexOf(m_project->activeTarget()), 0); } void TargetSettingsPanelWidget::currentTargetIndexChanged(int targetIndex, int subIndex) @@ -194,7 +194,7 @@ void TargetSettingsPanelWidget::currentTargetIndexChanged(int targetIndex, int s m_selector->setCurrentIndex(targetIndex); m_selector->setCurrentSubIndex(subIndex); - Target *target(m_project->targets().at(targetIndex)); + Target *target(m_targets.at(targetIndex)); // Target was not actually changed: if (m_currentIndex == targetIndex) { @@ -246,7 +246,7 @@ void TargetSettingsPanelWidget::addTarget() void TargetSettingsPanelWidget::removeTarget() { int index = m_selector->currentIndex(); - Target *t = m_project->targets().at(index); + Target *t = m_targets.at(index); // TODO: Ask before removal? m_project->removeTarget(t); } @@ -256,7 +256,15 @@ void TargetSettingsPanelWidget::targetAdded(ProjectExplorer::Target *target) Q_ASSERT(m_project == target->project()); Q_ASSERT(m_selector); - m_selector->addTarget(target->displayName()); + for (int pos = 0; pos <= m_targets.count(); ++pos) { + if (m_targets.count() == pos || + m_targets.at(pos)->displayName() > target->displayName()) { + m_targets.insert(pos, target); + m_selector->insertTarget(pos, target->displayName()); + break; + } + } + m_selector->setAddButtonEnabled(m_project->possibleTargetIds().count() > 0); m_selector->setRemoveButtonEnabled(m_project->targets().count() > 1); } @@ -266,9 +274,11 @@ void TargetSettingsPanelWidget::aboutToRemoveTarget(ProjectExplorer::Target *tar Q_ASSERT(m_project == target->project()); Q_ASSERT(m_selector); - int index(m_project->targets().indexOf(target)); + int index(m_targets.indexOf(target)); if (index < 0) return; + m_targets.removeAt(index); + m_selector->removeTarget(index); m_selector->setAddButtonEnabled(m_project->possibleTargetIds().count() > 0); m_selector->setRemoveButtonEnabled(m_project->targets().count() > 2); // target is not yet removed! @@ -279,6 +289,6 @@ void TargetSettingsPanelWidget::activeTargetChanged(ProjectExplorer::Target *tar Q_ASSERT(m_project == target->project()); Q_ASSERT(m_selector); - int index(m_project->targets().indexOf(target)); + int index(m_targets.indexOf(target)); m_selector->markActive(index); } diff --git a/src/plugins/projectexplorer/targetsettingspanel.h b/src/plugins/projectexplorer/targetsettingspanel.h index 3c801feef0d..9b596bbdd2b 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.h +++ b/src/plugins/projectexplorer/targetsettingspanel.h @@ -97,6 +97,7 @@ private: QStackedWidget *m_centralWidget; QWidget *m_noTargetLabel; PanelsWidget *m_panelWidgets[2]; + QList<Target *> m_targets; }; } // namespace Internal -- GitLab