玉兔远程控制 0.1.0-bate4
载入中...
搜索中...
未找到
FrmWebView.h
1// Author: Kang Lin <kl222@126.com>
2
3#pragma once
4
5#include <QIcon>
6#include <QWebEngineView>
7#include <QWebEnginePage>
8#include <QWebEngineSettings>
9#include <QWebEngineCertificateError>
10#include <QWebEngineRegisterProtocolHandlerRequest>
11#if QT_VERSION >= QT_VERSION_CHECK(6, 4, 0)
12#include <QWebEngineFileSystemAccessRequest>
13#endif
14#if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
15#include <QWebEngineWebAuthUxRequest>
16#include <QWebEngineDesktopMediaRequest>
17#include "DlgWebAuth.h"
18#endif
19#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
20#include <QWebEnginePermission>
21#endif
22#include <QActionGroup>
23#include <QtWebChannel>
24
25#include "PasswordStore.h"
26
27class CFrmWebBrowser;
28class CFrmWebView : public QWebEngineView
29{
30 Q_OBJECT
31
32public:
33 explicit CFrmWebView(CFrmWebBrowser* pFrmWebBrowser, QWidget* parent = nullptr);
34 virtual ~CFrmWebView();
35 void setPage(QWebEnginePage *page);
36
37 [[nodiscard]] int progress() const;
38 [[nodiscard]] QIcon favIcon() const;
39
40protected:
41 void contextMenuEvent(QContextMenuEvent *event) override;
42 QWebEngineView *createWindow(QWebEnginePage::WebWindowType type) override;
43 void CreateWebActionTrigger(QWebEnginePage *page, QWebEnginePage::WebAction);
44
45signals:
46 void favIconChanged(const QIcon &icon);
47 void sigDevToolsRequested(QWebEnginePage *source);
48 void sigCloseRequested();
49 void sigLinkHovered(const QString &url);
50 void sigWebActionEnabledChanged(QWebEnginePage::WebAction webAction, bool enabled);
51
52private:
53 void SetupAutoFillScript();
54 void GlobalFillForm(const QString &username, const QString &szPassword);
55 void FillForm(const QString &szUse, const QString &szPassword);
56 QString AutoFillForm();
57 int GetUserAndPassword(QUrl url, QString &szUser, QString &szPassword);
58 void InjectScriptQWebChannel();
59 void InjectScriptAutoFill();
60
61private slots:
62 void slotSelectClientCertificate(QWebEngineClientCertificateSelection clientCertSelection);
63 void slotAuthenticationRequired(const QUrl &requestUrl, QAuthenticator *auth);
64 void slotProxyAuthenticationRequired(const QUrl &requestUrl, QAuthenticator *auth,
65 const QString &proxyHost);
66 void handleRegisterProtocolHandlerRequested(QWebEngineRegisterProtocolHandlerRequest request);
67
68#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
69 void slotCertificateError(QWebEngineCertificateError error);
70 void slotPermissionRequested(QWebEnginePermission permission);
71 void handleImageAnimationPolicyChange(QWebEngineSettings::ImageAnimationPolicy policy);
72#endif
73#if QT_VERSION >= QT_VERSION_CHECK(6, 4, 0)
74 void slotFileSystemAccessRequested(QWebEngineFileSystemAccessRequest request);
75#endif
76#if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
77 void slotDesktopMediaRequest(const QWebEngineDesktopMediaRequest &request);
78 void slotWebAuthUxRequested(QWebEngineWebAuthUxRequest *request);
79 void onStateChanged(QWebEngineWebAuthUxRequest::WebAuthUxState state);
80#endif
81
82private:
83 CFrmWebBrowser* m_pBrowser;
84 int m_loadProgress = 100;
85 //WebAuthDialog *m_authDialog = nullptr;
86 QActionGroup *m_imageAnimationGroup = nullptr;
87#if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
88 CDlgWebAuth* m_pDlgWebAuth;
89#endif
90 QWebChannel* m_pWebChannel;
91 CPasswordStore* m_pPasswordStore;
92};
void slotFileSystemAccessRequested(QWebEngineFileSystemAccessRequest request)
[registerProtocolHandlerRequested]
void handleRegisterProtocolHandlerRequested(QWebEngineRegisterProtocolHandlerRequest request)
[registerProtocolHandlerRequested]