15 #ifndef BORNAGAIN_GUI_COREGUI_MODELS_MODELMAPPER_H
16 #define BORNAGAIN_GUI_COREGUI_MODELS_MODELMAPPER_H
18 #include <QModelIndex>
38 const void* caller = 0);
59 void onDataChanged(
const QModelIndex& topLeft,
const QModelIndex& bottomRight,
60 const QVector<int>& roles = {});
62 void onRowsInserted(
const QModelIndex& parent,
int first,
int last);
66 void onRowRemoved(
const QModelIndex& parent,
int first,
int last);
90 using call_t = std::pair<std::function<void(
void)>,
const void*>;
91 using call_str_t = std::pair<std::function<void(QString)>,
const void*>;
109 v.erase(std::remove_if(
111 [caller](
typename U::value_type
const& x) ->
bool { return (x.second == caller); }),
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 setActive(bool state)
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(QString)>, const void * > call_str_t
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
QString const & name(EShape k)