diff options
Diffstat (limited to 'src/libs/utils/listmodel.h')
-rw-r--r-- | src/libs/utils/listmodel.h | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/libs/utils/listmodel.h b/src/libs/utils/listmodel.h index 4a28041b66..3497b84bcb 100644 --- a/src/libs/utils/listmodel.h +++ b/src/libs/utils/listmodel.h @@ -120,7 +120,29 @@ public: return item ? &item->itemData : nullptr; } - void forItems(const std::function<void(ItemData &)> &func) const + 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 forAllData(const std::function<void(ItemData &)> &func) const { BaseModel::rootItem()->forFirstLevelChildren([func](ChildType *child) { func(child->itemData); @@ -151,6 +173,7 @@ public: return {}; } + using QAbstractItemModel::itemData; virtual QVariant itemData(const ItemData &idata, int column, int role) const { if (m_dataAccessor) |