diff options
author | hjk <hjk@theqtcompany.com> | 2016-05-27 11:12:03 +0200 |
---|---|---|
committer | hjk <hjk@theqtcompany.com> | 2016-05-30 06:25:48 +0000 |
commit | 7a80f2f01e3f6a62fe34c1299c6209489df2ea46 (patch) | |
tree | 6b8d8dbbad63a1e404d749527fd083a94cd272cf /src/plugins/debugger/debuggeroptionspage.cpp | |
parent | ded0b1c4f58d3b8253836c319d5a545071c2cf17 (diff) | |
download | qt-creator-7a80f2f01e3f6a62fe34c1299c6209489df2ea46.tar.gz |
TreeModel: Take responsibility for some of the casting
This adds a templated layer on top of TreeModel that can specify
item types for the top three layers in the model, relieving user
code from some of the previously necessary type casting.
Two common setups get an extra layer with convenience functions
on top: TwoLevelTreeModel for two-level model with a first level
of static headers and a uniform second level, and UniformTreeModel
where all non-root nodes are the same.
"Untyped" plain TreeModels are still possible.
The walkTree() feature and untyped iteration in the base
TreeItem and TreeModel is retained for now to ease transition
in downstream modules, but is planned to be removed soon.
Change-Id: I67d75a1a4e18e8f254dbfb458db03510d8990d8b
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/plugins/debugger/debuggeroptionspage.cpp')
-rw-r--r-- | src/plugins/debugger/debuggeroptionspage.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/plugins/debugger/debuggeroptionspage.cpp b/src/plugins/debugger/debuggeroptionspage.cpp index f071ac5ef9..4c0702071e 100644 --- a/src/plugins/debugger/debuggeroptionspage.cpp +++ b/src/plugins/debugger/debuggeroptionspage.cpp @@ -99,7 +99,7 @@ public: // DebuggerItemModel // -------------------------------------------------------------------------- -class DebuggerItemModel : public TreeModel +class DebuggerItemModel : public TwoLevelTreeModel<DebuggerTreeItem> { Q_DECLARE_TR_FUNCTIONS(Debugger::DebuggerOptionsPage) @@ -124,10 +124,9 @@ private: DebuggerItemModel::DebuggerItemModel() : m_currentTreeItem(0) { - setHeader(QStringList() << tr("Name") << tr("Location") << tr("Type")); - rootItem()->appendChild(new TreeItem(QStringList() << tr("Auto-detected") << QString() << QString())); - rootItem()->appendChild(new TreeItem(QStringList() << tr("Manual") << QString() << QString())); - + setHeader({ tr("Name"), tr("Location"), tr("Type") }); + appendFirstLevelItem({ tr("Auto-detected") }); + appendFirstLevelItem({ tr("Manual") }); foreach (const DebuggerItem &item, DebuggerItemManager::debuggers()) addDebugger(item, false); } @@ -141,7 +140,7 @@ void DebuggerItemModel::addDebugger(const DebuggerItem &item, bool changed) void DebuggerItemModel::updateDebugger(const DebuggerItem &item) { auto matcher = [item](DebuggerTreeItem *n) { return n->m_item.m_id == item.id(); }; - DebuggerTreeItem *treeItem = findItemAtLevel<DebuggerTreeItem *>(2, matcher); + DebuggerTreeItem *treeItem = findSecondLevelItem(matcher); QTC_ASSERT(treeItem, return); TreeItem *parent = treeItem->parent(); @@ -180,7 +179,7 @@ void DebuggerItemModel::apply() foreach (const QVariant &id, m_removedItems) DebuggerItemManager::deregisterDebugger(id); - forEachItemAtLevel<DebuggerTreeItem *>(2, [](DebuggerTreeItem *item) { + forSecondLevelItems([](DebuggerTreeItem *item) { item->m_changed = false; DebuggerItemManager::updateOrAddDebugger(item->m_item); }); |