00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef PRIMITIVEITEMMODEL_H
00026 #define PRIMITIVEITEMMODEL_H
00027
00028 #include <avogadro/global.h>
00029 #include <avogadro/engine.h>
00030
00031 #include <QAbstractItemModel>
00032
00033 class QTreeView;
00034 namespace Avogadro {
00035
00036 class PrimitiveItemModelPrivate;
00037 class A_EXPORT PrimitiveItemModel : public QAbstractItemModel
00038 {
00039 Q_OBJECT
00040
00041 public:
00042 enum Role {
00043 PrimitiveRole = Qt::UserRole + 1,
00044 PrimitiveTypeRole
00045 };
00046
00047 public:
00048 explicit PrimitiveItemModel( Engine *engine, QObject *parent = 0 );
00049 explicit PrimitiveItemModel( Molecule *molecule, QObject *parent = 0 );
00050 ~PrimitiveItemModel();
00051
00052 QModelIndex parent( const QModelIndex & index ) const;
00053 int rowCount( const QModelIndex & parent = QModelIndex() ) const;
00054 int columnCount( const QModelIndex & parent = QModelIndex() ) const;
00055 QVariant data ( const QModelIndex & index, int role = Qt::DisplayRole ) const;
00056 Qt::ItemFlags flags ( const QModelIndex & index ) const;
00057
00058 QModelIndex index ( int row, int column, const QModelIndex & parent = QModelIndex() ) const;
00059
00060 private Q_SLOTS:
00061 void engineChanged();
00062 void addPrimitive(Primitive *primitive);
00063 void updatePrimitive(Primitive *primitive);
00064 void removePrimitive(Primitive *primitive);
00065
00066 private:
00067 PrimitiveItemModelPrivate * const d;
00068
00069 int primitiveIndex(Primitive *primitive);
00070
00071 };
00072
00073 }
00074
00075 #endif // __PRIMITIVEITEMMODEL_H