You.i Engine
YiAbstractDataModel.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_ABSTRACT_DATA_MODEL_H_
3 #define _YI_ABSTRACT_DATA_MODEL_H_
4 
6 #include "framework/YiAny.h"
7 #include "framework/YiPredef.h"
8 #include "signal/YiSignal.h"
9 
15 class CYIDataModelItem;
16 class CYIAbstractDataModelPriv;
17 
28 {
29 public:
30  friend class CYIDataModelItem;
31 
35  CYIAbstractDataModel(int32_t nRows, int32_t nColumns = 1);
36  virtual ~CYIAbstractDataModel();
37 
43  virtual bool IsMoreDataAvailable(const CYIDataModelIndex &parent) const;
44 
48  virtual bool FetchMoreData(const CYIDataModelIndex &parent);
49 
55  void Clear();
56 
60  int32_t GetRowCount(const CYIDataModelIndex &parent = CYIDataModelIndex()) const;
61 
65  int32_t GetColumnCount(const CYIDataModelIndex &parent = CYIDataModelIndex()) const;
66 
72  CYIDataModelIndex GetParent(const CYIDataModelIndex &child) const;
73 
81  virtual CYIDataModelIndex GetIndex(int32_t nRow, int32_t nColumn, const CYIDataModelIndex &parent = CYIDataModelIndex()) const;
82 
86  bool HasChildren(const CYIDataModelIndex &parent) const;
87 
91  bool HasIndex(int32_t nRow, int32_t nColumn, const CYIDataModelIndex &parent = CYIDataModelIndex()) const;
92 
100  virtual bool InsertColumn(int32_t nColumn, const CYIDataModelIndex &parent = CYIDataModelIndex());
101 
109  virtual bool InsertColumns(int32_t nColumn, int32_t nCount, const CYIDataModelIndex &parent = CYIDataModelIndex());
110 
118  virtual bool InsertRow(int32_t nRow, const CYIDataModelIndex &parent = CYIDataModelIndex());
119 
127  virtual bool InsertRows(int32_t nRow, int32_t nCount, const CYIDataModelIndex &parent = CYIDataModelIndex());
128 
136  virtual bool RemoveColumn(int32_t nColumn, const CYIDataModelIndex &parent = CYIDataModelIndex());
137 
145  virtual bool RemoveRow(int32_t nRow, const CYIDataModelIndex &parent = CYIDataModelIndex());
146 
154  bool SetItemData(const CYIDataModelIndex &index, const CYIAny &pData);
155 
159  const CYIAny &GetItemData(const CYIDataModelIndex &index) const;
160 
163  CYISignal<const CYIDataModelIndex & /*parent*/, int32_t /*nStart*/, int32_t /*nEnd*/> ColumnsInserted;
164  CYISignal<const CYIDataModelIndex & /*parent*/, int32_t /*nStart*/, int32_t /*nEnd*/> RowsInserted;
165  CYISignal<const CYIDataModelIndex & /*parent*/, int32_t /*nStart*/, int32_t /*nEnd*/> ColumnsRemoved;
166  CYISignal<const CYIDataModelIndex & /*parent*/, int32_t /*nStart*/, int32_t /*nEnd*/> RowsRemoved;
167 
168 protected:
169  void NotifyModelChanged(const CYIDataModelIndex &pIndex);
170  void NotifyColumnsInserted(const CYIDataModelIndex &index, int32_t nColumn, int32_t nCount);
171  void NotifyRowsInserted(const CYIDataModelIndex &index, int32_t nRow, int32_t nCount);
172  void NotifyColumnsRemoved(const CYIDataModelIndex &parent, int32_t nColumn, int32_t nCount);
173  void NotifyRowsRemoved(const CYIDataModelIndex &parent, int32_t nRow, int32_t nCount);
174 
175  CYIAbstractDataModelPriv *m_pPriv;
176 
177 private:
179 };
180 
183 #endif // _YI_ABSTRACT_DATA_MODEL_H_
184 
CYIDataModelIndex GetParent(const CYIDataModelIndex &child) const
#define YI_DISALLOW_COPY_AND_ASSIGN(TypeName)
Delete the copy constructor and assignment operator (and consequently the move constructor as well) ...
Definition: YiPredef.h:114
bool HasChildren(const CYIDataModelIndex &parent) const
CYISignal< const CYIDataModelIndex &, int32_t, int32_t > RowsInserted
Definition: YiAbstractDataModel.h:164
Represents arbitrary data as a hierarchy of tables.
Definition: YiAbstractDataModel.h:27
virtual bool IsMoreDataAvailable(const CYIDataModelIndex &parent) const
virtual bool InsertRow(int32_t nRow, const CYIDataModelIndex &parent=CYIDataModelIndex())
A class that holds instances of any type that is copy-constructible.
Definition: YiAny.h:77
CYIAbstractDataModelPriv * m_pPriv
Definition: YiAbstractDataModel.h:175
bool SetItemData(const CYIDataModelIndex &index, const CYIAny &pData)
CYIAbstractDataModel(int32_t nRows, int32_t nColumns=1)
CYISignal< const CYIDataModelIndex &, int32_t, int32_t > ColumnsRemoved
Definition: YiAbstractDataModel.h:165
virtual CYIDataModelIndex GetIndex(int32_t nRow, int32_t nColumn, const CYIDataModelIndex &parent=CYIDataModelIndex()) const
CYISignal< const CYIDataModelIndex &, int32_t, int32_t > ColumnsInserted
Definition: YiAbstractDataModel.h:163
void NotifyModelChanged(const CYIDataModelIndex &pIndex)
virtual bool InsertColumn(int32_t nColumn, const CYIDataModelIndex &parent=CYIDataModelIndex())
virtual bool FetchMoreData(const CYIDataModelIndex &parent)
CYISignal< const CYIDataModelIndex &, int32_t, int32_t > RowsRemoved
Definition: YiAbstractDataModel.h:166
int32_t GetColumnCount(const CYIDataModelIndex &parent=CYIDataModelIndex()) const
virtual bool RemoveRow(int32_t nRow, const CYIDataModelIndex &parent=CYIDataModelIndex())
virtual bool InsertColumns(int32_t nColumn, int32_t nCount, const CYIDataModelIndex &parent=CYIDataModelIndex())
int32_t GetRowCount(const CYIDataModelIndex &parent=CYIDataModelIndex()) const
void NotifyRowsRemoved(const CYIDataModelIndex &parent, int32_t nRow, int32_t nCount)
void NotifyColumnsRemoved(const CYIDataModelIndex &parent, int32_t nColumn, int32_t nCount)
This class is used to locate data in a CYIAbstractDataModel.
Definition: YiDataModelIndex.h:28
virtual bool RemoveColumn(int32_t nColumn, const CYIDataModelIndex &parent=CYIDataModelIndex())
virtual ~CYIAbstractDataModel()
friend class CYIDataModelItem
Definition: YiAbstractDataModel.h:30
virtual bool InsertRows(int32_t nRow, int32_t nCount, const CYIDataModelIndex &parent=CYIDataModelIndex())
bool HasIndex(int32_t nRow, int32_t nColumn, const CYIDataModelIndex &parent=CYIDataModelIndex()) const
const CYIAny & GetItemData(const CYIDataModelIndex &index) const
void NotifyRowsInserted(const CYIDataModelIndex &index, int32_t nRow, int32_t nCount)
Signals and slots are a thread-safe and flexible communication framework that will allow various obje...
Definition: YiSignal.h:164
void NotifyColumnsInserted(const CYIDataModelIndex &index, int32_t nColumn, int32_t nCount)
CYISignal ModelCleared
Definition: YiAbstractDataModel.h:161
CYISignal< const CYIDataModelIndex & > ModelChanged
Definition: YiAbstractDataModel.h:162