玉兔远程控制
0.1.0-bate11
Toggle main menu visibility
载入中...
搜索中...
未找到
Src
ParameterCompone
ParameterFilter.cpp
1
#include <QLoggingCategory>
2
#include "ParameterFilter.h"
3
#include "DatabaseFilter.h"
4
5
static
Q_LOGGING_CATEGORY(log,
"Client.Parameter.Filter"
)
6
CParameterFilter
::
CParameterFilter
(QObject *parent, const QString &szPrefix)
7
:
CParameter
{parent, szPrefix}
8
, m_pDatabase(
nullptr
)
9
, m_szSuffix(szPrefix)
10
{}
11
12
CParameterFilter::~CParameterFilter()
13
{
14
if
(m_pDatabase) {
15
delete
m_pDatabase;
16
m_pDatabase =
nullptr
;
17
}
18
}
19
20
bool
CParameterFilter::InitDatabase(
CParameterDatabase
*pDB)
21
{
22
if
(!pDB)
return
false
;
23
Q_ASSERT(!m_pDatabase);
24
m_pDatabase =
new
CDatabaseFilter(m_szSuffix);
25
if
(m_pDatabase) {
26
QString szConnectName =
"connect_filter_"
+ m_szSuffix;
27
bool
ok = m_pDatabase->OpenDatabase(pDB, szConnectName);
28
if
(!ok) {
29
qCritical(log) <<
"Failed to open database:"
<< szConnectName;
30
return
false
;
31
}
32
}
33
return
true
;
34
}
35
36
bool
CParameterFilter::InitDatabase(
CDatabase
*pDB)
37
{
38
if
(!pDB)
return
false
;
39
Q_ASSERT(!m_pDatabase);
40
m_pDatabase =
new
CDatabaseFilter(m_szSuffix);
41
if
(m_pDatabase) {
42
bool
bRet = m_pDatabase->SetDatabase(pDB->GetDatabase(), pDB->GetParameter());
43
if
(!bRet)
return
false
;
44
}
45
return
true
;
46
}
47
48
bool
CParameterFilter::contains(
const
QString &szKey)
49
{
50
if
(m_pDatabase)
51
return
m_pDatabase->contains(szKey);
52
53
if
(m_Key.contains(szKey))
54
return
true
;
55
return
false
;
56
}
57
58
int
CParameterFilter::AddKey(
const
QString& szKey)
59
{
60
if
(m_pDatabase)
61
return
m_pDatabase->AddKey(szKey);
62
63
if
(contains(szKey))
64
return
0;
65
m_Key.insert(szKey);
66
SetModified
(
true
);
67
return
0;
68
}
69
70
int
CParameterFilter::RemoveKey(
const
QString& szKey)
71
{
72
if
(m_pDatabase)
73
return
m_pDatabase->RemoveKey(szKey);
74
75
m_Key.remove(szKey);
76
return
0;
77
}
78
79
int
CParameterFilter::Clear()
80
{
81
if
(m_pDatabase)
82
return
m_pDatabase->Clear();
83
84
m_Key.clear();
85
return
0;
86
}
87
88
bool
CParameterFilter::isEmpty()
89
{
90
if
(m_pDatabase)
91
return
m_pDatabase->isEmpty();
92
93
return
m_Key.isEmpty();
94
}
95
96
int
CParameterFilter::OnProcess(std::function<
int
(
const
QString &)> cb,
bool
bErrExit)
97
{
98
if
(!cb)
return
-1;
99
if
(m_pDatabase) {
100
return
m_pDatabase->OnProcess(cb, bErrExit);
101
}
102
foreach
(
auto
k, m_Key) {
103
int
nRet = cb(k);
104
if
(bErrExit && nRet)
105
return
nRet;
106
}
107
return
0;
108
}
109
110
int
CParameterFilter::OnLoad(QSettings &set)
111
{
112
if
(m_pDatabase)
return
0;
113
114
QStringList s = set.value(
"Key"
).toStringList();
115
foreach
(
auto
k, s) {
116
AddKey(k);
117
}
118
return
0;
119
}
120
121
int
CParameterFilter::OnSave(QSettings &set)
122
{
123
if
(m_pDatabase)
return
0;
124
125
QStringList s;
126
foreach
(
auto
k, m_Key) {
127
s << k;
128
}
129
set.setValue(
"Key"
, s);
130
return
0;
131
}
CDatabase
提供打开数据库和初始化数据库等接口
定义
Database.h:21
CParameterDatabase
定义
ParameterDatabase.h:7
CParameterFilter
定义
ParameterFilter.h:12
CParameter
参数接口
定义
Parameter.h:220
CParameter::SetModified
int SetModified(bool bModified=true)
在设置参数时,如果有修改,则调用。
定义
Parameter.cpp:126
作者:康林 (kl222@126.com)
版权所有(c) 康林工作室 保留所有权力