00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 #ifndef TREEMODEL_H
00025 #define TREEMODEL_H
00026 
00027 #include <map>
00028 #include <string>
00029 
00030 #include <QAbstractItemModel>
00031 #include <QModelIndex>
00032 #include <QVariant>
00033 
00034 using namespace std;
00035 
00036 class TreeItem;
00037 
00038 
00039 class TreeModel : public QAbstractItemModel
00040 {
00041         Q_OBJECT
00042 
00043         public:
00044                 TreeModel(const char* id, QObject *parent = 0);
00045                 ~TreeModel();
00046 
00047                 QVariant data(const QModelIndex &index, int role) const;
00048                 Qt::ItemFlags flags(const QModelIndex &index) const;
00049                 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
00050                 QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
00051                 QModelIndex parent(const QModelIndex &index) const;
00052                 int rowCount(const QModelIndex &parent = QModelIndex()) const;
00053                 int columnCount(const QModelIndex &parent = QModelIndex()) const;
00054                 void setupModelData( multimap<string, map<int, string> > );
00055                 int getID(const QModelIndex &parent = QModelIndex()) const;
00056                 bool removeRows(int position, int rows, const QModelIndex &parent);
00057                 QModelIndex indexOfLatestItem(int id, const QModelIndex &parent=QModelIndex());
00058         private:
00059                 
00060                 TreeItem *rootItem;
00061 };
00062 
00063 #endif