#ifndef WEBVIEW_H_ #define WEBVIEW_H_ #include #include #include class QNetworkReply; class QTimer; class QWebFrame; /** * Make sure pages that want to load in a new tab are actually loaded in the same page, * and remember the previous URL in case the "new tab" requests to be closed. */ class WebView : public QWebView { Q_OBJECT public: WebView(QWidget* parent = NULL); void reset(const QString baseUrl); protected: QWebView *createWindow(QWebPage::WebWindowType) override; void mousePressEvent(QMouseEvent*) override; void keyPressEvent(QKeyEvent*) override; void wheelEvent(QWheelEvent*) override; void resetTimeout(); void jsInjector(QWebFrame *frame); signals: void triggerReset(const QString &message); void startAuthentication(const QString &user, const QString &pass); protected slots: void windowCloseRequested(); void unsupportedContent(QNetworkReply*); void downloadRequest(QNetworkRequest); void downloadDeniedMessage(); void onLoadFinished(bool ok); private: QStack _urls; QTimer *_timerAbortMessage; bool _abortedDownload; bool _inErrorState; QString _token; QTimer *_timerReset; bool _firstLoad; }; #endif