MeVisLab Toolbox Reference
ml::StandardItemModel Class Reference

This could be the interface for a standard item model. More...

#include <mlStandardItemModel.h>

Inheritance diagram for ml::StandardItemModel:
ml::AbstractItemModel ml::RefCountedBase ml::EventSource ml::Base

Classes

struct  Attribute

Public Types

typedef std::vector< AttributeAttributeVector
 Vector of attributes.
typedef boost::unordered_map< int, VariantItemData
 Item data, each attribute is specified via its int identifier and its variant value.
typedef std::vector< ItemDataItemDataVector
 Vector of item data.
Public Types inherited from ml::Base
enum  PersistenceInterface { PersistenceByString , PersistenceByTreeNode , PersistenceByStream }
 This enum describes the different persistence interfaces available. More...

Public Member Functions

 StandardItemModel (const AttributeVector &attributes, int hasChildrenAttribute=-1, bool flat=false)
 StandardItemModel ()
 Creates a model without attributes.
virtual int getChildPosition (const ModelIndex &child)
virtual void clear ()
 Clears the entire model.
virtual void insertItems (const ModelIndex &parent, unsigned int position, const ItemDataVector &items)
virtual ModelIndex addItem (const ModelIndex &parent, const ItemData &)
virtual void removeItems (const ModelIndex &parent, unsigned int position, unsigned int numItems)
 Removes items.
bool isFlat () const override
 Overridden methods.
bool hasChildren (const ModelIndex &parent) override
unsigned int getChildCount (const ModelIndex &parent) override
ModelIndex getChild (const ModelIndex &parent, unsigned int index) override
ModelIndex getParent (const ModelIndex &child) override
int getAttributeCount () const override
 Attribute discovery.
std::string getAttributeName (int index) const override
 Returns the name of n-th attribute. Must be overridden.
Variant getAttributeDefault (int index) const override
Variant getData (const ModelIndex &item, int attributeIndex) override
 Data access.
bool rawSetData (const ModelIndex &item, int attributeIndex, const Variant &data) override
bool implementsPersistence (PersistenceInterface iface) const override
void writeTo (AbstractPersistenceOutputStream *stream) const override
void readFrom (AbstractPersistenceInputStream *stream, int version) override
Public Member Functions inherited from ml::AbstractItemModel
virtual int getAttributeIndex (const std::string &name)
virtual bool setData (const ModelIndex &item, int attributeIndex, const Variant &data, void *skipListener=nullptr)
virtual bool bulkSetData (const std::vector< ModelIndex > &items, int attributeIndex, const Variant &data, void *skipListener=nullptr)
virtual bool bulkSetData (const std::vector< ModelIndex > &items, int attributeIndex, const std::vector< Variant > &data, void *skipListener=nullptr)
Public Member Functions inherited from ml::RefCountedBase
 RefCountedBase ()
 Constructor.
 RefCountedBase (const RefCountedBase &)
 Explicit copy constructor.
virtual void incRefCount () const
 Increases the reference count.
virtual void decRefCount () const
 Decreases the reference count (object will be deleted if the reference count is decremented to 0).
bool isRefCountedBase () const override
 Returns whether the instance is derived from RefCountedBase.
Public Member Functions inherited from ml::EventSource
 EventSource ()
 EventSource (const EventSource &evSource)
 ~EventSource () override
void addEventListener (BaseEventCallback *cb, void *userData)
void removeEventListener (BaseEventCallback *cb, void *userData)
bool hasEventListeners () const
Public Member Functions inherited from ml::Base
 Base ()
 Constructor.
virtual ~Base ()
 Destructor.
virtual BasedeepCopy () const
bool isOfAllowedType (const std::vector< const RuntimeType * > &types) const
virtual std::string detailString () const
virtual std::string persistentState () const
 Returns a string describing the object's internal state.
virtual void setPersistentState (const std::string &state)
virtual void addStateToTree (TreeNode *) const
 Attaches the object state as children of the given parent node.
virtual void readStateFromTree (TreeNode *)
 Reads the object state from the children of the given parent node.

Protected Member Functions

 ~StandardItemModel () override
void notifyItemChildrenRequest (const ModelIndex &parent)
Protected Member Functions inherited from ml::AbstractItemModel
 AbstractItemModel ()
ModelIndex createIndex (void *data)
ModelIndex createIndex (size_t data)
virtual void incItemRefCount (void *)
 Implement this if the pointer in the model indices needs explicit reference counting.
virtual void decItemRefCount (void *)
virtual void notifyItemChanged (const ModelIndex &item, bool after, void *skipListener=nullptr)
 change notifications
virtual void notifyItemsInserted (const ModelIndex &parent, unsigned int childIndex, unsigned int itemsInserted, bool after, void *skipListener=nullptr)
virtual void notifyItemsRemoved (const ModelIndex &parent, unsigned int childIndex, unsigned int itemsRemoved, bool after, void *skipListener=nullptr)
virtual void notifyItemsDataChanged (const std::vector< ModelIndex > &items, const std::vector< int > &attributeIndices, void *skipListener=nullptr)
Protected Member Functions inherited from ml::RefCountedBase
 ~RefCountedBase () override
 Destructor.
Protected Member Functions inherited from ml::EventSource
void sendEvent (BaseEvent *event, void *skipListener=nullptr)

Additional Inherited Members

Static Public Member Functions inherited from ml::RefCountedBase
static void updateReferenceCountingIfSupported (Base *oldValue, Base *newValue, bool &isRefCountedBase)
Protected Attributes inherited from ml::RefCountedBase
std::atomic_int_least32_t _refCount
 Reference count.

Detailed Description

This could be the interface for a standard item model.

Definition at line 27 of file mlStandardItemModel.h.

Member Typedef Documentation

◆ AttributeVector

Vector of attributes.

Definition at line 47 of file mlStandardItemModel.h.

◆ ItemData

typedef boost::unordered_map<int, Variant> ml::StandardItemModel::ItemData

Item data, each attribute is specified via its int identifier and its variant value.

Definition at line 50 of file mlStandardItemModel.h.

◆ ItemDataVector

Vector of item data.

Definition at line 52 of file mlStandardItemModel.h.

Constructor & Destructor Documentation

◆ StandardItemModel() [1/2]

ml::StandardItemModel::StandardItemModel ( const AttributeVector & attributes,
int hasChildrenAttribute = -1,
bool flat = false )

Creates new model with given attributes (and defaults). The second argument gives an attribute that should be used to tell if an item has children. This is necessary if you want to add children dynamically when requested. If not given, no ItemChildrenRequestEvents are emitted and hasChildren maps to getChildCount directly. If the third argument is set to true, this model should be a flat model, i.e., there should be no subitems. But this is only a hint and is not enforced. This hint is used in views to avoid displaying subitem indicators.

Referenced by readFrom().

◆ StandardItemModel() [2/2]

ml::StandardItemModel::StandardItemModel ( )

Creates a model without attributes.

◆ ~StandardItemModel()

ml::StandardItemModel::~StandardItemModel ( )
overrideprotected

Member Function Documentation

◆ addItem()

virtual ModelIndex ml::StandardItemModel::addItem ( const ModelIndex & parent,
const ItemData &  )
virtual

◆ clear()

virtual void ml::StandardItemModel::clear ( )
virtual

Clears the entire model.

◆ getAttributeCount()

int ml::StandardItemModel::getAttributeCount ( ) const
overridevirtual

Attribute discovery.

Returns the number of defined attributes for this model. Must be overridden.

Implements ml::AbstractItemModel.

◆ getAttributeDefault()

Variant ml::StandardItemModel::getAttributeDefault ( int index) const
overridevirtual

Returns the default value of n-th attribute. This is used to conserve space during serialization of items. This method returns an invalid value by default.

Reimplemented from ml::AbstractItemModel.

◆ getAttributeName()

std::string ml::StandardItemModel::getAttributeName ( int index) const
overridevirtual

Returns the name of n-th attribute. Must be overridden.

Implements ml::AbstractItemModel.

◆ getChild()

ModelIndex ml::StandardItemModel::getChild ( const ModelIndex & parent,
unsigned int index )
overridevirtual

Returns the n-th child of an item (or n-th top-level item if parent index is invalid). Note: Do not call this before calling getChildCount on the parent, since this is the signal for the model that the children must really be provided! Must be overridden.

Implements ml::AbstractItemModel.

References ml::AbstractItemModel::ModelIndex.

◆ getChildCount()

unsigned int ml::StandardItemModel::getChildCount ( const ModelIndex & parent)
overridevirtual

Returns the number of children of the given item, an invalid index means number of top-level items. This will be only called if the children are really accessed, so the children might be dynamically created the first time this method is called for an item. Must be overridden.

Implements ml::AbstractItemModel.

References ml::AbstractItemModel::ModelIndex.

◆ getChildPosition()

virtual int ml::StandardItemModel::getChildPosition ( const ModelIndex & child)
virtual

Returns the index position of child relative to its parent.

Note: this has to iterate over the children of the parent until the child is found.

References ml::AbstractItemModel::ModelIndex.

◆ getData()

Variant ml::StandardItemModel::getData ( const ModelIndex & item,
int attributeIndex )
overridevirtual

Data access.

Returns the attribute value of a certain item. Must be overridden.

Implements ml::AbstractItemModel.

References ml::AbstractItemModel::ModelIndex.

◆ getParent()

ModelIndex ml::StandardItemModel::getParent ( const ModelIndex & child)
overridevirtual

Returns the parent of an item. Will return invalid index for top-level items. Must be overridden.

Implements ml::AbstractItemModel.

References ml::AbstractItemModel::ModelIndex.

◆ hasChildren()

bool ml::StandardItemModel::hasChildren ( const ModelIndex & parent)
overridevirtual

Or rather mightHaveChildren. This method tells us if an item has children - at least in principle. This is used to display the item as having children, even if it might turn out that is has none actually. The default for this method is to return true if getChildCount returns a number != 0 or if the model index is invalid.

Reimplemented from ml::AbstractItemModel.

References ml::AbstractItemModel::ModelIndex.

◆ implementsPersistence()

bool ml::StandardItemModel::implementsPersistence ( PersistenceInterface iface) const
inlineoverridevirtual

Persistence interface

Reimplemented from ml::Base.

Definition at line 104 of file mlStandardItemModel.h.

References ml::Base::PersistenceByStream.

◆ insertItems()

virtual void ml::StandardItemModel::insertItems ( const ModelIndex & parent,
unsigned int position,
const ItemDataVector & items )
virtual

Inserts new items; this does not generate a insert notification during handling of a ItemChildrenRequestEvent for this very parent. This can be used for dynamically populating the model.

References ml::AbstractItemModel::ModelIndex.

◆ isFlat()

bool ml::StandardItemModel::isFlat ( ) const
inlineoverridevirtual

Overridden methods.

Reimplemented from ml::AbstractItemModel.

Definition at line 71 of file mlStandardItemModel.h.

◆ notifyItemChildrenRequest()

void ml::StandardItemModel::notifyItemChildrenRequest ( const ModelIndex & parent)
protected

◆ rawSetData()

bool ml::StandardItemModel::rawSetData ( const ModelIndex & item,
int attributeIndex,
const Variant & data )
overridevirtual

This will be called by setData and bulkSetData, which will do the necessary notifications afterwards; attributeIndex does not need to be checked for valid range, this has already been done when this method is called.

Implements ml::AbstractItemModel.

References ml::AbstractItemModel::ModelIndex.

◆ readFrom()

void ml::StandardItemModel::readFrom ( AbstractPersistenceInputStream * ,
int  )
overridevirtual

Reads the objects state from the data stream object. version is the version number given by ML_PERSISTENCE_VERSION at the time the object was written to the AbstractPersistenceOutStream.

Include mlAbstractPersistenceStream.h for the implementation of this method.

If you are subclassing from another Base class that implements persistence, use the macro ML_READFROM_SUPER() to load the superclass data, because this takes care of reading and checking the version number of the superclass.

Reimplemented from ml::Base.

References StandardItemModel().

Referenced by notifyItemChildrenRequest().

◆ removeItems()

virtual void ml::StandardItemModel::removeItems ( const ModelIndex & parent,
unsigned int position,
unsigned int numItems )
virtual

Removes items.

References ml::AbstractItemModel::ModelIndex.

◆ writeTo()

void ml::StandardItemModel::writeTo ( AbstractPersistenceOutputStream * ) const
overridevirtual

Writes the objects state to the data stream object.

Include mlAbstractPersistenceStream.h for the implementation of this method.

If you are subclassing from another Base class that implements persistence, use the macro ML_WRITETO_SUPER() to save the superclass data, because this takes care of writing the version number of the superclass.

Reimplemented from ml::Base.

Referenced by notifyItemChildrenRequest().


The documentation for this class was generated from the following file: