History

handle location set/get in AddressManager, handle set to address map

Stephen Birarda committed 12 years ago

Commit 27f7cdb1 parent b90db284 files · +39 −62Browse files

Showing the changes to interface/src/scripting/LocationScriptingInterface.cpp (1 of 4 files). Show all

Unified · Split

interface/src/scripting/LocationScriptingInterface.cpp+15−30
@@ -9,9 +9,7 @@ · 8 unmodified lines
99 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
1010 //
1111
12−#include <glm/glm.hpp>
13−
14−#include "NodeList.h"
12+#include <AddressManager.h>
1513
1614 #include "LocationScriptingInterface.h"
1715
@@ -20,36 +18,23 @@ LocationScriptingInterface* LocationScriptingInterface::getInstance() { · 2 unmodified lines
2018 return &sharedInstance;
2119 }
2220
23−bool LocationScriptingInterface::isConnected() {
24− return NodeList::getInstance()->getDomainHandler().isConnected();
25−}
26−
27−QString LocationScriptingInterface::getHref() {
28− return getProtocol() + "//" + getHostname() + getPathname();
29−}
30−
31−QString LocationScriptingInterface::getPathname() {
32− return AddressManager::getInstance().currentPath();
33−}
34−
35−QString LocationScriptingInterface::getHostname() {
36− return NodeList::getInstance()->getDomainHandler().getHostname();
37−}
38−
39−QString LocationScriptingInterface::getDomainID() const {
40− const QUuid& domainID = NodeList::getInstance()->getDomainHandler().getUUID();
41− return domainID.isNull() ? "" : uuidStringWithoutCurlyBraces(domainID);
42−}
43−
44−void LocationScriptingInterface::assign(const QString& url) {
45− QMetaObject::invokeMethod(&AddressManager::getInstance(), "handleLookupString", Q_ARG(const QString&, url));
46−}
47−
4821 QScriptValue LocationScriptingInterface::locationGetter(QScriptContext* context, QScriptEngine* engine) {
49− return engine->newQObject(getInstance());
22+ return engine->newQObject(&AddressManager::getInstance());
5023 }
5124
5225 QScriptValue LocationScriptingInterface::locationSetter(QScriptContext* context, QScriptEngine* engine) {
53− LocationScriptingInterface::getInstance()->assign(context->argument(0).toString());
26+ const QVariant& argumentVariant = context->argument(0).toVariant();
27+
28+
29+ if (argumentVariant.canConvert(QMetaType::QVariantMap)) {
30+ // this argument is a variant map, so we'll assume it's an address map
31+ QMetaObject::invokeMethod(&AddressManager::getInstance(), "goToAddressFromObject",
32+ Q_ARG(const QVariantMap&, argumentVariant.toMap()));
33+ } else {
34+ // just try and convert the argument to a string, should be a hifi:// address
35+ QMetaObject::invokeMethod(&AddressManager::getInstance(), "handleLookupString",
36+ Q_ARG(const QString&, argumentVariant.toString()));
37+ }
38+
5439 return QScriptValue::UndefinedValue;
5540 }