| 1 | /*
 | 
|---|
| 2 |  * QtMoleculeItem.hpp
 | 
|---|
| 3 |  *
 | 
|---|
| 4 |  *  Created on: Jan 17, 2015
 | 
|---|
| 5 |  *      Author: heber
 | 
|---|
| 6 |  */
 | 
|---|
| 7 | 
 | 
|---|
| 8 | #ifndef QTMOLECULEITEM_HPP_
 | 
|---|
| 9 | #define QTMOLECULEITEM_HPP_
 | 
|---|
| 10 | 
 | 
|---|
| 11 | // include config.h
 | 
|---|
| 12 | #ifdef HAVE_CONFIG_H
 | 
|---|
| 13 | #include <config.h>
 | 
|---|
| 14 | #endif
 | 
|---|
| 15 | 
 | 
|---|
| 16 | #include <QList>
 | 
|---|
| 17 | #include <QStandardItem>
 | 
|---|
| 18 | 
 | 
|---|
| 19 | #include <boost/function.hpp>
 | 
|---|
| 20 | #include <boost/thread/recursive_mutex.hpp>
 | 
|---|
| 21 | #include <list>
 | 
|---|
| 22 | #include <string>
 | 
|---|
| 23 | 
 | 
|---|
| 24 | #include "UIElements/Qt4/InstanceBoard/QtObservedMolecule.hpp"
 | 
|---|
| 25 | 
 | 
|---|
| 26 | /** This class describes the general interface for a specific item in a QtAbstractItemModel
 | 
|---|
| 27 |  * to contain a specific piece of information about a specific molecule.
 | 
|---|
| 28 |  *
 | 
|---|
| 29 |  * To this end, we need a ref to the molecule for updating the information when
 | 
|---|
| 30 |  * necessary and we need to know the channels we have to listen to know when an
 | 
|---|
| 31 |  * update is necessary.
 | 
|---|
| 32 |  *
 | 
|---|
| 33 |  * This class takes care of of all the rest:
 | 
|---|
| 34 |  * -# informing QtMoleculeList about required update ("dirty")
 | 
|---|
| 35 |  * -# relaying updateState() call from QtMoleculeList to the specific internal_updateState()
 | 
|---|
| 36 |  */
 | 
|---|
| 37 | class QtMoleculeItem : public QStandardItem
 | 
|---|
| 38 | {
 | 
|---|
| 39 | public:
 | 
|---|
| 40 |   //!> enumerates all different item types, coinciding with column in QtMoleculeList
 | 
|---|
| 41 |   enum COLUMNTYPES {NAME,VISIBILITY,ATOMCOUNT,FORMULA,OCCURRENCE,COLUMNTYPES_MAX};
 | 
|---|
| 42 | 
 | 
|---|
| 43 |   QtMoleculeItem();
 | 
|---|
| 44 |   virtual ~QtMoleculeItem();
 | 
|---|
| 45 | 
 | 
|---|
| 46 |   /** Update the state of this item.
 | 
|---|
| 47 |    *
 | 
|---|
| 48 |    * \param _ObservedMolecule object to update state from
 | 
|---|
| 49 |    */
 | 
|---|
| 50 |   virtual void updateState(const QtObservedMolecule::ptr &_ObservedMolecule) = 0;
 | 
|---|
| 51 | 
 | 
|---|
| 52 |   /** Returns the type of this QtMoleculeItem, i.e. the column in QtMoleculeList.
 | 
|---|
| 53 |    *
 | 
|---|
| 54 |    * @return type of this item
 | 
|---|
| 55 |    */
 | 
|---|
| 56 |   virtual QtMoleculeItem::COLUMNTYPES getType() const = 0;
 | 
|---|
| 57 | 
 | 
|---|
| 58 |   /** Getter for the id of the observed molecule for this item.
 | 
|---|
| 59 |    *
 | 
|---|
| 60 |    * \return id of the observed molecule
 | 
|---|
| 61 |    */
 | 
|---|
| 62 |   virtual ObservedValue_Index_t getMoleculeIndex() const
 | 
|---|
| 63 |   { return NULL; }
 | 
|---|
| 64 | };
 | 
|---|
| 65 | 
 | 
|---|
| 66 | 
 | 
|---|
| 67 | #endif /* QTMOLECULEITEM_HPP_ */
 | 
|---|