Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef QmitkDataStorageTableModel_h
00019 #define QmitkDataStorageTableModel_h
00020
00022 #include "mitkDataStorage.h"
00023 #include "mitkBaseProperty.h"
00024 #include "mitkWeakPointer.h"
00025 #include "mitkNodePredicateBase.h"
00026
00028 #include <QAbstractTableModel>
00029
00031
00038 class QMITK_EXPORT QmitkDataStorageTableModel : public QAbstractTableModel
00039 {
00040 Q_OBJECT
00041
00042
00043 public:
00049 QmitkDataStorageTableModel(mitk::DataStorage::Pointer _DataStorage, mitk::NodePredicateBase* _Predicate = 0
00050 , QObject* parent = 0 );
00051
00055 virtual ~QmitkDataStorageTableModel();
00056
00057
00058 public:
00062 const mitk::DataStorage::Pointer GetDataStorage() const;
00066 mitk::NodePredicateBase::Pointer GetPredicate() const;
00072 mitk::DataNode::Pointer GetNode(const QModelIndex &index) const;
00077 virtual QVariant headerData(int section, Qt::Orientation orientation,
00078 int role) const;
00083 virtual Qt::ItemFlags flags(const QModelIndex &index) const;
00087 virtual int rowCount(const QModelIndex &parent) const;
00091 virtual int columnCount(const QModelIndex &parent) const;
00095 virtual QVariant data(const QModelIndex &index, int role) const;
00096
00097
00098 public:
00102 void SetDataStorage(mitk::DataStorage::Pointer _DataStorage);
00106 void SetPredicate(mitk::NodePredicateBase* _Predicate);
00114 virtual void AddNode(const mitk::DataNode* node);
00118 virtual void RemoveNode(const mitk::DataNode* node);
00122 virtual std::vector<mitk::DataNode*> GetNodeSet() const;
00129 virtual void PropertyModified(const itk::Object *caller, const itk::EventObject &event);
00133 bool setData(const QModelIndex &index, const QVariant &value,
00134 int role);
00138 void sort ( int column, Qt::SortOrder order = Qt::AscendingOrder );
00139
00140
00141 protected:
00146 struct DataNodeCompareFunction
00147 : public std::binary_function<mitk::DataNode::Pointer, mitk::DataNode::Pointer, bool>
00148 {
00152 enum CompareCriteria {
00153 CompareByName = 0,
00154 CompareByClassName,
00155 CompareByVisibility
00156 };
00157
00161 enum CompareOperator {
00162 Less = 0,
00163 Greater
00164 };
00165
00169 DataNodeCompareFunction(CompareCriteria _CompareCriteria = CompareByName, CompareOperator _CompareOperator = Less);
00173 bool operator()(const mitk::DataNode::Pointer& _Left
00174 , const mitk::DataNode::Pointer& _Right) const;
00175
00176 protected:
00177 CompareCriteria m_CompareCriteria;
00178 CompareOperator m_CompareOperator;
00179 };
00180
00181
00182 protected:
00187 virtual void Reset();
00188
00189
00190 protected:
00197 mitk::WeakPointer<mitk::DataStorage> m_DataStorage;
00202 mitk::NodePredicateBase::Pointer m_Predicate;
00206 std::vector<mitk::DataNode*> m_NodeSet;
00210 std::map<mitk::BaseProperty*, unsigned long> m_NamePropertyModifiedObserverTags;
00214 std::map<mitk::BaseProperty*, unsigned long> m_VisiblePropertyModifiedObserverTags;
00218 bool m_BlockEvents;
00222 bool m_SortDescending;
00223
00224 };
00225
00226 #endif
00227