diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,7 @@ Svg Concurrent Multimedia + WebEngineWidgets ) find_package(KF5 5.22 MODULE REQUIRED COMPONENTS @@ -103,6 +104,7 @@ KF5::Notifications KF5::Crash KF5::CoreAddons + Qt5::WebEngineWidgets ) message(STATUS "cmake cflags ${CMAKE_C_FLAGS}") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -32,7 +32,7 @@ editor/vocabularyview.cpp editor/wordtypeview.cpp editor/audiowidget.cpp - #editor/browserwidget.cpp + editor/browserwidget.cpp editor/comparisonwidget.cpp editor/inflectionwidget.cpp editor/conjugationwidget.cpp diff --git a/src/editor/browserwidget.h b/src/editor/browserwidget.h --- a/src/editor/browserwidget.h +++ b/src/editor/browserwidget.h @@ -18,9 +18,10 @@ #include "ui_browserwidget.h" +#include class KEduVocExpression; -class KHTMLPart; + namespace Editor @@ -62,7 +63,7 @@ /// Selection in the doc - if more than one row is selected behavior is different KEduVocExpression* m_entry; - KHTMLPart *m_htmlPart; + QWebEngineView *m_htmlPart; QList m_providers; int m_currentProvider; }; diff --git a/src/editor/browserwidget.cpp b/src/editor/browserwidget.cpp --- a/src/editor/browserwidget.cpp +++ b/src/editor/browserwidget.cpp @@ -16,7 +16,7 @@ #include "browserwidget.h" #include -#include +#include #include @@ -29,24 +29,16 @@ m_entry = 0; m_currentProvider = 0; ///@todo kconfig? - m_htmlPart = new KHTMLPart(widget); + m_htmlPart = new QWebEngineView(widget); QHBoxLayout *layout = new QHBoxLayout(widget); widget->setLayout(layout); - layout->addWidget(m_htmlPart->widget()); - - connect(m_htmlPart->browserExtension(), SIGNAL(openUrlRequest(const QUrl&, const KParts::OpenUrlArguments&, const KParts::BrowserArguments&)), - this, SLOT(openUrl(const QUrl&))); + layout->addWidget(m_htmlPart); connect(showCurrentButton, &QPushButton::clicked, this, &BrowserWidget::showCurrentTranslation); setupProviders(); connect(providerComboBox, static_cast(&KComboBox::currentIndexChanged), this, &BrowserWidget::providerChanged); - m_htmlPart->setJavaEnabled(false); - m_htmlPart->setPluginsEnabled(false); - m_htmlPart->setJScriptEnabled(true); - m_htmlPart->setMetaRefreshEnabled(true); - m_htmlPart->setDNDEnabled(true); } void BrowserWidget::setupProviders() @@ -84,12 +76,6 @@ m_providers.append(provider); providerComboBox->addItem(provider.name); - provider.name = "De-Es Pons"; - provider.url = "http://www.ponsline.de/cgi-bin/wb/w.pl?von=pons.de&Richtung=Spanisch&Begriff=\\{@}"; - provider.languages << "de" << "es"; - m_providers.append(provider); - providerComboBox->addItem(provider.name); - provider.name = "Ru-En Multitran"; provider.url = "http://multitran.ru/c/m.exe?SHL=1&CL=1&l1=1&s=\\{@}"; provider.languages << "ru" << "en"; @@ -132,15 +118,17 @@ if (m_entry->translation(m_currentTranslation)) { QString text = m_entry->translation(m_currentTranslation)->text(); if (!text.isEmpty()) { - m_htmlPart->openUrl(QUrl(QString(m_providers.value(m_currentProvider).url.replace("\\{@}", text)))); + m_htmlPart->load(QUrl(QString(m_providers.value(m_currentProvider).url.replace("\\{@}", text)))); + m_htmlPart->show(); } } } } void BrowserWidget::openUrl(const QUrl & targetUrl) { - m_htmlPart->openUrl(targetUrl); + m_htmlPart->load(targetUrl); + m_htmlPart->show(); } void BrowserWidget::providerChanged(int provider) diff --git a/src/editor/editor.cpp b/src/editor/editor.cpp --- a/src/editor/editor.cpp +++ b/src/editor/editor.cpp @@ -353,18 +353,17 @@ // browser QDockWidget *browserDock = new QDockWidget(i18n("Internet"), this); browserDock->setObjectName(QStringLiteral("BrowserDock")); - //TinyWebBrowser *browserWidget = new TinyWebBrowser(this); - //BrowserWidget *htmlPart = new BrowserWidget(browserDock); + BrowserWidget *htmlPart = new BrowserWidget(browserDock); QScrollArea *browserScrollArea = new QScrollArea(this); browserScrollArea->setWidgetResizable(true); - //browserScrollArea->setWidget(htmlPart); + browserScrollArea->setWidget(htmlPart); browserDock->setWidget(browserScrollArea); addDockWidget(Qt::BottomDockWidgetArea, browserDock); m_dockWidgets.append(browserDock); actionCollection()->addAction(QStringLiteral("show_browser_dock"), browserDock->toggleViewAction()); browserDock->setVisible(false); - // connect(m_vocabularyView, SIGNAL(translationChanged(KEduVocExpression*, int)), - // htmlPart, SLOT(setTranslation(KEduVocExpression*, int))); + connect(m_vocabularyView, &VocabularyView::translationChanged, + htmlPart, &BrowserWidget::setTranslation); tabifyDockWidget(summaryDock,browserDock); // LaTeX