玉兔远程控制
0.1.0-bate11
Toggle main menu visibility
载入中...
搜索中...
未找到
Plugins
WebBrowser
Bookmark
BookmarkDatabase.h
1
// Author: Kang Lin <kl222@126.com>
2
3
#pragma once
4
5
#include <QDomElement>
6
#include <QString>
7
#include <QByteArray>
8
#include <QDateTime>
9
#include <QIcon>
10
#include <QList>
11
#include <QDateTime>
12
#include "DatabaseTree.h"
13
#include "DatabaseUrl.h"
14
15
enum
BookmarkType {
16
BookmarkType_Bookmark,
17
BookmarkType_Folder,
18
BookmarkType_Separator
19
};
20
21
struct
BookmarkItem {
22
int
id;
23
QString url;
24
QString title;
25
QIcon icon;
26
QDateTime createdTime;
27
QDateTime modifiedTime;
28
QDateTime lastVisitTime;
29
30
int
folderId;
31
BookmarkType type;
32
33
BookmarkItem(BookmarkType t)
34
: id(0)
35
, folderId(1)
// 指向默认收藏夹
36
, type(t)
37
{}
38
39
[[nodiscard]]
bool
isFolder()
const
{
return
type == BookmarkType_Folder; }
40
[[nodiscard]]
bool
isSeparator()
const
{
return
type == BookmarkType_Separator; }
41
[[nodiscard]]
bool
isBookmark()
const
{
return
type == BookmarkType_Bookmark; }
42
43
[[nodiscard]] QIcon getIcon()
const
{
44
if
(!icon.isNull()) {
45
return
icon;
46
}
47
48
// 根据URL返回默认图标
49
if
(url.startsWith(
"https://"
)) {
50
return
QIcon::fromTheme(
"security-high"
);
51
}
else
if
(url.startsWith(
"http://"
)) {
52
return
QIcon::fromTheme(
"security-low"
);
53
}
else
if
(isFolder()) {
54
return
QIcon::fromTheme(
"folder"
);
55
}
56
57
return
QIcon::fromTheme(
"user-bookmarks"
);
58
}
59
60
};
61
66
class
CBookmarkDatabase :
public
CDatabase
67
{
68
Q_OBJECT
69
70
public
:
71
explicit
CBookmarkDatabase(QObject *parent =
nullptr
);
72
~CBookmarkDatabase();
73
74
// 书签操作
75
int
addBookmark(
const
BookmarkItem
&item);
76
bool
updateBookmark(
const
BookmarkItem
&item);
77
bool
deleteBookmark(
int
id
);
78
bool
deleteBookmark(
const
QList<BookmarkItem>& items);
79
bool
moveBookmark(
int
id
,
int
newFolderId);
80
81
// 文件夹操作
82
int
addFolder(
const
QString &name,
int
parentId = 0);
83
bool
renameFolder(
int
folderId,
const
QString &newName);
84
bool
deleteFolder(
int
folderId);
85
bool
moveFolder(
int
folderId,
int
newParentId);
86
87
// 查询操作
88
[[nodiscard]]
BookmarkItem
getBookmark(
int
id
);
89
[[nodiscard]] QList<BookmarkItem> getBookmarkByUrl(
const
QString &url);
90
[[nodiscard]] QList<BookmarkItem> getAllBookmarks(
int
folderId = 0);
91
[[nodiscard]] QList<BookmarkItem> searchBookmarks(
const
QString &keyword);
92
93
// 文件夹查询
94
[[nodiscard]] QList<BookmarkItem> getAllFolders();
95
[[nodiscard]] QList<BookmarkItem> getSubFolders(
int
folderId);
96
97
[[nodiscard]]
TreeItem
BookmarkToTree(
const
BookmarkItem
& tree,
bool
setKey =
false
);
98
[[nodiscard]]
BookmarkItem
TreeToBookmark(
const
TreeItem
& tree);
99
[[nodiscard]]
BookmarkItem
TreeToBookmark(
const
TreeItem
& item,
const
CDatabaseUrl::UrlItem
& url);
100
101
signals:
102
void
bookmarksChanged();
103
void
bookmarkAdded(
const
BookmarkItem
&item);
104
void
bookmarkUpdated(
const
BookmarkItem
&item);
105
void
bookmarkDeleted(
int
id
);
106
void
folderAdded(
const
BookmarkItem
&folder);
107
void
folderUpdated(
const
BookmarkItem
&folder);
108
void
folderDeleted(
int
folderId);
109
110
private
:
111
[[nodiscard]]
bool
OnInitializeDatabase
()
override
;
112
113
CDatabaseTree
m_TreeDB;
114
CDatabaseUrl
m_UrlDB;
115
116
virtual
bool
ExportToJson(QJsonObject &obj)
override
;
117
virtual
bool
ImportFromJson(
const
QJsonObject &obj)
override
;
118
private
:
119
bool
ExportToJson(
int
parentId, QJsonArray& obj);
120
bool
ImportFromJson(
int
parentId,
const
QJsonArray& obj);
121
};
122
CBookmarkDatabase::OnInitializeDatabase
bool OnInitializeDatabase() override
Initialize database
定义
BookmarkDatabase.cpp:31
CDatabaseTree
The CDatabaseTree class
定义
DatabaseTree.h:110
CDatabaseUrl
定义
DatabaseUrl.h:8
TreeItem
定义
DatabaseTree.h:7
BookmarkItem
定义
BookmarkDatabase.h:21
CDatabaseUrl::UrlItem
定义
DatabaseUrl.h:14
作者:康林 (kl222@126.com)
版权所有(c) 康林工作室 保留所有权力