Skip to content

Commit 9c1c7db

Browse files
committed
Plugin::WebBrowser: modify database
1 parent 6a7a2fe commit 9c1c7db

15 files changed

Lines changed: 61 additions & 93 deletions

Plugins/WebBrowser/AddressCompleter.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,15 @@ CAddressCompleterItem::CAddressCompleterItem(const QString &title,
5252
setAttribute(Qt::WA_Hover);
5353
}
5454

55-
CAddressCompleter::CAddressCompleter(QWidget *parent)
55+
CAddressCompleter::CAddressCompleter(CHistoryDatabase *db, QWidget *parent)
5656
: QWidget(parent)
5757
, m_pLineEdit(nullptr)
5858
, m_pShowAnimation(nullptr)
5959
, m_pHideAnimation(nullptr)
6060
, m_currentSelectedIndex(-1)
6161
, m_maxVisibleItems(8)
6262
, m_isCompleterVisible(false)
63+
, m_pDatabase(db)
6364
{
6465
m_szEnter = tr("Enter '@' show commands") + "; "
6566
+ tr("Enter a website URL or search content ......");
@@ -304,8 +305,8 @@ void CAddressCompleter::performSearch()
304305

305306
// 搜索历史记录
306307
QList<HistoryItem> lstHistory;
307-
if(CHistoryDatabase::Instance())
308-
lstHistory = CHistoryDatabase::Instance()->searchHistory(keyword);
308+
if(m_pDatabase)
309+
lstHistory = m_pDatabase->searchHistory(keyword);
309310

310311
// 添加搜索结果
311312
int count = 0;

Plugins/WebBrowser/AddressCompleter.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
#include <QIcon>
1212
#include <QPropertyAnimation>
1313

14+
class CHistoryDatabase;
15+
1416
/*!
1517
* \~chinese 浏览器的地址栏自动完成功能
1618
* \~english Browser address bar autocomplete feature
@@ -39,7 +41,7 @@ class CAddressCompleter : public QWidget
3941
{
4042
Q_OBJECT
4143
public:
42-
explicit CAddressCompleter(QWidget *parent = nullptr);
44+
explicit CAddressCompleter(CHistoryDatabase* db, QWidget *parent = nullptr);
4345
~CAddressCompleter();
4446

4547
void attachToLineEdit(QLineEdit *lineEdit);
@@ -92,4 +94,6 @@ private Q_SLOTS:
9294
int m_currentSelectedIndex;
9395
int m_maxVisibleItems;
9496
bool m_isCompleterVisible;
97+
98+
CHistoryDatabase* m_pDatabase;
9599
};

Plugins/WebBrowser/Bookmark/BookmarkDatabase.cpp

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -14,36 +14,6 @@
1414
#include "BookmarkDatabase.h"
1515

1616
static Q_LOGGING_CATEGORY(log, "WebBrowser.Bookmark.DB")
17-
static CBookmarkDatabase* g_pDatabase = nullptr;
18-
CBookmarkDatabase* CBookmarkDatabase::Instance(CParameterDatabase *para)
19-
{
20-
if(!g_pDatabase) {
21-
g_pDatabase = new CBookmarkDatabase();
22-
if(g_pDatabase) {
23-
bool bRet = g_pDatabase->OpenDatabase(para, "bookmark_connection");
24-
if(!bRet) {
25-
delete g_pDatabase;
26-
g_pDatabase = nullptr;
27-
}
28-
}
29-
}
30-
return g_pDatabase;
31-
}
32-
33-
CBookmarkDatabase* CBookmarkDatabase::Instance()
34-
{
35-
if(!g_pDatabase) {
36-
g_pDatabase = new CBookmarkDatabase();
37-
if(g_pDatabase) {
38-
bool bRet = g_pDatabase->OpenDatabase(nullptr, "bookmarks_connect");
39-
if(!bRet) {
40-
delete g_pDatabase;
41-
g_pDatabase = nullptr;
42-
}
43-
}
44-
}
45-
return g_pDatabase;
46-
}
4717

4818
CBookmarkDatabase::CBookmarkDatabase(QObject *parent)
4919
: CDatabase(parent)

Plugins/WebBrowser/Bookmark/BookmarkDatabase.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,10 @@ struct BookmarkItem {
6666
class CBookmarkDatabase : public CDatabase
6767
{
6868
Q_OBJECT
69+
6970
public:
70-
static CBookmarkDatabase* Instance(CParameterDatabase *para);
71-
static CBookmarkDatabase* Instance();
71+
explicit CBookmarkDatabase(QObject *parent = nullptr);
72+
~CBookmarkDatabase();
7273

7374
// 书签操作
7475
int addBookmark(const BookmarkItem &item);
@@ -112,8 +113,6 @@ class CBookmarkDatabase : public CDatabase
112113
void folderDeleted(int folderId);
113114

114115
private:
115-
explicit CBookmarkDatabase(QObject *parent = nullptr);
116-
~CBookmarkDatabase();
117116
[[nodiscard]] bool OnInitializeDatabase() override;
118117

119118
void buildBookmarkDocument(QDomDocument &doc);

Plugins/WebBrowser/Bookmark/FrmAddBookmark.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ CFrmAddBookmark::CFrmAddBookmark(const QString &szTitle, const QUrl &url,
1616
, m_Url(url)
1717
, m_Icon(icon)
1818
, m_pPara(pPara)
19-
, m_pDatabase(CBookmarkDatabase::Instance())
19+
, m_pDatabase(nullptr)
2020
, m_pModelTree(nullptr)
2121
{
2222
ui->setupUi(this);
@@ -30,6 +30,7 @@ CFrmAddBookmark::CFrmAddBookmark(const QString &szTitle, const QUrl &url,
3030
ui->leTitle->setText(m_szTitle);
3131

3232
if(m_pPara) {
33+
m_pDatabase = &pPara->m_BookmarkDatabase;
3334
resize(m_pPara->GetWindowSize());
3435
ui->cbSave->setChecked(m_pPara->GetBookmarkShowEditor());
3536
}

Plugins/WebBrowser/Bookmark/FrmBookmark.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ static Q_LOGGING_CATEGORY(log, "WebBrowser.Bookmark")
1919
CFrmBookmark::CFrmBookmark(CParameterWebBrowser *pPara, QWidget *parent)
2020
: QWidget(parent)
2121
, ui(new Ui::CFrmBookmark)
22-
, m_pDatabase(CBookmarkDatabase::Instance())
22+
, m_pDatabase(nullptr)
2323
, m_pPara(pPara)
2424
, m_pTreeView(nullptr)
2525
, m_pSearchEdit(nullptr)
@@ -33,8 +33,10 @@ CFrmBookmark::CFrmBookmark(CParameterWebBrowser *pPara, QWidget *parent)
3333
setupUI();
3434
loadBookmarks();
3535

36-
if(m_pPara)
36+
if(m_pPara) {
37+
m_pDatabase = &pPara->m_BookmarkDatabase;
3738
resize(m_pPara->GetWindowSize());
39+
}
3840
}
3941

4042
CFrmBookmark::~CFrmBookmark()

Plugins/WebBrowser/DatabaseUrl.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ int CDatabaseUrl::AddUrl(const QString &url, const QString &title, const QIcon &
7272
bool success = query.exec();
7373
if (!success) {
7474
nId = 0;
75-
qCritical(log) << "Failed to add url:" << url << query.lastError().text();
75+
qCritical(log) << "Failed to add url:" << url << query.lastError().text()
76+
<< "Sql:" << query.executedQuery();
7677
} else {
7778
if(0 == nId)
7879
nId = query.lastInsertId().toInt();
@@ -306,15 +307,16 @@ bool CDatabaseUrl::OnInitializeSqliteDatabase()
306307
QSqlQuery query(GetDatabase());
307308

308309
// 创建历史记录表
309-
bool success = query.exec(
310+
query.prepare(
310311
"CREATE TABLE IF NOT EXISTS url ("
311-
" id INTEGER PRIMARY KEY AUTO_INCREMENT,"
312+
" id INTEGER PRIMARY KEY AUTOINCREMENT,"
312313
" url TEXT UNIQUE NOT NULL,"
313314
" title TEXT,"
314315
" icon INTEGER DEFAULT 0,"
315316
" visit_time DATETIME DEFAULT CURRENT_TIMESTAMP"
316317
")"
317318
);
319+
bool success = query.exec();
318320

319321
if (!success) {
320322
qCritical(log) << "Failed to create url table:"
@@ -324,7 +326,8 @@ bool CDatabaseUrl::OnInitializeSqliteDatabase()
324326
}
325327

326328
// 创建索引
327-
success = query.exec("CREATE INDEX IF NOT EXISTS idx_url_url ON url(url)");
329+
query.prepare("CREATE INDEX IF NOT EXISTS idx_url_url ON url(url)");
330+
success = query.exec();
328331
if (!success) {
329332
qWarning(log) << "Failed to create index idx_url_url:"
330333
<< query.lastError().text()
@@ -339,7 +342,7 @@ bool CDatabaseUrl::OnInitializeMySqlDatabase()
339342
QSqlQuery query(GetDatabase());
340343

341344
// 创建历史记录表
342-
bool success = query.exec(
345+
query.prepare(
343346
"CREATE TABLE IF NOT EXISTS url ("
344347
" id INTEGER PRIMARY KEY AUTO_INCREMENT,"
345348
" url TEXT NOT NULL,"
@@ -349,6 +352,7 @@ bool CDatabaseUrl::OnInitializeMySqlDatabase()
349352
" UNIQUE KEY idx_url_url (url(32767))"
350353
")"
351354
);
355+
bool success = query.exec();
352356

353357
if (!success) {
354358
qCritical(log) << "Failed to create url table:"

Plugins/WebBrowser/FrmWebBrowser.cpp

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#include "FrmAddBookmark.h"
3737
#include "DlgSettings.h"
3838
#include "FrmWebBrowser.h"
39+
#include "ParameterGlobal.h"
3940

4041
static Q_LOGGING_CATEGORY(log, "WebBrowser.Browser")
4142
CFrmWebBrowser::CFrmWebBrowser(CParameterWebBrowser *pPara, bool bMenuBar, QWidget *parent)
@@ -73,8 +74,6 @@ CFrmWebBrowser::CFrmWebBrowser(CParameterWebBrowser *pPara, bool bMenuBar, QWidg
7374
, m_pCaptureFulPage(nullptr)
7475
, m_pRecord(nullptr)
7576
, m_pMultimediaRecord(nullptr)
76-
, m_pHistoryDatabase(nullptr)
77-
, m_pBookmarkDatabase(nullptr)
7877
{
7978
qDebug(log) << Q_FUNC_INFO;
8079
bool check = false;
@@ -150,7 +149,7 @@ CFrmWebBrowser::CFrmWebBrowser(CParameterWebBrowser *pPara, bool bMenuBar, QWidg
150149
});
151150
Q_ASSERT(check);
152151
// 创建地址栏自动完成器
153-
auto pAddressCompleter = new CAddressCompleter(this);
152+
auto pAddressCompleter = new CAddressCompleter(&m_pPara->m_HistoryDatabase, this);
154153
pAddressCompleter->attachToLineEdit(m_pUrlLineEdit);
155154
if(m_pPara)
156155
pAddressCompleter->setMaxVisibleItems(m_pPara->GetAddCompleterLines());
@@ -389,8 +388,8 @@ void CFrmWebBrowser::SetConnect(CFrmWebView* pWeb)
389388
CFrmWebView* pWeb = qobject_cast<CFrmWebView*>(sender());
390389
if(IsCurrentView(pWeb))
391390
m_pUrlLineEdit->setText(url.toString());
392-
if(m_pHistoryDatabase) {
393-
m_pHistoryDatabase->addHistoryEntry(url.toString());
391+
if(m_pPara) {
392+
m_pPara->m_HistoryDatabase.addHistoryEntry(url.toString());
394393
}
395394
});
396395
Q_ASSERT(check);
@@ -404,8 +403,8 @@ void CFrmWebBrowser::SetConnect(CFrmWebView* pWeb)
404403
setWindowTitle(title);
405404
emit sigUpdateTitle();
406405
}
407-
if(m_pHistoryDatabase) {
408-
m_pHistoryDatabase->updateHistoryEntry(pWeb->url().toString(), title);
406+
if(m_pPara) {
407+
m_pPara->m_HistoryDatabase.updateHistoryEntry(pWeb->url().toString(), title);
409408
}
410409
});
411410
Q_ASSERT(check);
@@ -420,8 +419,8 @@ void CFrmWebBrowser::SetConnect(CFrmWebView* pWeb)
420419
setWindowIcon(icon);
421420
emit sigUpdateTitle();
422421
}
423-
if(m_pHistoryDatabase) {
424-
m_pHistoryDatabase->updateHistoryEntry(pWeb->url().toString(), QString(), icon);
422+
if(m_pPara) {
423+
m_pPara->m_HistoryDatabase.updateHistoryEntry(pWeb->url().toString(), QString(), icon);
425424
}
426425
});
427426
Q_ASSERT(check);
@@ -805,9 +804,6 @@ int CFrmWebBrowser::Start()
805804
{
806805
int nRet = 0;
807806

808-
m_pHistoryDatabase = CHistoryDatabase::Instance(&m_pPara->m_Database);
809-
m_pBookmarkDatabase = CBookmarkDatabase::Instance(&m_pPara->m_Database);
810-
811807
if(m_pTab && m_pTab->count() == 0) {
812808
// Add new web view
813809
m_pAddPage->trigger();

Plugins/WebBrowser/FrmWebBrowser.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
#include "FrmDownloadManager.h"
1717
#include "ParameterWebBrowser.h"
1818
#include "MultimediaRecord.h"
19-
#include "History/HistoryDatabase.h"
20-
#include "Bookmark/BookmarkDatabase.h"
2119

2220
class CFrmWebBrowser : public QWidget
2321
{
@@ -133,7 +131,4 @@ public Q_SLOTS:
133131

134132
CMultimediaRecordThread* m_pMultimediaRecord;
135133
QTimer m_tmRecord;
136-
137-
CHistoryDatabase* m_pHistoryDatabase;
138-
CBookmarkDatabase* m_pBookmarkDatabase;
139134
};

Plugins/WebBrowser/History/HistoryDatabase.cpp

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -41,22 +41,6 @@ void enableSqlTrace(const QString& connectionName)
4141
}
4242
#endif // HAVE_SQLITE
4343

44-
CHistoryDatabase* CHistoryDatabase::Instance(CParameterDatabase *para)
45-
{
46-
static CHistoryDatabase* p = nullptr;
47-
if(!p) {
48-
p = new CHistoryDatabase();
49-
if(p) {
50-
bool bRet = p->OpenDatabase(para, "history_connection");
51-
if(!bRet) {
52-
delete p;
53-
p = nullptr;
54-
}
55-
}
56-
}
57-
return p;
58-
}
59-
6044
CHistoryDatabase::CHistoryDatabase(QObject *parent)
6145
: CDatabase(parent)
6246
{
@@ -749,27 +733,30 @@ bool CHistoryDatabase::OnInitializeSqliteDatabase()
749733
QSqlQuery query(GetDatabase());
750734

751735
// 创建历史记录表
752-
bool success = query.exec(
736+
query.prepare(
753737
"CREATE TABLE IF NOT EXISTS history ("
754738
" id INTEGER PRIMARY KEY AUTOINCREMENT,"
755739
" url INTEGER NOT NULL,"
756740
" visit_time DATETIME DEFAULT CURRENT_TIMESTAMP"
757741
")"
758742
);
743+
bool success = query.exec();
759744

760745
if (!success) {
761746
qCritical(log) << "Failed to create table:" << query.lastError().text();
762747
return false;
763748
}
764749

765750
// 创建索引
766-
success = query.exec("CREATE INDEX IF NOT EXISTS idx_history_url ON history(url)");
751+
query.prepare("CREATE INDEX IF NOT EXISTS idx_history_url ON history(url)");
752+
success = query.exec();
767753
if (!success) {
768754
qWarning(log) << "Failed to create index idx_history_url:"
769755
<< query.lastError().text()
770756
<< query.executedQuery();
771757
}
772-
success = query.exec("CREATE INDEX IF NOT EXISTS idx_history_time ON history(visit_time)");
758+
query.prepare("CREATE INDEX IF NOT EXISTS idx_history_time ON history(visit_time)");
759+
success = query.exec();
773760
if (!success) {
774761
qWarning(log) << "Failed to create index idx_history_time:"
775762
<< query.lastError().text()
@@ -784,7 +771,7 @@ bool CHistoryDatabase::OnInitializeMySqlDatabase()
784771
QSqlQuery query(GetDatabase());
785772

786773
// 创建历史记录表
787-
bool success = query.exec(
774+
query.prepare(
788775
"CREATE TABLE IF NOT EXISTS history ("
789776
" id INTEGER PRIMARY KEY AUTO_INCREMENT,"
790777
" url INTEGER NOT NULL,"
@@ -793,6 +780,7 @@ bool CHistoryDatabase::OnInitializeMySqlDatabase()
793780
" INDEX idx_history_time (visit_time)"
794781
")"
795782
);
783+
bool success = query.exec();
796784

797785
if (!success) {
798786
qCritical(log) << "Failed to create history table:"

0 commit comments

Comments
 (0)