aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/listmodel.h
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2020-05-20 07:52:54 +0200
committerhjk <hjk@qt.io>2020-05-20 07:29:22 +0000
commitd475daecf012d8c0d494b8a5737c24277bbe91db (patch)
treee2e5b6ffae8e5ad00e627388f37f6086a0d723b6 /src/libs/utils/listmodel.h
parent317d0a77a11f3892d2b2cf758eb1c70d8d909721 (diff)
Utils: Add some convenience functions to ListModel
allData(), setAllData(), and findIndex(<predicate>) Change-Id: I1f43e3b5c3810f219057e7e09338e06a66e1858a Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/libs/utils/listmodel.h')
-rw-r--r--src/libs/utils/listmodel.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/libs/utils/listmodel.h b/src/libs/utils/listmodel.h
index f859b8e9758..7c1b5dfd760 100644
--- a/src/libs/utils/listmodel.h
+++ b/src/libs/utils/listmodel.h
@@ -120,6 +120,28 @@ public:
return item ? &item->itemData : nullptr;
}
+ QModelIndex findIndex(const std::function<bool(const ItemData &)> &pred) const
+ {
+ ChildType *item = findItemByData(pred);
+ return item ? BaseTreeModel::indexForItem(item) : QModelIndex();
+ }
+
+ QList<ItemData> allData() const
+ {
+ QList<ItemData> res;
+ BaseModel::rootItem()->forFirstLevelChildren([&res](ChildType *child) {
+ res.append(child->itemData);
+ });
+ return res;
+ }
+
+ void setAllData(const QList<ItemData> &items)
+ {
+ BaseModel::rootItem()->removeChildren();
+ for (const ItemData &data : items)
+ appendItem(data);
+ }
+
void forItems(const std::function<void(ItemData &)> &func) const
{
BaseModel::rootItem()->forFirstLevelChildren([func](ChildType *child) {