mirror of
https://github.com/overte-org/overte.git
synced 2025-04-25 18:16: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 "AccountManager.h"
|
||||
#include "Menu.h"
|
||||
#include "scripting/LocationScriptingInterface.h"
|
||||
#include "scripting/MenuScriptingInterface.h"
|
||||
#include "Util.h"
|
||||
#include "ui/AnimationsDialog.h"
|
||||
|
@ -1217,7 +1218,9 @@ void Menu::displayNameLocationResponse(const QString& errorString) {
|
|||
|
||||
void Menu::toggleLocationList() {
|
||||
if (!_userLocationsDialog) {
|
||||
_userLocationsDialog = DataWebDialog::dialogForPath("/locations");
|
||||
JavascriptObjectMap locationObjectMap;
|
||||
locationObjectMap.insert("InterfaceLocation", LocationScriptingInterface::getInstance());
|
||||
_userLocationsDialog = DataWebDialog::dialogForPath("/locations", locationObjectMap);
|
||||
}
|
||||
|
||||
if (!_userLocationsDialog->isVisible()) {
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
|
||||
#include <qwebframe.h>
|
||||
#include <qwebview.h>
|
||||
|
||||
#include <AccountManager.h>
|
||||
|
@ -33,9 +34,14 @@ DataWebDialog::DataWebDialog() {
|
|||
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();
|
||||
|
||||
dialogWebView->_javascriptObjects = javascriptObjects;
|
||||
connect(dialogWebView->page()->mainFrame(), &QWebFrame::javaScriptWindowObjectCleared,
|
||||
dialogWebView, &DataWebDialog::addJavascriptObjectsToWindow);
|
||||
|
||||
QUrl dataWebUrl(DEFAULT_NODE_AUTH_URL);
|
||||
dataWebUrl.setPath(path);
|
||||
|
||||
|
@ -44,4 +50,10 @@ DataWebDialog* DataWebDialog::dialogForPath(const QString& path) {
|
|||
dialogWebView->load(dataWebUrl);
|
||||
|
||||
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 <qwebview.h>
|
||||
|
||||
typedef QMap<QString, QObject*> JavascriptObjectMap;
|
||||
|
||||
class DataWebDialog : public QWebView {
|
||||
Q_OBJECT
|
||||
public:
|
||||
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
|
Loading…
Reference in a new issue