Working on Qt 5.6 compatibility

This commit is contained in:
Brad Davis 2016-01-23 23:14:41 -08:00
parent 9e7cd92a96
commit 20deae3242
6 changed files with 35 additions and 37 deletions

View file

@ -42,12 +42,12 @@ endif ()
if (ANDROID)
set(PLATFORM_QT_COMPONENTS AndroidExtras)
else ()
set(PLATFORM_QT_COMPONENTS WebEngine WebEngineWidgets WebKitWidgets)
set(PLATFORM_QT_COMPONENTS WebEngine WebEngineWidgets)
endif ()
find_package(
Qt5 COMPONENTS
Gui Multimedia Network OpenGL Qml Quick Script ScriptTools Svg
Gui Multimedia Network OpenGL Qml Quick Script Svg
${PLATFORM_QT_COMPONENTS}
WebChannel WebSockets
)
@ -241,8 +241,8 @@ include_directories("${PROJECT_SOURCE_DIR}/src")
target_link_libraries(
${TARGET_NAME}
Qt5::Gui Qt5::Network Qt5::Multimedia Qt5::OpenGL
Qt5::Qml Qt5::Quick Qt5::Script Qt5::ScriptTools Qt5::Svg
Qt5::WebChannel Qt5::WebEngine Qt5::WebEngineWidgets Qt5::WebKitWidgets
Qt5::Qml Qt5::Quick Qt5::Script Qt5::Svg
Qt5::WebChannel Qt5::WebEngine Qt5::WebEngineWidgets
)
# Issue causes build failure unless we add this directory.

View file

@ -14,8 +14,7 @@
#include <QApplication>
#include <QMainWindow>
#include <QDockWidget>
#include <QWebFrame>
#include <QWebView>
#include <QWebEngineView>
#include <QListWidget>
#include <QStyleFactory>
@ -48,7 +47,7 @@ WebWindowClass::WebWindowClass(const QString& title, const QString& url, int wid
layout->setContentsMargins(0, 0, 0, 0);
dialogWidget->setLayout(layout);
_webView = new QWebView(dialogWidget);
_webView = new QWebEngineView(dialogWidget);
layout->addWidget(_webView);
@ -69,8 +68,8 @@ WebWindowClass::WebWindowClass(const QString& title, const QString& url, int wid
}
connect(this, &WebWindowClass::destroyed, _windowWidget, &QWidget::deleteLater);
connect(_webView->page()->mainFrame(), &QWebFrame::javaScriptWindowObjectCleared,
this, &WebWindowClass::addEventBridgeToWindowObject);
//connect(_webView->page()->mainFrame(), &QWebFrame::javaScriptWindowObjectCleared,
// this, &WebWindowClass::addEventBridgeToWindowObject);
}
WebWindowClass::~WebWindowClass() {
@ -94,7 +93,7 @@ void WebWindowClass::hasClosed() {
}
void WebWindowClass::addEventBridgeToWindowObject() {
_webView->page()->mainFrame()->addToJavaScriptWindowObject("EventBridge", _eventBridge);
// _webView->page()->mainFrame()->addToJavaScriptWindowObject("EventBridge", _eventBridge);
}
void WebWindowClass::setVisible(bool visible) {

View file

@ -14,7 +14,7 @@
#include <QScriptContext>
#include <QScriptEngine>
#include <QWebView>
#include <QWebEngineView>
class ScriptEventBridge : public QObject {
Q_OBJECT
@ -73,7 +73,7 @@ private slots:
private:
QWidget* _windowWidget;
QWebView* _webView;
QWebEngineView* _webView;
ScriptEventBridge* _eventBridge;
};

View file

@ -17,23 +17,22 @@
#include "DataWebPage.h"
DataWebPage::DataWebPage(QObject* parent) :
QWebPage(parent)
DataWebPage::DataWebPage(QObject* parent) : QWebEnginePage(parent)
{
// use an OAuthNetworkAccessManager instead of regular QNetworkAccessManager so our requests are authed
setNetworkAccessManager(OAuthNetworkAccessManager::getInstance());
// setNetworkAccessManager(OAuthNetworkAccessManager::getInstance());
// give the page an empty stylesheet
settings()->setUserStyleSheetUrl(QUrl());
// settings()->setUserStyleSheetUrl(QUrl());
}
void DataWebPage::javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID) {
qDebug() << "JS console message at line" << lineNumber << "from" << sourceID << "-" << message;
}
//void DataWebPage::javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID) {
// qDebug() << "JS console message at line" << lineNumber << "from" << sourceID << "-" << message;
//}
bool DataWebPage::acceptNavigationRequest(QWebFrame* frame, const QNetworkRequest& request, QWebPage::NavigationType type) {
bool DataWebPage::acceptNavigationRequest(const QUrl & url, NavigationType type, bool isMainFrame) {
// Handle hifi:// links and links to files with particular extensions
QString urlString = request.url().toString();
QString urlString = url.toString();
if (qApp->canAcceptURL(urlString)) {
if (qApp->acceptURL(urlString)) {
return false; // we handled it, so QWebPage doesn't need to handle it
@ -41,14 +40,15 @@ bool DataWebPage::acceptNavigationRequest(QWebFrame* frame, const QNetworkReques
}
// Make hyperlinks with target="_blank" open in user's Web browser
if (type == QWebPage::NavigationTypeLinkClicked && frame == nullptr) {
qApp->openUrl(request.url());
if (type == NavigationTypeLinkClicked && !isMainFrame) {
qApp->openUrl(url);
return false; // We handled it.
}
return true;
}
QString DataWebPage::userAgentForUrl(const QUrl& url) const {
return HIGH_FIDELITY_USER_AGENT;
}
//
//QString DataWebPage::userAgentForUrl(const QUrl& url) const {
// return HIGH_FIDELITY_USER_AGENT;
//}

View file

@ -12,15 +12,15 @@
#ifndef hifi_DataWebPage_h
#define hifi_DataWebPage_h
#include <qwebpage.h>
#include <qwebenginepage.h>
class DataWebPage : public QWebPage {
class DataWebPage : public QWebEnginePage {
public:
DataWebPage(QObject* parent = 0);
protected:
void javaScriptConsoleMessage(const QString & message, int lineNumber, const QString & sourceID) override;
bool acceptNavigationRequest(QWebFrame* frame, const QNetworkRequest& request, QWebPage::NavigationType type) override;
virtual QString userAgentForUrl(const QUrl& url) const override;
//virtual void javaScriptConsoleMessage(const QString & message, int lineNumber, const QString & sourceID) override;
virtual bool acceptNavigationRequest(const QUrl & url, NavigationType type, bool isMainFrame) override;
//virtual QString userAgentForUrl(const QUrl& url) const override;
};
#endif // hifi_DataWebPage_h

View file

@ -155,7 +155,7 @@ void bindActionToQmlAction(QObject* qmlAction, QAction* action) {
QObject::connect(qmlAction, SIGNAL(triggered()), action, SLOT(trigger()));
}
class QQuickMenuItem;
class QQuickMenuItem1;
void VrMenu::addAction(QMenu* menu, QAction* action) {
Q_ASSERT(!MenuUserData::hasData(action));
@ -167,10 +167,9 @@ void VrMenu::addAction(QMenu* menu, QAction* action) {
}
QObject* menuQml = findMenuObject(userData->uuid.toString());
Q_ASSERT(menuQml);
QQuickMenuItem* returnedValue { nullptr };
QQuickMenuItem1* returnedValue { nullptr };
bool invokeResult = QMetaObject::invokeMethod(menuQml, "addItem", Qt::DirectConnection,
Q_RETURN_ARG(QQuickMenuItem*, returnedValue),
Q_RETURN_ARG(QQuickMenuItem1*, returnedValue),
Q_ARG(QString, action->text()));
Q_ASSERT(invokeResult);
@ -206,10 +205,10 @@ void VrMenu::insertAction(QAction* before, QAction* action) {
beforeQml = findMenuObject(beforeUserData->uuid.toString());
}
QObject* menu = beforeQml->parent();
QQuickMenuItem* returnedValue { nullptr };
QQuickMenuItem1* returnedValue { nullptr };
// FIXME this needs to find the index of the beforeQml item and call insertItem(int, object)
bool invokeResult = QMetaObject::invokeMethod(menu, "addItem", Qt::DirectConnection,
Q_RETURN_ARG(QQuickMenuItem*, returnedValue),
Q_RETURN_ARG(QQuickMenuItem1*, returnedValue),
Q_ARG(QString, action->text()));
Q_ASSERT(invokeResult);
QObject* result = reinterpret_cast<QObject*>(returnedValue); // returnedValue.value<QObject*>();