玉兔远程控制
0.1.0-bate11
Toggle main menu visibility
载入中...
搜索中...
未找到
Src
Database
DatabaseTree.h
1
// Author: Kang Lin <kl222@126.com>
2
3
#pragma once
4
#include <QIcon>
5
#include "Database.h"
6
7
class
PLUGIN_EXPORT TreeItem {
8
public
:
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
41
private
:
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
60
class
PLUGIN_EXPORT CDatabaseNode :
public
CDatabase
61
{
62
Q_OBJECT
63
64
public
:
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
93
Q_SIGNALS:
94
void
sigAddNode(
int
id
,
int
parentId);
95
96
protected
:
97
[[nodiscard]]
virtual
bool
OnDeleteLeafs(
int
id
);
98
[[nodiscard]]
virtual
bool
OnInitializeSqliteDatabase()
override
;
99
[[nodiscard]]
virtual
bool
OnInitializeMySqlDatabase()
override
;
100
101
private
:
102
QString m_szTableName;
103
};
104
109
class
PLUGIN_EXPORT CDatabaseTree :
public
CDatabase
110
{
111
Q_OBJECT
112
113
public
:
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
171
Q_SIGNALS:
172
void
sigAddNode(
int
id
,
int
parentId);
173
void
sigAdd(
int
id
,
int
parentId);
174
175
protected
:
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
188
private
:
189
QString m_szTableName;
190
CDatabaseNode
m_FolderDB;
191
};
CDatabaseNode
The CDatabaseNode class
定义
DatabaseTree.h:61
CDatabaseNode::GetCount
int GetCount(int parentId=0)
Get count
定义
DatabaseTree.cpp:474
CDatabaseTree::Add
virtual int Add(const TreeItem &item)
Add item
定义
DatabaseTree.cpp:615
CDatabaseTree::GetLeavesByKey
QList< TreeItem > GetLeavesByKey(int key)
Get leaves
定义
DatabaseTree.cpp:887
CDatabaseTree::OnDeleteKey
virtual bool OnDeleteKey(int key)
从 key 相关的表中删除 key
定义
DatabaseTree.cpp:1031
CDatabaseTree::GetCount
int GetCount(int parentId=0)
得到指定id节点下的所有节点和叶子数。不递归。
定义
DatabaseTree.cpp:1026
CDatabaseTree::GetLeaves
QList< TreeItem > GetLeaves(int nodeId)
Get the leaves under nodeId
定义
DatabaseTree.cpp:852
CDatabaseTree::OnInitializeDatabase
virtual bool OnInitializeDatabase() override
Initialize database
定义
DatabaseTree.cpp:538
TreeItem
定义
DatabaseTree.h:7
TreeItem::_DATA
定义
DatabaseTree.h:42
作者:康林 (kl222@126.com)
版权所有(c) 康林工作室 保留所有权力