aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/listmodel.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/utils/listmodel.h')
-rw-r--r--src/libs/utils/listmodel.h25
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)