diff options
author | 2021-04-11 02:00:56 +0530 | |
---|---|---|
committer | 2021-04-11 02:00:56 +0530 | |
commit | 2d83c3c3474764e32e407457542572ac3b7bd45a (patch) | |
tree | b14261f72e1e956eb405330b5e465493344e2bb3 | |
parent | 6eaf6730b0f5bb70e23c77c4cc21c5eec93cb6e6 (diff) | |
download | whatsie-2d83c3c3474764e32e407457542572ac3b7bd45a.tar.gz whatsie-2d83c3c3474764e32e407457542572ac3b7bd45a.zip |
moved webview code to seperate class
-rw-r--r-- | src/webview.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
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 <QMenu> #include <QWebEngineProfile> #include <QWebEngineContextMenuData> +#include <mainwindow.h> 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<MainWindow *>(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) |