diff options
author | hjk <hjk@theqtcompany.com> | 2016-05-04 16:41:15 +0200 |
---|---|---|
committer | hjk <hjk@theqtcompany.com> | 2016-05-12 12:30:36 +0000 |
commit | dee7ad3806ffa777c619b832d82186c5bbdfc1b3 (patch) | |
tree | 485b011f795152268306dbd48a240dcd9c63d55a /src/plugins/projectexplorer/toolchainoptionspage.cpp | |
parent | aa2e1353795940fdd423c1d756bbd3243244ed70 (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.cpp | 17 |
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; |