repoindex/gui/webpage.cpp

52 lines
1.2 KiB
C++

#include "./webpage.h"
#include "resources/config.h"
#include <QDesktopServices>
#ifdef REPOINDEX_USE_WEBENGINE
# include <QWebEngineSettings>
# include <QWebEngineView>
#else
# include <QWebSettings>
# include <QWebView>
#endif
namespace RepoIndex {
WebPage::WebPage(WEB_VIEW_PROVIDER *view) :
WEB_PAGE_PROVIDER(view),
m_view(view)
{
#ifdef REPOINDEX_USE_WEBENGINE
settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, true);
#else
settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, true);
#endif
if(!m_view) {
// delegate to external browser if no view is assigned
connect(this, &WebPage::urlChanged, this, &WebPage::delegateToExternalBrowser);
m_view = new WEB_VIEW_PROVIDER;
m_view->setPage(this);
}
}
WEB_PAGE_PROVIDER *WebPage::createWindow(QWebEnginePage::WebWindowType type)
{
return new WebPage;
}
void WebPage::delegateToExternalBrowser(const QUrl &url)
{
openUrlExternal(url);
// this page and the associated view are useless
m_view->deleteLater();
deleteLater();
}
void WebPage::openUrlExternal(const QUrl &url)
{
QDesktopServices::openUrl(url);
}
}