Skip to content

Commit 7ceaedd

Browse files
committed
Plugin: add CDatabaseFilter::OnProcess
1 parent 6c83d3b commit 7ceaedd

41 files changed

Lines changed: 1223 additions & 1102 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Src/Database/Database.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ bool CDatabase::OpenDatabase(const CParameterDatabase *pPara,
9090
qDebug(log) << "Multiple result sets:" << driver->hasFeature(QSqlDriver::MultipleResultSets);
9191
qDebug(log) << "Cancel query:" << driver->hasFeature(QSqlDriver::CancelQuery);
9292
}
93-
93+
9494
return bRet;
9595
}
9696

@@ -132,7 +132,7 @@ bool CDatabase::OpenSQLiteDatabase(const CParameterDatabase *pPara,
132132
qInfo(log) << "Open sqlite database connect:"
133133
<< m_database.connectionName()
134134
<< "database name:" << m_database.databaseName();
135-
135+
136136
return OnInitializeDatabase();
137137
}
138138

@@ -179,7 +179,7 @@ bool CDatabase::OpenMySqlDatabase(const CParameterDatabase *pPara,
179179
return false;
180180
}
181181

182-
success = query.exec("use remote_control");
182+
success = query.exec("use " + szDbName);
183183
if (!success) {
184184
qCritical(log) << "Failed to use" << szDbName << "database:"
185185
<< query.lastError().text()
@@ -231,7 +231,7 @@ bool CDatabase::OpenODBCDatabase(const CParameterDatabase *pPara,
231231
return false;
232232
}
233233

234-
success = query.exec("use remote_control");
234+
success = query.exec("use " + szDbName);
235235
if (!success) {
236236
qCritical(log) << "Failed to use" << szDbName << "database:"
237237
<< query.lastError().text()

Src/Database/DatabaseFilter.cpp

Lines changed: 42 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,26 @@ bool CDatabaseFilter::isEmpty()
105105
return !query.next();
106106
}
107107

108+
int CDatabaseFilter::OnProcess(std::function<int (const QString &)> cb, bool bErrExit)
109+
{
110+
QSqlQuery query(GetDatabase());
111+
query.prepare("SELECT `key` FROM " + m_szTableName);
112+
bool bRet = query.exec();
113+
if(!bRet) {
114+
qCritical(log) << "Failed to isEmpty:"
115+
<< query.lastError().text()
116+
<< "Sql:" << query.executedQuery();
117+
return -1;
118+
}
119+
while(query.next()) {
120+
QString szKey = query.value(0).toString();
121+
int nRet = cb(szKey);
122+
if(bErrExit && nRet)
123+
return nRet;
124+
}
125+
return 0;
126+
}
127+
108128
bool CDatabaseFilter::ExportToJson(QJsonObject &obj)
109129
{
110130
return true;
@@ -117,32 +137,44 @@ bool CDatabaseFilter::ImportFromJson(const QJsonObject &obj)
117137

118138
bool CDatabaseFilter::OnInitializeSqliteDatabase()
119139
{
120-
return true;
121-
}
140+
QSqlQuery query(GetDatabase());
122141

123-
bool CDatabaseFilter::OnInitializeMySqlDatabase()
124-
{
142+
query.prepare(
143+
"CREATE TABLE IF NOT EXISTS "
144+
+ m_szTableName +
145+
" ("
146+
" `key` TEXT PRIMARY KEY NOT NULL"
147+
" )"
148+
);
149+
bool success = query.exec();
150+
151+
if (!success) {
152+
qCritical(log) << "Failed to create sqlite table:"
153+
<< m_szTableName << query.lastError().text()
154+
<< "Sql:" << query.executedQuery();
155+
return false;
156+
}
125157
return true;
126158
}
127159

128-
bool CDatabaseFilter::OnInitializeDatabase()
160+
bool CDatabaseFilter::OnInitializeMySqlDatabase()
129161
{
130162
QSqlQuery query(GetDatabase());
131163

132-
bool success = query.exec(
164+
query.prepare(
133165
"CREATE TABLE IF NOT EXISTS "
134166
+ m_szTableName +
135167
" ("
136-
" `key` TEXT PRIMARY KEY NOT NULL"
168+
" `key` TEXT NOT NULL,"
169+
" UNIQUE KEY `uk_key` (`key`(255))"
137170
" )"
138171
);
139-
172+
bool success = query.exec();
140173
if (!success) {
141-
qCritical(log) << "Failed to create folders sqlite table:"
174+
qCritical(log) << "Failed to create mysql table:"
142175
<< m_szTableName << query.lastError().text()
143176
<< "Sql:" << query.executedQuery();
144177
return false;
145178
}
146-
147179
return true;
148180
}

Src/Database/DatabaseFilter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ class PLUGIN_EXPORT CDatabaseFilter : public CDatabase
1414
int RemoveKey(const QString& szKey);
1515
int Clear();
1616
[[nodiscard]] virtual bool isEmpty();
17+
int OnProcess(std::function<int(const QString& key)> cb, bool bErrExit = false);
1718

18-
[[nodiscard]] virtual bool OnInitializeDatabase() override;
1919
[[nodiscard]] virtual bool ExportToJson(QJsonObject &obj) override;
2020
[[nodiscard]] virtual bool ImportFromJson(const QJsonObject &obj) override;
2121

Src/FrmManagePlugins.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,15 +142,19 @@ int CFrmManagePlugins::FindPlugins(QDir dir, QStringList filters, bool bAdd)
142142
int CFrmManagePlugins::AddItem(CPlugin* plugin, const QString& szPath)
143143
{
144144
QList<QStandardItem*> lstItems;
145-
auto pWhitelist = new QStandardItem();
145+
auto pWhitelist = new QStandardItem(QString(tr("Whitelist").toStdString().size(), ' '));
146146
pWhitelist->setCheckable(true);
147-
if(m_pPara->m_WhiteList.contains(szPath))
147+
if(m_pPara->m_WhiteList.contains(szPath)) {
148148
pWhitelist->setCheckState(Qt::Checked);
149+
//pWhitelist->setText(QString(tr("Whitelist").toStdString().size(), ' '));
150+
}
149151
lstItems << pWhitelist;
150-
auto pBlacklist = new QStandardItem();
152+
auto pBlacklist = new QStandardItem(QString(tr("Blacklist").toStdString().size(), ' '));
151153
pBlacklist->setCheckable(true);
152-
if(m_pPara->m_BlackList.contains(szPath))
154+
if(m_pPara->m_BlackList.contains(szPath)) {
153155
pBlacklist->setCheckState(Qt::Checked);
156+
//pBlacklist->setText(QString(tr("Blacklist").toStdString().size(), ' '));
157+
}
154158
lstItems << pBlacklist;
155159
auto pName = new QStandardItem(plugin->Icon(), plugin->DisplayName());
156160
lstItems << pName;

Src/ParameterCompone/ParameterFilter.cpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
#include <QLoggingCategory>
12
#include "ParameterFilter.h"
23
#include "DatabaseFilter.h"
34

5+
static Q_LOGGING_CATEGORY(log, "Client.Parameter.Filter")
46
CParameterFilter::CParameterFilter(QObject *parent, const QString &szPrefix)
57
: CParameter{parent, szPrefix}
68
, m_pDatabase(nullptr)
@@ -18,11 +20,15 @@ CParameterFilter::~CParameterFilter()
1820

1921
bool CParameterFilter::InitDatabase(CParameterDatabase *pDB)
2022
{
21-
if(!m_pDatabase) return false;
23+
if(!pDB) return false;
2224
m_pDatabase = new CDatabaseFilter(m_szSuffix);
2325
if(m_pDatabase) {
24-
bool ok = m_pDatabase->OpenDatabase(pDB, "connect_filter_" + m_szSuffix);
25-
if(!ok) return false;
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+
}
2632
}
2733
return true;
2834
}
@@ -78,6 +84,9 @@ bool CParameterFilter::isEmpty()
7884
int CParameterFilter::OnProcess(std::function<int (const QString &)> cb, bool bErrExit)
7985
{
8086
if(!cb) return -1;
87+
if(m_pDatabase) {
88+
return m_pDatabase->OnProcess(cb, bErrExit);
89+
}
8190
foreach(auto k, m_Key) {
8291
int nRet = cb(k);
8392
if(bErrExit && nRet)
@@ -88,6 +97,8 @@ int CParameterFilter::OnProcess(std::function<int (const QString &)> cb, bool bE
8897

8998
int CParameterFilter::OnLoad(QSettings &set)
9099
{
100+
if(m_pDatabase) return 0;
101+
91102
QStringList s = set.value("Key").toStringList();
92103
foreach(auto k, s) {
93104
AddKey(k);
@@ -97,6 +108,8 @@ int CParameterFilter::OnLoad(QSettings &set)
97108

98109
int CParameterFilter::OnSave(QSettings &set)
99110
{
111+
if(m_pDatabase) return 0;
112+
100113
QStringList s;
101114
foreach (auto k, m_Key) {
102115
s << k;

Src/Resource/Translations/Plugin_ar.ts

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -268,42 +268,44 @@
268268
<translation type="unfinished"></translation>
269269
</message>
270270
<message>
271-
<location filename="../../FrmManagePlugins.cpp" line="243"/>
271+
<location filename="../../FrmManagePlugins.cpp" line="145"/>
272+
<location filename="../../FrmManagePlugins.cpp" line="247"/>
272273
<source>Whitelist</source>
273274
<translation type="unfinished"></translation>
274275
</message>
275276
<message>
276-
<location filename="../../FrmManagePlugins.cpp" line="247"/>
277+
<location filename="../../FrmManagePlugins.cpp" line="152"/>
278+
<location filename="../../FrmManagePlugins.cpp" line="251"/>
277279
<source>Blacklist</source>
278280
<translation type="unfinished"></translation>
279281
</message>
280282
<message>
281-
<location filename="../../FrmManagePlugins.cpp" line="251"/>
283+
<location filename="../../FrmManagePlugins.cpp" line="255"/>
282284
<source>Name</source>
283285
<translation type="unfinished"></translation>
284286
</message>
285287
<message>
286-
<location filename="../../FrmManagePlugins.cpp" line="252"/>
288+
<location filename="../../FrmManagePlugins.cpp" line="256"/>
287289
<source>Type</source>
288290
<translation type="unfinished"></translation>
289291
</message>
290292
<message>
291-
<location filename="../../FrmManagePlugins.cpp" line="253"/>
293+
<location filename="../../FrmManagePlugins.cpp" line="257"/>
292294
<source>File</source>
293295
<translation type="unfinished"></translation>
294296
</message>
295297
<message>
296-
<location filename="../../FrmManagePlugins.cpp" line="181"/>
298+
<location filename="../../FrmManagePlugins.cpp" line="185"/>
297299
<source>Plugin path</source>
298300
<translation type="unfinished"></translation>
299301
</message>
300302
<message>
301-
<location filename="../../FrmManagePlugins.cpp" line="219"/>
303+
<location filename="../../FrmManagePlugins.cpp" line="223"/>
302304
<source>Add</source>
303305
<translation type="unfinished"></translation>
304306
</message>
305307
<message>
306-
<location filename="../../FrmManagePlugins.cpp" line="220"/>
308+
<location filename="../../FrmManagePlugins.cpp" line="224"/>
307309
<source>Remove</source>
308310
<translation type="unfinished"></translation>
309311
</message>
@@ -384,23 +386,23 @@ Some features are limited.
384386
<translation type="unfinished"></translation>
385387
</message>
386388
<message>
387-
<location filename="../../Manager.cpp" line="232"/>
389+
<location filename="../../Manager.cpp" line="234"/>
388390
<source>Plugins</source>
389391
<translation type="unfinished"></translation>
390392
</message>
391393
<message>
392-
<location filename="../../Manager.cpp" line="330"/>
393-
<location filename="../../Manager.cpp" line="644"/>
394+
<location filename="../../Manager.cpp" line="332"/>
395+
<location filename="../../Manager.cpp" line="646"/>
394396
<source>Version:</source>
395397
<translation type="unfinished"></translation>
396398
</message>
397399
<message>
398-
<location filename="../../Manager.cpp" line="566"/>
400+
<location filename="../../Manager.cpp" line="568"/>
399401
<source>Terminal</source>
400402
<translation type="unfinished"></translation>
401403
</message>
402404
<message>
403-
<location filename="../../Manager.cpp" line="649"/>
405+
<location filename="../../Manager.cpp" line="651"/>
404406
<source>Dependency libraries</source>
405407
<translation type="unfinished"></translation>
406408
</message>
@@ -612,86 +614,86 @@ Some features are limited.
612614
<context>
613615
<name>CParameterDatabase</name>
614616
<message>
615-
<location filename="../../ParameterCompone/ParameterDatabase.cpp" line="82"/>
617+
<location filename="../../Database/ParameterDatabase.cpp" line="82"/>
616618
<source>Database drivers</source>
617619
<translation type="unfinished"></translation>
618620
</message>
619621
<message>
620-
<location filename="../../ParameterCompone/ParameterDatabase.cpp" line="86"/>
622+
<location filename="../../Database/ParameterDatabase.cpp" line="86"/>
621623
<source>Current used</source>
622624
<translation type="unfinished"></translation>
623625
</message>
624626
<message>
625-
<location filename="../../ParameterCompone/ParameterDatabase.cpp" line="88"/>
627+
<location filename="../../Database/ParameterDatabase.cpp" line="88"/>
626628
<source>Supported</source>
627629
<translation type="unfinished"></translation>
628630
</message>
629631
</context>
630632
<context>
631633
<name>CParameterDatabaseUI</name>
632634
<message>
633-
<location filename="../../ParameterCompone/ParameterDatabaseUI.ui" line="14"/>
635+
<location filename="../../Database/ParameterDatabaseUI.ui" line="14"/>
634636
<source>Form</source>
635637
<translation type="unfinished"></translation>
636638
</message>
637639
<message>
638-
<location filename="../../ParameterCompone/ParameterDatabaseUI.ui" line="38"/>
640+
<location filename="../../Database/ParameterDatabaseUI.ui" line="38"/>
639641
<source>Type:</source>
640642
<translation type="unfinished"></translation>
641643
</message>
642644
<message>
643-
<location filename="../../ParameterCompone/ParameterDatabaseUI.ui" line="59"/>
645+
<location filename="../../Database/ParameterDatabaseUI.ui" line="59"/>
644646
<source>Options:</source>
645647
<translation type="unfinished"></translation>
646648
</message>
647649
<message>
648-
<location filename="../../ParameterCompone/ParameterDatabaseUI.ui" line="73"/>
650+
<location filename="../../Database/ParameterDatabaseUI.ui" line="73"/>
649651
<source>Database name:</source>
650652
<translation type="unfinished"></translation>
651653
</message>
652654
<message>
653-
<location filename="../../ParameterCompone/ParameterDatabaseUI.ui" line="83"/>
655+
<location filename="../../Database/ParameterDatabaseUI.ui" line="83"/>
654656
<source>Browser</source>
655657
<translation type="unfinished"></translation>
656658
</message>
657659
<message>
658-
<location filename="../../ParameterCompone/ParameterDatabaseUI.ui" line="92"/>
660+
<location filename="../../Database/ParameterDatabaseUI.ui" line="92"/>
659661
<source>The setting will take effect only after restarting the program.</source>
660662
<translation type="unfinished"></translation>
661663
</message>
662664
<message>
663-
<location filename="../../ParameterCompone/ParameterDatabaseUI.cpp" line="25"/>
665+
<location filename="../../Database/ParameterDatabaseUI.cpp" line="25"/>
664666
<source>Database</source>
665667
<translation type="unfinished"></translation>
666668
</message>
667669
<message>
668-
<location filename="../../ParameterCompone/ParameterDatabaseUI.cpp" line="77"/>
670+
<location filename="../../Database/ParameterDatabaseUI.cpp" line="77"/>
669671
<source>Set the database name</source>
670672
<translation type="unfinished"></translation>
671673
</message>
672674
<message>
673-
<location filename="../../ParameterCompone/ParameterDatabaseUI.cpp" line="82"/>
675+
<location filename="../../Database/ParameterDatabaseUI.cpp" line="82"/>
674676
<source>Set the sqlite database file. If is empty, then use default database file.</source>
675677
<translation type="unfinished"></translation>
676678
</message>
677679
<message>
678-
<location filename="../../ParameterCompone/ParameterDatabaseUI.cpp" line="86"/>
680+
<location filename="../../Database/ParameterDatabaseUI.cpp" line="86"/>
679681
<source>The name can either be a DSN, a DSN filename (in which case the file must have a .dsn extension), or a connection string.</source>
680682
<translation type="unfinished"></translation>
681683
</message>
682684
<message>
683-
<location filename="../../ParameterCompone/ParameterDatabaseUI.cpp" line="87"/>
684-
<location filename="../../ParameterCompone/ParameterDatabaseUI.cpp" line="94"/>
685+
<location filename="../../Database/ParameterDatabaseUI.cpp" line="87"/>
686+
<location filename="../../Database/ParameterDatabaseUI.cpp" line="94"/>
685687
<source>Configure database</source>
686688
<translation type="unfinished"></translation>
687689
</message>
688690
<message>
689-
<location filename="../../ParameterCompone/ParameterDatabaseUI.cpp" line="106"/>
691+
<location filename="../../Database/ParameterDatabaseUI.cpp" line="106"/>
690692
<source>Database file</source>
691693
<translation type="unfinished"></translation>
692694
</message>
693695
<message>
694-
<location filename="../../ParameterCompone/ParameterDatabaseUI.cpp" line="107"/>
696+
<location filename="../../Database/ParameterDatabaseUI.cpp" line="107"/>
695697
<source>Database file (*.db);; All files (*.*)</source>
696698
<translation type="unfinished"></translation>
697699
</message>

0 commit comments

Comments
 (0)