1#include <QLoggingCategory>
2#include "ParameterFilter.h"
3#include "DatabaseFilter.h"
5static Q_LOGGING_CATEGORY(log,
"Client.Parameter.Filter")
12CParameterFilter::~CParameterFilter()
16 m_pDatabase =
nullptr;
22 if(!pDB)
return false;
23 Q_ASSERT(!m_pDatabase);
26 QString szConnectName =
"connect_filter_" + m_szSuffix;
29 qCritical(log) <<
"Failed to open database:" << szConnectName;
36bool CParameterFilter::InitDatabase(
CDatabase *pDB)
38 if(!pDB)
return false;
39 Q_ASSERT(!m_pDatabase);
42 bool bRet = m_pDatabase->
SetDatabase(pDB->GetDatabase(), pDB->GetParameter());
43 if(!bRet)
return false;
48bool CParameterFilter::contains(
const QString &szKey)
51 return m_pDatabase->contains(szKey);
53 if(m_Key.contains(szKey))
58int CParameterFilter::AddKey(
const QString& szKey)
61 return m_pDatabase->AddKey(szKey);
70int CParameterFilter::RemoveKey(
const QString& szKey)
73 return m_pDatabase->RemoveKey(szKey);
79int CParameterFilter::Clear()
82 return m_pDatabase->Clear();
88bool CParameterFilter::isEmpty()
91 return m_pDatabase->isEmpty();
93 return m_Key.isEmpty();
96int CParameterFilter::OnProcess(std::function<
int (
const QString &)> cb,
bool bErrExit)
100 return m_pDatabase->OnProcess(cb, bErrExit);
102 foreach(
auto k, m_Key) {
110int CParameterFilter::OnLoad(QSettings &set)
112 if(m_pDatabase)
return 0;
114 QStringList s = set.value(
"Key").toStringList();
121int CParameterFilter::OnSave(QSettings &set)
123 if(m_pDatabase)
return 0;
126 foreach (
auto k, m_Key) {
129 set.setValue(
"Key", s);
The CDatabaseFilter class
bool SetDatabase(const CDatabase *db)
Share an existing database
bool OpenDatabase(const CParameterDatabase *pPara=nullptr, const QString &szConnectName=QString())
Open a new database
int SetModified(bool bModified=true)
在设置参数时,如果有修改,则调用。