Skip to content
Snippets Groups Projects
Commit 946e702f authored by Matthias Puchner's avatar Matthias Puchner
Browse files

add convenience filter method for session model top items

parent 6377d4f8
No related branches found
No related tags found
1 merge request!11Reflectometry import - read/write project, show import warnings/errors, item selection, UI improvements
Pipeline #33105 failed
...@@ -97,6 +97,8 @@ public: ...@@ -97,6 +97,8 @@ public:
//! Returns first item in list of topItems //! Returns first item in list of topItems
template <typename T = SessionItem> T* topItem() const; template <typename T = SessionItem> T* topItem() const;
template <typename T = SessionItem> QVector<T*> topItems() const; template <typename T = SessionItem> QVector<T*> topItems() const;
template <typename T = SessionItem>
QVector<T*> topItems(std::function<bool(const T&)> accept) const;
virtual void initFrom(SessionModel* model, SessionItem* parent); virtual void initFrom(SessionModel* model, SessionItem* parent);
SessionItem* rootItem() const; SessionItem* rootItem() const;
...@@ -156,6 +158,21 @@ template <typename T> QVector<T*> SessionModel::topItems() const ...@@ -156,6 +158,21 @@ template <typename T> QVector<T*> SessionModel::topItems() const
return result; return result;
} }
template <typename T> QVector<T*> SessionModel::topItems(std::function<bool(const T&)> accept) const
{
QVector<T*> result;
QModelIndex parentIndex;
for (int i_row = 0; i_row < rowCount(parentIndex); ++i_row) {
QModelIndex itemIndex = index(i_row, 0, parentIndex);
if (auto item = dynamic_cast<T*>(itemForIndex(itemIndex)))
if (accept(*item))
result.push_back(item);
}
return result;
}
inline bool SessionModel::setHeaderData(int, Qt::Orientation, const QVariant&, int) inline bool SessionModel::setHeaderData(int, Qt::Orientation, const QVariant&, int)
{ {
return false; return false;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment