玉兔远程控制
0.1.0-bate11
Toggle main menu visibility
载入中...
搜索中...
未找到
Plugins
WebBrowser
Extension
FrmExtensionStore.h
1
// Author: Kang Lin <kl222@126.com>
2
// Chrome Extension Store - Download Extensions from Web Store
3
4
#pragma once
5
6
#include <QWidget>
7
#include <QNetworkAccessManager>
8
#include <QNetworkRequest>
9
#include <QNetworkReply>
10
#include <QStandardItemModel>
11
#include <QMap>
12
#include <QJsonObject>
13
14
namespace
Ui
{
15
class
CFrmExtensionStore;
16
}
17
18
class
CParameterWebBrowser
;
19
class
CFrmExtensionManager
;
20
31
class
CFrmExtensionStore :
public
QWidget
32
{
33
Q_OBJECT
34
35
public
:
36
explicit
CFrmExtensionStore(QWidget *parent =
nullptr
);
37
virtual
~CFrmExtensionStore();
38
44
int
SetExtensionManager
(
CFrmExtensionManager
*manager);
45
50
void
SetAPIBaseUrl
(
const
QString &baseUrl);
51
56
void
SearchExtensions
(
const
QString &keyword);
57
61
void
GetPopularExtensions
();
62
66
void
GetRecommendedExtensions
();
67
73
QString
DownloadExtension
(
const
QString &extensionId);
74
79
void
CancelDownload
(
const
QString &downloadId);
80
86
int
GetDownloadProgress
(
const
QString &downloadId)
const
;
87
88
private
slots:
89
// UI 槽函数
90
void
on_pbSearch_clicked();
91
void
on_pbPopular_clicked();
92
void
on_pbRecommended_clicked();
93
void
on_pbDownload_clicked();
94
void
on_pbInstall_clicked();
95
void
on_pbCancel_clicked();
96
void
on_pbDetails_clicked();
97
void
on_pbRefresh_clicked();
98
void
on_pbClearCache_clicked();
99
100
// 表视图槽函数
101
void
slotExtensionSelected();
102
void
slotCustomContextMenu(
const
QPoint &pos);
103
void
slotDownloadProgress(qint64 bytesReceived, qint64 bytesTotal);
104
105
// 网络槽函数
106
void
slotSearchFinished();
107
void
slotDownloadFinished();
108
void
slotNetworkError(QNetworkReply::NetworkError error);
109
110
private
:
111
// 初始化函数
112
void
InitializeUI();
113
void
SetupConnections();
114
void
SetupNetworkManager();
115
116
// 扩展列表处理
117
void
RefreshExtensionList();
118
int
AddExtensionItem(
const
QJsonObject &extInfo);
119
void
DisplayExtensionDetails(
const
QJsonObject &extInfo);
120
void
ClearExtensionList();
121
122
// 下载管理
123
int
ProcessDownloadedFile(
const
QString &filePath,
const
QString &extensionId);
124
QString GetDownloadPath()
const
;
125
QString GetCachePath()
const
;
126
127
// 缓存管理
128
int
SaveToCache(
const
QString &key,
const
QJsonObject &data);
129
QJsonObject LoadFromCache(
const
QString &key)
const
;
130
bool
IsCacheValid(
const
QString &key)
const
;
131
132
// 数据解析
133
QJsonArray ParseExtensionList(
const
QByteArray &data)
const
;
134
QJsonObject ParseExtensionDetails(
const
QByteArray &data)
const
;
135
136
// 工具函数
137
QString GenerateDownloadId()
const
;
138
bool
IsExtensionIdValid(
const
QString &
id
)
const
;
139
QString GetExtensionFileUrl(
const
QString &extensionId)
const
;
140
QString GetChromeWebStoreUrl(
const
QString &extensionId)
const
;
141
142
private
:
143
Ui::CFrmExtensionStore* ui;
144
QNetworkAccessManager* m_pNetworkManager;
145
CFrmExtensionManager
* m_pExtensionManager;
146
CParameterWebBrowser
* m_pPara;
147
QStandardItemModel* m_pModelExtensions;
148
149
// API 基础 URL
150
QString m_apiBaseUrl;
151
152
// 下载管理
153
QMap<QString, QNetworkReply*> m_downloads;
// downloadId -> reply
154
QMap<QString, QString> m_downloadExtensionId;
// downloadId -> extensionId
155
QMap<QString, QJsonObject> m_extensionCache;
// extensionId -> extensionInfo
156
157
// 表列号
158
enum
ColumnNo {
159
Icon = 0,
// 图标
160
Name = 1,
// 名称
161
Version = 2,
// 版本
162
Rating = 3,
// 评分
163
Downloads = 4,
// 下载数
164
ID = 5,
// 扩展 ID
165
Status = 6
// 状态(未安装/已安装/下载中)
166
};
167
168
// 缓存设置
169
static
const
int
CACHE_VALIDITY_HOURS = 24;
170
};
CFrmExtensionManager
扩展管理器界面
定义
FrmExtensionManager.h:29
CFrmExtensionStore::CancelDownload
void CancelDownload(const QString &downloadId)
取消下载
定义
FrmExtensionStore.cpp:340
CFrmExtensionStore::SearchExtensions
void SearchExtensions(const QString &keyword)
搜索扩展
定义
FrmExtensionStore.cpp:186
CFrmExtensionStore::DownloadExtension
QString DownloadExtension(const QString &extensionId)
下载扩展
定义
FrmExtensionStore.cpp:284
CFrmExtensionStore::GetDownloadProgress
int GetDownloadProgress(const QString &downloadId) const
获取下载进度
定义
FrmExtensionStore.cpp:355
CFrmExtensionStore::GetRecommendedExtensions
void GetRecommendedExtensions()
获取推荐扩展列表
定义
FrmExtensionStore.cpp:253
CFrmExtensionStore::SetExtensionManager
int SetExtensionManager(CFrmExtensionManager *manager)
设置扩展管理器
定义
FrmExtensionStore.cpp:168
CFrmExtensionStore::SetAPIBaseUrl
void SetAPIBaseUrl(const QString &baseUrl)
设置基础 URL (可以指向自建服务器)
定义
FrmExtensionStore.cpp:180
CFrmExtensionStore::GetPopularExtensions
void GetPopularExtensions()
获取热门扩展列表
定义
FrmExtensionStore.cpp:222
CParameterWebBrowser
定义
ParameterWebBrowser.h:12
Ui
定义
FrmFullScreenToolBar.h:14
作者:康林 (kl222@126.com)
版权所有(c) 康林工作室 保留所有权力