6#include <QtCore/QAbstractListModel>
7#include <QtCore/QJsonDocument>
8#include <QtCore/QJsonObject>
9#include <QtCore/QJsonArray>
10#include <QtCore/QtDebug>
11#include <QtCore/QVariantMap>
14#include <iser/ISerializable.h>
15#include <istd/TSmartPtr.h>
28 Q_PROPERTY(QString state READ State WRITE SetState NOTIFY stateChanged)
31 typedef QAbstractListModel BaseClass2;
33 Q_INVOKABLE
inline bool beginChanges(){
return BeginChanges(); }
34 Q_INVOKABLE
inline bool endChanges(){
return EndChanges(); }
35 Q_INVOKABLE
inline bool copy(
const CTreeItemModel*
object){
return Copy(
object); }
36 Q_INVOKABLE
inline void setParent(QObject* parent){ SetParent(parent); }
38 Q_INVOKABLE
inline bool isEqualWithModel(
CTreeItemModel* modelPtr){
return IsEqualWithModel(modelPtr); }
39 Q_INVOKABLE
inline void insertNewItemWithParameters(
int index,
const QVariantMap& map){ InsertNewItemWithParameters(index, map); }
40 Q_INVOKABLE
inline int insertNewItem(){
return InsertNewItem(); }
41 Q_INVOKABLE
inline int insertNewItem(
int index){
return InsertNewItem(index); }
42 Q_INVOKABLE
inline int removeItem(
int index){
return RemoveItem(index); }
43 Q_INVOKABLE
inline bool swapItems(
int index1,
int index2){
return SwapItems(index1, index2); }
44 Q_INVOKABLE
inline imtbase::CTreeItemModel* addTreeModel(
const QByteArray& key,
int index = 0){
return AddTreeModel(key, index); }
45 Q_INVOKABLE
inline bool setExternTreeModel(
const QByteArray& key,
CTreeItemModel* externTreeModel,
int index = 0){
return SetExternTreeModel(key, externTreeModel, index); }
46 Q_INVOKABLE
inline bool copyItemDataFromModel(
int index,
const CTreeItemModel* externTreeModel,
int externIndex = 0){
return CopyItemDataFromModel(index, externTreeModel, externIndex); }
47 Q_INVOKABLE
inline bool copyItemDataFromModel(
int index,
CTreeItemModel* externTreeModel,
int externIndex = 0){
return CopyItemDataFromModel(index, externTreeModel, externIndex); }
48 Q_INVOKABLE
inline bool copyItemDataToModel(
int index,
CTreeItemModel* externTreeModel,
int externIndex = 0)
const{
return CopyItemDataToModel(index, externTreeModel, externIndex); }
49 Q_INVOKABLE
inline bool setData(
const QByteArray& key,
const QVariant& value,
int index = 0){
return SetData(key, value, index); }
50 Q_INVOKABLE
inline bool removeData(
const QByteArray& key,
int index = 0){
return RemoveData(key, index); }
51 Q_INVOKABLE
inline QVariant getData(
const QByteArray& key,
int index = 0)
const{
return GetData(key, index); }
53 Q_INVOKABLE
inline bool isTreeModel(
const QByteArray& key,
int index = 0)
const{
return IsTreeModel(key, index); }
54 Q_INVOKABLE
inline bool containsKey(
const QByteArray& key,
int index = 0)
const{
return ContainsKey(key, index); }
55 Q_INVOKABLE
inline bool isValidData(
const QByteArray& key,
int index = 0)
const{
return IsValidData(key, index); }
56 Q_INVOKABLE
inline imtbase::CTreeItemModel* getTreeItemModel(
const QByteArray& key,
int index = 0)
const{
return GetTreeItemModel(key, index); }
57 Q_INVOKABLE
inline imtbase::CTreeItemModel* getModelFromItem(
int itemIndex = 0)
const{
return GetModelFromItem(itemIndex); }
58 Q_INVOKABLE
inline int getItemsCount()
const{
return GetItemsCount(); }
59 Q_INVOKABLE
inline void getKeys(QList<QByteArray>& keys,
int index = 0)
const{
return GetKeys(keys, index); }
60 Q_INVOKABLE
inline QList<QString> getKeys(
int index = 0)
const{
return GetKeys(index); }
61 Q_INVOKABLE
inline void clear(){ Clear(); }
62 Q_INVOKABLE
inline bool isArray(){
return IsArray(); }
63 Q_INVOKABLE
inline void setIsArray(
const bool& isArray){ SetIsArray(isArray); }
64 Q_INVOKABLE
inline bool createFromJson(
const QByteArray& jsonContent){
return CreateFromJson(jsonContent); }
65 Q_INVOKABLE
inline void setQueryParam(
const QByteArray& key,
const QByteArray& value){ SetQueryParam(key, value); }
66 Q_INVOKABLE
inline QByteArray getQueryParam(
const QByteArray& key){
return GetQueryParam(key); }
67 Q_INVOKABLE
inline QByteArray takeQueryParam(
const QByteArray& key){
return TakeQueryParam(key); }
68 Q_INVOKABLE
inline QMap<QByteArray, QByteArray>& getQueryParams(){
return GetQueryParams(); }
69 Q_INVOKABLE
inline void clearQueryParams(
const QByteArray& key){ ClearQueryParams(key); }
70 Q_INVOKABLE
inline void setUpdateEnabled(
bool updateEnabled){ SetUpdateEnabled(updateEnabled); }
71 Q_INVOKABLE
inline void refresh(){ Refresh(); }
72 Q_INVOKABLE
inline QString toJson(){
return ToJson(); }
77 const QString& State()
const;
78 void SetState(
const QString& newState);
80 virtual bool SerializeModel(iser::IArchive& archive);
85 void SetParent(QObject* parent);
90 void InsertNewItemWithParameters(
int index,
const QVariantMap& map);
92 int InsertNewItem(
int index);
93 int RemoveItem(
int index);
94 bool SwapItems(
int index1,
int index2);
96 bool SetExternTreeModel(
const QByteArray& key,
CTreeItemModel* externTreeModel,
int index = 0);
97 bool CopyItemDataFromModel(
int index,
const CTreeItemModel* externTreeModel,
int externIndex = 0);
98 bool CopyItemDataFromModel(
int index,
CTreeItemModel* externTreeModel,
int externIndex = 0);
99 bool CopyItemDataToModel(
int index,
CTreeItemModel* externTreeModel,
int externIndex = 0)
const;
100 bool SetData(
const QByteArray&key,
const QVariant& value,
int index = 0);
101 bool RemoveData(
const QByteArray& key,
int index = 0);
102 QVariant GetData(
const QByteArray& key,
int index = 0)
const;
104 bool IsTreeModel(
const QByteArray& key,
int index = 0)
const;
105 bool ContainsKey(
const QByteArray& key,
int index = 0)
const;
106 bool IsValidData(
const QByteArray& key,
int index = 0)
const;
109 int GetItemsCount()
const;
110 void GetKeys(QList<QByteArray>& keys,
int index = 0)
const;
111 QList<QString> GetKeys(
int index = 0)
const;
114 void SetIsArray(
const bool& isArray);
115 bool CreateFromJson(
const QByteArray& jsonContent);
116 void SetQueryParam(
const QByteArray& key,
const QByteArray& value);
117 QByteArray GetQueryParam(
const QByteArray& key);
118 QByteArray TakeQueryParam(
const QByteArray& key);
119 QMap<QByteArray, QByteArray>& GetQueryParams();
120 void ClearQueryParams(
const QByteArray& key);
121 void SetUpdateEnabled(
bool updateEnabled);
126 virtual int rowCount(
const QModelIndex& parent = QModelIndex())
const override;
127 virtual QVariant data(
const QModelIndex& index,
int role = Qt::DisplayRole)
const override;
128 virtual bool setData(
const QModelIndex& index,
const QVariant& value,
int role = Qt::EditRole)
override;
129 virtual QHash<int, QByteArray> roleNames()
const override;
132 void OnModelChanged();
135 void stateChanged(
const QString& state);
140 bool SerializeRecursive(iser::IArchive& archive,
const QByteArray& tagName);
149 void SetValue(
const QByteArray& key,
const QVariant& value){
150 if (!m_map.contains(key)){
153 m_map.insert(key,value);
155 void RemoveValue(
const QByteArray& key){
156 m_map.remove(key); m_keys.removeAll(key);
158 QVariant Value(
const QByteArray& key){
160 if(m_map.contains(key))
161 res = m_map.value(key);
164 void GetKeys(QList<QByteArray>& keys){ keys = m_keys; }
165 bool Contains(
const QByteArray& key){
return m_map.contains(key); }
166 bool ContainsKey(
const QByteArray& key){
return m_keys.contains(key); }
168 QMap<QByteArray,QVariant> m_map;
169 QList<QByteArray> m_keys;
172 QList<Item*> m_items;
173 QHash<int, QByteArray> m_roleNames;
174 QMap<QByteArray,QByteArray> m_queryParams;
178 bool m_isUpdateEnabled;
180 int m_countTransaction;
184 virtual int GetKeyRole(
const QByteArray& key)
const;
185 virtual bool ParseRecursive(
const QJsonObject& jsonObject,
int index = 0);
188 inline int GetVariantTypeId(
const QVariant& value);
189 bool SerializeVariantValue(iser::IArchive& archive,
const QVariant& value);
193typedef istd::TSmartPtr<imtbase::CTreeItemModel> CHierarchicalItemModelPtr;