Utils: Add some convenience functions to ListModel

allData(), setAllData(), and findIndex(<predicate>)

Change-Id: I1f43e3b5c3810f219057e7e09338e06a66e1858a
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
hjk
2020-05-20 07:52:54 +02:00
parent 317d0a77a1
commit d475daecf0

View File

@@ -120,6 +120,28 @@ public:
return item ? &item->itemData : nullptr; 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 void forItems(const std::function<void(ItemData &)> &func) const
{ {
BaseModel::rootItem()->forFirstLevelChildren([func](ChildType *child) { BaseModel::rootItem()->forFirstLevelChildren([func](ChildType *child) {