mirror of
https://github.com/overte-org/overte.git
synced 2025-04-26 06:36:08 +02:00
add option to add javascript objects to a DataWebDialog
This commit is contained in:
parent
a66b6e7237
commit
e09eef98f2
3 changed files with 25 additions and 3 deletions
|
@ -38,6 +38,7 @@
|
||||||
#include "Application.h"
|
#include "Application.h"
|
||||||
#include "AccountManager.h"
|
#include "AccountManager.h"
|
||||||
#include "Menu.h"
|
#include "Menu.h"
|
||||||
|
#include "scripting/LocationScriptingInterface.h"
|
||||||
#include "scripting/MenuScriptingInterface.h"
|
#include "scripting/MenuScriptingInterface.h"
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
#include "ui/AnimationsDialog.h"
|
#include "ui/AnimationsDialog.h"
|
||||||
|
@ -1217,7 +1218,9 @@ void Menu::displayNameLocationResponse(const QString& errorString) {
|
||||||
|
|
||||||
void Menu::toggleLocationList() {
|
void Menu::toggleLocationList() {
|
||||||
if (!_userLocationsDialog) {
|
if (!_userLocationsDialog) {
|
||||||
_userLocationsDialog = DataWebDialog::dialogForPath("/locations");
|
JavascriptObjectMap locationObjectMap;
|
||||||
|
locationObjectMap.insert("InterfaceLocation", LocationScriptingInterface::getInstance());
|
||||||
|
_userLocationsDialog = DataWebDialog::dialogForPath("/locations", locationObjectMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_userLocationsDialog->isVisible()) {
|
if (!_userLocationsDialog->isVisible()) {
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#include <qwebframe.h>
|
||||||
#include <qwebview.h>
|
#include <qwebview.h>
|
||||||
|
|
||||||
#include <AccountManager.h>
|
#include <AccountManager.h>
|
||||||
|
@ -33,9 +34,14 @@ DataWebDialog::DataWebDialog() {
|
||||||
connect(this, &QWebView::linkClicked, Application::getInstance(), &Application::openUrl);
|
connect(this, &QWebView::linkClicked, Application::getInstance(), &Application::openUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
DataWebDialog* DataWebDialog::dialogForPath(const QString& path) {
|
DataWebDialog* DataWebDialog::dialogForPath(const QString& path,
|
||||||
|
const JavascriptObjectMap& javascriptObjects) {
|
||||||
DataWebDialog* dialogWebView = new DataWebDialog();
|
DataWebDialog* dialogWebView = new DataWebDialog();
|
||||||
|
|
||||||
|
dialogWebView->_javascriptObjects = javascriptObjects;
|
||||||
|
connect(dialogWebView->page()->mainFrame(), &QWebFrame::javaScriptWindowObjectCleared,
|
||||||
|
dialogWebView, &DataWebDialog::addJavascriptObjectsToWindow);
|
||||||
|
|
||||||
QUrl dataWebUrl(DEFAULT_NODE_AUTH_URL);
|
QUrl dataWebUrl(DEFAULT_NODE_AUTH_URL);
|
||||||
dataWebUrl.setPath(path);
|
dataWebUrl.setPath(path);
|
||||||
|
|
||||||
|
@ -44,4 +50,10 @@ DataWebDialog* DataWebDialog::dialogForPath(const QString& path) {
|
||||||
dialogWebView->load(dataWebUrl);
|
dialogWebView->load(dataWebUrl);
|
||||||
|
|
||||||
return dialogWebView;
|
return dialogWebView;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DataWebDialog::addJavascriptObjectsToWindow() {
|
||||||
|
foreach(const QString& name, _javascriptObjects.keys()) {
|
||||||
|
page()->mainFrame()->addToJavaScriptWindowObject(name, _javascriptObjects[name]);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -15,11 +15,18 @@
|
||||||
#include <qobject.h>
|
#include <qobject.h>
|
||||||
#include <qwebview.h>
|
#include <qwebview.h>
|
||||||
|
|
||||||
|
typedef QMap<QString, QObject*> JavascriptObjectMap;
|
||||||
|
|
||||||
class DataWebDialog : public QWebView {
|
class DataWebDialog : public QWebView {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
DataWebDialog();
|
DataWebDialog();
|
||||||
static DataWebDialog* dialogForPath(const QString& path);
|
static DataWebDialog* dialogForPath(const QString& path,
|
||||||
|
const JavascriptObjectMap& javascriptObjects = JavascriptObjectMap());
|
||||||
|
private slots:
|
||||||
|
void addJavascriptObjectsToWindow();
|
||||||
|
private:
|
||||||
|
JavascriptObjectMap _javascriptObjects;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // hifi_WebkitDialog_h
|
#endif // hifi_WebkitDialog_h
|
Loading…
Reference in a new issue