18 : QObject(parent), m_active(true), m_model(nullptr), m_item(nullptr)
37 auto ff = [=](
SessionItem* ,
const QString& property) { f(property); };
116 disconnect(
m_model, &SessionModel::rowsAboutToBeRemoved,
this,
124 connect(
m_model, &SessionModel::rowsAboutToBeRemoved,
this,
220 const QVector<int>& )
222 if (topLeft.parent() != bottomRight.parent())
236 if (!tag.isEmpty()) {
243 const QString tag = parent->tagFromItem(item);
244 if (!tag.isEmpty()) {
265 QVector<SessionItem*> items = parent->getChildrenOfType(newChild->
modelType());
266 for (
auto sibling : items)
Defines class SessionModel.
void unsubscribe(const void *caller)
Cancells all subscribtion of given caller.
void setOnItemDestroy(std::function< void(SessionItem *)> f, const void *caller=0)
std::vector< call_item_t > m_onAnyChildChange
void setOnAnyChildChange(std::function< void(SessionItem *)> f, const void *caller=0)
Calls back on any change in children (number of children or their properties), reports childItem.
void onBeginRemoveRows(const QModelIndex &parent, int first, int last)
void callOnPropertyChange(const QString &name)
void onRowRemoved(const QModelIndex &parent, int first, int last)
void setOnValueChange(std::function< void(void)> f, const void *caller=0)
std::vector< call_item_t > m_onParentChange
void callOnChildPropertyChange(SessionItem *item, const QString &name)
std::pair< std::function< void(SessionItem *, QString)>, const void * > call_item_str_t
void callOnItemDestroy()
Notifies subscribers if an item owning given mapper is about to be destroyed.
void setOnChildPropertyChange(std::function< void(SessionItem *, QString)> f, const void *caller=0)
Calls back on child property change, report childItem and property name.
void clean_container(U &v, const void *caller)
removes all callbacks related to given caller
void callOnAnyChildChange(SessionItem *item)
std::pair< std::function< void(SessionItem *)>, const void * > call_item_t
void callOnChildrenChange(SessionItem *item)
void setOnAboutToRemoveChild(std::function< void(SessionItem *)> f, const void *caller=0)
void setOnPropertyChange(std::function< void(QString)> f, const void *caller=0)
void onDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector< int > &roles={})
std::vector< call_item_t > m_onChildrenChange
std::vector< call_t > m_onValueChange
QModelIndex m_aboutToDelete
void setItem(SessionItem *item)
void setOnChildrenChange(std::function< void(SessionItem *)> f, const void *caller=0)
Calls back when number of children has changed, reports newChild.
std::vector< call_t > m_onSiblingsChange
void setModel(SessionModel *model)
std::pair< std::function< void(void)>, const void * > call_t
std::vector< call_item_str_t > m_onPropertyChange
void callOnSiblingsChange()
int nestlingDepth(SessionItem *item, int level=0)
std::vector< call_item_str_t > m_onChildPropertyChange
void callOnAboutToRemoveChild(SessionItem *item)
void setOnSiblingsChange(std::function< void(void)> f, const void *caller=0)
std::vector< call_item_t > m_onItemDestroy
void setOnParentChange(std::function< void(SessionItem *)> f, const void *caller=0)
Calls back when parent has changed, reports newParent.
ModelMapper(QObject *parent=0)
void callOnParentChange(SessionItem *new_parent)
void onRowsInserted(const QModelIndex &parent, int first, int last)
std::vector< call_item_t > m_onAboutToRemoveChild
SessionItem * parent() const
Returns parent of this item.
SessionModel * model() const
Returns model of this item.
QString modelType() const
Get model type.
QString tagFromItem(const SessionItem *item) const
Returns the tag name of given item when existing.
SessionItem * itemForIndex(const QModelIndex &index) const
virtual QModelIndex index(int row, int column, const QModelIndex &parent) const
SessionItem * rootItem() const
QString const & name(EShape k)