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