玉兔远程控制 0.1.0-bate8
载入中...
搜索中...
未找到
DatabaseTree.h
1// Author: Kang Lin <kl222@126.com>
2
3#pragma once
4#include <QIcon>
5#include "Database.h"
6
7class PLUGIN_EXPORT TreeItem {
8public:
9 enum TYPE {
10 Node,
11 Leaf
12 };
13
14 TreeItem(TYPE type);
15 TreeItem(const TreeItem& item);
16 TreeItem& operator = (const TreeItem& item);
17
18 [[nodiscard]] bool IsNode() const;
19 [[nodiscard]] bool IsLeaf() const;
20
21 [[nodiscard]] TYPE GetType() const;
22 void SetType(TYPE type);
23 [[nodiscard]] int GetId() const;
24 void SetId(int newId);
25 [[nodiscard]] QString GetName() const;
26 void SetName(const QString &newName);
27 [[nodiscard]] QDateTime GetCreateTime() const;
28 void SetCreateTime(const QDateTime &newCreateTime);
29 [[nodiscard]] QDateTime GetModifyTime() const;
30 void SetModifyTime(const QDateTime &newModifyTime);
31 [[nodiscard]] QDateTime GetLastVisitTime() const;
32 void SetLastVisitTime(const QDateTime &newLastVisitTime);
33 [[nodiscard]] int GetParentId() const;
34 void SetParentId(int newParentId);
35 [[nodiscard]] int GetSortOrder() const;
36 void SetSortOrder(int newSortOrder);
37
38 [[nodiscard]] int GetKey() const;
39 void SetKey(int newNKey);
40
41private:
42 struct _DATA{
43 TYPE m_Type;
44 int m_id;
45 QString m_szName;
46 int m_nKey;
47 QDateTime m_CreateTime;
48 QDateTime m_ModifyTime;
49 QDateTime m_LastVisitTime;
50 int m_ParentId;
51 int m_SortOrder;
52 };
53 _DATA m_Data;
54};
55
60class PLUGIN_EXPORT CDatabaseNode : public CDatabase
61{
62 Q_OBJECT
63
64public:
65 explicit CDatabaseNode(const QString& szPrefix = QString(),
66 QObject *parent = nullptr);
67
68 // 文件夹操作
69 int AddNode(const QString &name, int parentId = 0);
70 bool RenameNode(int id, const QString &newName);
71 bool DeleteNode(
72 int id,
73 std::function<bool(int parentId)> cbDeleteLeaf = nullptr,
74 bool checkReturn = true);
75 bool MoveNode(int id, int newParentId);
76 // 文件夹查询
77 [[nodiscard]] TreeItem GetNode(int id);
78 [[nodiscard]] QList<TreeItem> GetAllNodes();
79 [[nodiscard]] QList<TreeItem> GetSubNodes(int parentId);
80 [[nodiscard]] bool InSubNode(int parentId, int id);
81
88 [[nodiscard]] int GetCount(int parentId = 0);
89
90 [[nodiscard]] virtual bool ExportToJson(QJsonObject& obj) override;
91 [[nodiscard]] virtual bool ImportFromJson(const QJsonObject& obj) override;
92
93Q_SIGNALS:
94 void sigAddNode(int id, int parentId);
95
96protected:
97 [[nodiscard]] virtual bool OnDeleteLeafs(int id);
98 [[nodiscard]] virtual bool OnInitializeSqliteDatabase() override;
99 [[nodiscard]] virtual bool OnInitializeMySqlDatabase() override;
100
101private:
102 QString m_szTableName;
103};
104
109class PLUGIN_EXPORT CDatabaseTree : public CDatabase
110{
111 Q_OBJECT
112
113public:
114 explicit CDatabaseTree(const QString& szPrefix = QString(),
115 QObject* parent = nullptr);
116
117 // ====== Leaf operate ======
124 virtual int Add(const TreeItem& item);
125 virtual bool Update(const TreeItem& item);
126 virtual bool Delete(int id, bool delKey = false);
127 virtual bool Delete(QList<int> items, bool delKey = false);
128 virtual bool DeleteChild(int parentId, bool delKey = false);
129 virtual bool Move(int id, int newParent);
130
131 [[nodiscard]] TreeItem GetLeaf(int id);
138 [[nodiscard]] QList<TreeItem> GetLeaves(int nodeId);
143 [[nodiscard]] QList<TreeItem> GetLeavesByKey(int key);
144 [[nodiscard]] QList<TreeItem> GetLeavesByKey(QList<int> key);
145 [[nodiscard]] int GetLeafCount(int parentId = 0);
146
147 // ====== Node operate ======
148 virtual int AddNode(const QString &name, int parentId = 0);
149 virtual bool RenameNode(int id, const QString &newName);
150 virtual bool DeleteNode(int id, bool delKey = false);
151 virtual bool MoveNode(int id, int newParentId);
152 [[nodiscard]] TreeItem GetNode(int id);
153 [[nodiscard]] QList<TreeItem> GetAllNodes();
154 [[nodiscard]] QList<TreeItem> GetSubNodes(int parentId);
155 [[nodiscard]] int GetNodeCount(int nParentId = 0);
156
166 [[nodiscard]] int GetCount(int parentId = 0);
167
168 [[nodiscard]] virtual bool ExportToJson(QJsonObject& obj) override;
169 [[nodiscard]] virtual bool ImportFromJson(const QJsonObject& obj) override;
170
171Q_SIGNALS:
172 void sigAddNode(int id, int parentId);
173 void sigAdd(int id, int parentId);
174
175protected:
183 [[nodiscard]] virtual bool OnDeleteKey(int key);
184 [[nodiscard]] virtual bool OnInitializeDatabase() override;
185 [[nodiscard]] virtual bool OnInitializeSqliteDatabase() override;
186 [[nodiscard]] virtual bool OnInitializeMySqlDatabase() override;
187
188private:
189 QString m_szTableName;
190 CDatabaseNode m_FolderDB;
191};
The CDatabaseNode class
The CDatabaseTree class
提供打开数据库和初始化数据库等接口
Definition Database.h:21