Skip to content

Commit 979682a

Browse files
committed
Plugins::WebBrowser: add import bookmark
1 parent 5c50b1e commit 979682a

File tree

8 files changed

+571
-40
lines changed

8 files changed

+571
-40
lines changed

Plugins/WebBrowser/Bookmark/BookmarkDatabase.cpp

Lines changed: 528 additions & 30 deletions
Large diffs are not rendered by default.

Plugins/WebBrowser/Bookmark/BookmarkDatabase.h

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#pragma once
44

5+
#include <QDomElement>
56
#include <QString>
67
#include <QByteArray>
78
#include <QDateTime>
@@ -138,6 +139,28 @@ class CBookmarkDatabase : public QObject
138139
bool initializeDatabase();
139140
BookmarkItem bookmarkFromQuery(const QSqlQuery &query);
140141

142+
void buildBookmarkDocument(QDomDocument &doc);
143+
void buildBookmarkTree(
144+
QDomDocument &doc, QDomElement &parentElement, int folderId);
145+
QDomElement createBookmarkDomElement(
146+
QDomDocument &doc, const BookmarkItem &bookmark);
147+
int parseHtmlBookmarks(const QString &htmlContent);
148+
int parseBookmarkList(const QDomElement &dlElement,
149+
const QString &currentPath,
150+
QMap<QString, int> &folderMap);
151+
int parseDtElement(const QDomElement &dtElement,
152+
const QString &currentPath,
153+
QMap<QString, int> &folderMap);
154+
int importBookmark(const QDomElement &aElement,
155+
const QString &folderPath, QMap<QString, int> &folderMap);
156+
QString importFolder(const QDomElement &h3Element,
157+
const QString &parentPath,
158+
QMap<QString, int> &folderMap);
159+
int getOrCreateFolder(const QString &folderPath, int parentFolderId);
160+
int getOrCreateFolder(const QString &folderPath, QMap<QString, int> &folderMap);
161+
QDateTime parseTimestamp(const QString &timestampStr);
162+
QDomElement findFirstElement(const QDomElement &parent, const QString &tagName);
163+
141164
private:
142165
QSqlDatabase m_database;
143166
};

Plugins/WebBrowser/Bookmark/FrmAddBookmark.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,9 @@ void CFrmAddBookmark::on_pbAdd_clicked()
8282
item.title = ui->leTitle->text();
8383
item.url = m_Url.toString();
8484
item.folderId = id;
85+
item.createdTime = QDateTime::currentDateTime();
86+
item.lastVisitTime = item.createdTime;
87+
item.modifiedTime = item.createdTime;
8588
m_pDatabase->addBookmark(item);
8689
}
8790
}

Plugins/WebBrowser/Bookmark/FrmBookmark.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,8 @@ void CFrmBookmark::onAddBookmark()
277277
item.url = url;
278278
item.title = title.isEmpty() ? url : title;
279279
item.createdTime = QDateTime::currentDateTime();
280+
item.lastVisitTime = item.createdTime;
281+
item.modifiedTime = item.createdTime;
280282

281283
// 获取选中的文件夹
282284
QModelIndex currentIndex = m_pTreeView->currentIndex();
@@ -483,10 +485,15 @@ void CFrmBookmark::onSearchTextChanged(const QString &text)
483485

484486
void CFrmBookmark::onTreeViewDoubleClicked(const QModelIndex &index)
485487
{
488+
if(!m_pDatabase) return;
486489
int type = index.data(Type).toInt();
487490
if (BookmarkType_Bookmark == type) {
488491
QString url = index.data(Url).toString();
492+
int id = index.data(ID).toInt();
489493
if (!url.isEmpty()) {
494+
BookmarkItem item = m_pDatabase->getBookmark(id);
495+
item.lastVisitTime = QDateTime::currentDateTime();
496+
m_pDatabase->updateBookmark(item);
490497
emit openUrlRequested(url);
491498
close(); // 关闭对话框
492499
}
@@ -506,10 +513,7 @@ void CFrmBookmark::onCustomContextMenu(const QPoint &pos)
506513

507514
if (BookmarkType_Bookmark == type) {
508515
menu.addAction(QIcon::fromTheme("document-open"), tr("Open"), this, [this, index]() {
509-
QString url = index.data(Url).toString();
510-
if (!url.isEmpty()) {
511-
emit openUrlRequested(url);
512-
}
516+
onTreeViewDoubleClicked(index);
513517
});
514518

515519
menu.addAction(QIcon::fromTheme("edit"), tr("Edit"), this, &CFrmBookmark::onEditBookmark);

Plugins/WebBrowser/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ set(CMAKE_AUTORCC ON)
99
set(CMAKE_CXX_STANDARD 17)
1010
set(CMAKE_CXX_STANDARD_REQUIRED ON)
1111

12-
set(WebBrowser_QT_COMPONENTS Core Gui Widgets WebEngineWidgets WebEngineCore Sql)
12+
set(WebBrowser_QT_COMPONENTS Core Gui Widgets WebEngineWidgets WebEngineCore Sql Xml)
1313
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS ${WebBrowser_QT_COMPONENTS})
1414
if(Qt${QT_VERSION_MAJOR}_FOUND)
1515
FOREACH(_COMPONENT ${WebBrowser_QT_COMPONENTS})

Plugins/WebBrowser/ParameterWebBrowser.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@ CParameterWebBrowser::CParameterWebBrowser(QObject *parent, const QString &szPre
2828
//m_szDownloadFolder = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation);
2929
SetDownloadFolder(QWebEngineProfile::defaultProfile()->downloadPath());
3030
qDebug(log) << "Download folder:" << GetDownloadFolder();
31-
SetSearchEngine("https://cn.bing.com/search?q=%s");
31+
if(QLocale::system().language() == QLocale::Language::Chinese)
32+
SetSearchEngine("https://www.bing.com/search?q=%s");
33+
else
34+
SetSearchEngine("https://www.google.com/search?q=%s");
3235
SetSearchRelaceString("%s");
3336
QStringList searchEngines;
3437
searchEngines << "https://www.bing.com/search?q=%s"

Plugins/WebBrowser/Resource/Translations/WebBrowser_zh_CN.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
<name>CBookmarkDatabase</name>
5959
<message>
6060
<location filename="../../Bookmark/BookmarkDatabase.cpp" line="126"/>
61-
<source>Bookmark</source>
61+
<source>Bookmarks</source>
6262
<translation>书签</translation>
6363
</message>
6464
<message>
@@ -68,7 +68,7 @@
6868
</message>
6969
<message>
7070
<location filename="../../Bookmark/BookmarkDatabase.cpp" line="128"/>
71-
<source>Favorite</source>
71+
<source>Favorites</source>
7272
<translation>收藏夹</translation>
7373
</message>
7474
<message>

Plugins/WebBrowser/Resource/Translations/WebBrowser_zh_TW.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
<name>CBookmarkDatabase</name>
5959
<message>
6060
<location filename="../../Bookmark/BookmarkDatabase.cpp" line="126"/>
61-
<source>Bookmark</source>
61+
<source>Bookmarks</source>
6262
<translation>書簽</translation>
6363
</message>
6464
<message>
@@ -68,7 +68,7 @@
6868
</message>
6969
<message>
7070
<location filename="../../Bookmark/BookmarkDatabase.cpp" line="128"/>
71-
<source>Favorite</source>
71+
<source>Favorites</source>
7272
<translation>收藏夾</translation>
7373
</message>
7474
<message>

0 commit comments

Comments
 (0)