From 2d83c3c3474764e32e407457542572ac3b7bd45a Mon Sep 17 00:00:00 2001 From: keshavbhatt Date: Sun, 11 Apr 2021 02:00:56 +0530 Subject: moved webview code to seperate class --- src/webview.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'src/webview.cpp') diff --git a/src/webview.cpp b/src/webview.cpp index 5f594f2..653dbae 100644 --- a/src/webview.cpp +++ b/src/webview.cpp @@ -4,11 +4,49 @@ #include #include #include +#include WebView::WebView(QWidget *parent, QStringList dictionaries) : QWebEngineView(parent) { m_dictionaries = dictionaries; + + QObject *parentMainWindow = this->parent(); + while (!parentMainWindow -> objectName().contains("MainWindow")){ + parentMainWindow = parentMainWindow -> parent(); + } + MainWindow *mainWindow = dynamic_cast(parentMainWindow); + + connect(this, &WebView::titleChanged, + mainWindow, &MainWindow::handleWebViewTitleChanged); + connect(this, &WebView::loadStarted, + mainWindow, &MainWindow::handleLoadStarted); + connect(this, &WebView::loadProgress, + mainWindow, &MainWindow::handleLoadProgress); + connect(this, &WebView::loadFinished, + mainWindow, &MainWindow::handleLoadFinished); + connect(this, &WebView::renderProcessTerminated, + [this](QWebEnginePage::RenderProcessTerminationStatus termStatus, int statusCode) { + QString status; + switch (termStatus) { + case QWebEnginePage::NormalTerminationStatus: + status = tr("Render process normal exit"); + break; + case QWebEnginePage::AbnormalTerminationStatus: + status = tr("Render process abnormal exit"); + break; + case QWebEnginePage::CrashedTerminationStatus: + status = tr("Render process crashed"); + break; + case QWebEnginePage::KilledTerminationStatus: + status = tr("Render process killed"); + break; + } + QMessageBox::StandardButton btn = QMessageBox::question(window(), status, + tr("Render process exited with code: %1\n" "Do you want to reload the page ?").arg(statusCode)); + if (btn == QMessageBox::Yes) + QTimer::singleShot(0, [this] { this->reload(); }); + }); } void WebView::contextMenuEvent(QContextMenuEvent *event) -- cgit v1.2.3