aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/toolchainoptionspage.cpp
diff options
context:
space:
mode:
authorhjk <hjk@theqtcompany.com>2016-05-04 16:41:15 +0200
committerhjk <hjk@theqtcompany.com>2016-05-12 12:30:36 +0000
commitdee7ad3806ffa777c619b832d82186c5bbdfc1b3 (patch)
tree485b011f795152268306dbd48a240dcd9c63d55a /src/plugins/projectexplorer/toolchainoptionspage.cpp
parentaa2e1353795940fdd423c1d756bbd3243244ed70 (diff)
TreeModel: Rework tree iteration
Use function objects to apply directly during a depth-first walk of the tree instead of faking a flat container of tree nodes. Less code, and allows even some non-const operations. Change-Id: I804ab11df358fe937b40809cbcb772e6f3ff8dc5 Reviewed-by: David Schulz <david.schulz@theqtcompany.com> Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer/toolchainoptionspage.cpp')
-rw-r--r--src/plugins/projectexplorer/toolchainoptionspage.cpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/plugins/projectexplorer/toolchainoptionspage.cpp b/src/plugins/projectexplorer/toolchainoptionspage.cpp
index fb235e8dc6..2b48ba1d8f 100644
--- a/src/plugins/projectexplorer/toolchainoptionspage.cpp
+++ b/src/plugins/projectexplorer/toolchainoptionspage.cpp
@@ -252,13 +252,10 @@ void ToolChainOptionsWidget::removeToolChain(ToolChain *tc)
}
}
- TreeItem *parent = m_model.rootItem()->child(tc->isAutoDetected() ? 0 : 1);
- foreach (ToolChainTreeItem *item, m_model.itemsAtLevel<ToolChainTreeItem *>(1, parent)) {
- if (item->toolChain == tc) {
- delete m_model.takeItem(item);
- break;
- }
- }
+ auto item = m_model.findItemAtLevel<ToolChainTreeItem *>(1, [tc](ToolChainTreeItem *item) {
+ return tc->isAutoDetected() && item->toolChain == tc;
+ });
+ delete m_model.takeItem(item);
updateState();
}
@@ -287,15 +284,15 @@ void ToolChainOptionsWidget::apply()
Q_ASSERT(m_toRemoveList.isEmpty());
// Update tool chains:
- foreach (ToolChainTreeItem *item, m_model.itemsAtLevel<ToolChainTreeItem *>(1, m_manualRoot)) {
- if (item->changed) {
+ m_model.forEachItemAtLevel<ToolChainTreeItem *>(1, [this](ToolChainTreeItem *item) {
+ if (item->parent() == m_manualRoot && item->changed) {
Q_ASSERT(item->toolChain);
if (item->widget)
item->widget->apply();
item->changed = false;
item->update();
}
- }
+ });
// Add new (and already updated) tool chains
QStringList removedTcs;