Showing the changes to interface/src/Application.cpp (1 of 10 files). Show all
Unified · Split
| @@ -84,7 +84,6 @@ · 83 unmodified lines | ||
| 84 | 84 | #include "scripting/MenuScriptingInterface.h" |
| 85 | 85 | #include "scripting/SettingsScriptingInterface.h" |
| 86 | 86 | #include "scripting/WindowScriptingInterface.h" |
| 87 | −#include "scripting/LocationScriptingInterface.h" | |
| 88 | 87 | |
| 89 | 88 | #include "ui/InfoView.h" |
| 90 | 89 | #include "ui/OAuthWebViewHandler.h" |
| @@ -408,7 +407,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 317 unmodified lines | ||
| 408 | 407 | _runningScriptsWidget, &RunningScriptsWidget::setBoundary); |
| 409 | 408 | |
| 410 | 409 | // connect to the domainChangeRequired signal on AddressManager |
| 411 | − connect(&AddressManager::getInstance(), &AddressManager::domainChangeRequired, this, &Application::changeDomainHostname); | |
| 410 | + connect(&AddressManager::getInstance(), &AddressManager::possibleDomainChangeRequired, | |
| 411 | + this, &Application::changeDomainHostname); | |
| 412 | 412 | |
| 413 | 413 | //When -url in command line, teleport to location |
| 414 | 414 | urlGoTo(argc, constArgv); |
| @@ -811,7 +811,7 @@ bool Application::event(QEvent* event) { · 396 unmodified lines | ||
| 811 | 811 | // handle custom URL |
| 812 | 812 | if (event->type() == QEvent::FileOpen) { |
| 813 | 813 | QFileOpenEvent* fileEvent = static_cast<QFileOpenEvent*>(event); |
| 814 | − bool isHifiSchemeURL = !fileEvent->url().isEmpty() && fileEvent->url().toLocalFile().startsWith(CUSTOM_URL_SCHEME); | |
| 814 | + bool isHifiSchemeURL = !fileEvent->url().isEmpty() && fileEvent->url().toLocalFile().startsWith(HIFI_URL_SCHEME); | |
| 815 | 815 | if (isHifiSchemeURL) { |
| 816 | 816 | // Menu::getInstance()->goToURL(fileEvent->url().toLocalFile()); |
| 817 | 817 | } |
| @@ -3376,31 +3376,44 @@ void Application::updateWindowTitle(){ · 2558 unmodified lines | ||
| 3376 | 3376 | void Application::updateLocationInServer() { |
| 3377 | 3377 | |
| 3378 | 3378 | AccountManager& accountManager = AccountManager::getInstance(); |
| 3379 | − | |
| 3380 | − if (accountManager.isLoggedIn()) { | |
| 3379 | + const QUuid& domainUUID = NodeList::getInstance()->getDomainHandler().getUUID(); | |
| 3380 | + | |
| 3381 | + if (accountManager.isLoggedIn() && !domainUUID.isNull()) { | |
| 3381 | 3382 | |
| 3382 | 3383 | // construct a QJsonObject given the user's current address information |
| 3383 | − QJsonObject updatedLocationObject; | |
| 3384 | + QJsonObject rootObject; | |
| 3384 | 3385 | |
| 3385 | − QJsonObject addressObject; | |
| 3386 | − addressObject.insert("position", QString(createByteArray(_myAvatar->getPosition()))); | |
| 3387 | − addressObject.insert("orientation", QString(createByteArray(glm::degrees(safeEulerAngles(_myAvatar->getOrientation()))))); | |
| 3388 | − addressObject.insert("domain", NodeList::getInstance()->getDomainHandler().getHostname()); | |
| 3386 | + QJsonObject locationObject; | |
| 3387 | + | |
| 3388 | + QString pathString = AddressManager::pathForPositionAndOrientation(_myAvatar->getPosition(), | |
| 3389 | + true, | |
| 3390 | + _myAvatar->getOrientation()); | |
| 3391 | + | |
| 3392 | + const QString LOCATION_KEY_IN_ROOT = "location"; | |
| 3393 | + const QString PATH_KEY_IN_LOCATION = "path"; | |
| 3394 | + const QString DOMAIN_ID_KEY_IN_LOCATION = "domain_id"; | |
| 3395 | + | |
| 3396 | + locationObject.insert(PATH_KEY_IN_LOCATION, pathString); | |
| 3397 | + locationObject.insert(DOMAIN_ID_KEY_IN_LOCATION, domainUUID.toString()); | |
| 3389 | 3398 | |
| 3390 | − updatedLocationObject.insert("address", addressObject); | |
| 3399 | + rootObject.insert(LOCATION_KEY_IN_ROOT, locationObject); | |
| 3391 | 3400 | |
| 3392 | − accountManager.authenticatedRequest("/api/v1/users/address", QNetworkAccessManager::PutOperation, | |
| 3393 | − JSONCallbackParameters(), QJsonDocument(updatedLocationObject).toJson()); | |
| 3401 | + accountManager.authenticatedRequest("/api/v1/users/location", QNetworkAccessManager::PutOperation, | |
| 3402 | + JSONCallbackParameters(), QJsonDocument(rootObject).toJson()); | |
| 3394 | 3403 | } |
| 3395 | 3404 | } |
| 3396 | 3405 | |
| 3397 | 3406 | void Application::changeDomainHostname(const QString &newDomainHostname) { |
| 3398 | − // tell the MyAvatar object to send a kill packet so that it dissapears from its old avatar mixer immediately | |
| 3399 | − _myAvatar->sendKillAvatar(); | |
| 3407 | + NodeList* nodeList = NodeList::getInstance(); | |
| 3400 | 3408 | |
| 3401 | − // call the domain hostname change as a queued connection on the nodelist | |
| 3402 | − QMetaObject::invokeMethod(&NodeList::getInstance()->getDomainHandler(), "setHostname", | |
| 3403 | − Q_ARG(const QString&, newDomainHostname)); | |
| 3409 | + if (!nodeList->getDomainHandler().isCurrentHostname(newDomainHostname)) { | |
| 3410 | + // tell the MyAvatar object to send a kill packet so that it dissapears from its old avatar mixer immediately | |
| 3411 | + _myAvatar->sendKillAvatar(); | |
| 3412 | + | |
| 3413 | + // call the domain hostname change as a queued connection on the nodelist | |
| 3414 | + QMetaObject::invokeMethod(&NodeList::getInstance()->getDomainHandler(), "setHostname", | |
| 3415 | + Q_ARG(const QString&, newDomainHostname)); | |
| 3416 | + } | |
| 3404 | 3417 | } |
| 3405 | 3418 | |
| 3406 | 3419 | void Application::domainChanged(const QString& domainHostname) { |
| @@ -3785,12 +3798,12 @@ ScriptEngine* Application::loadScript(const QString& scriptFilename, bool isUser · 378 unmodified lines | ||
| 3785 | 3798 | scriptEngine->registerGlobalObject("Overlays", &_overlays); |
| 3786 | 3799 | |
| 3787 | 3800 | QScriptValue windowValue = scriptEngine->registerGlobalObject("Window", WindowScriptingInterface::getInstance()); |
| 3788 | − scriptEngine->registerGetterSetter("location", LocationScriptingInterface::locationGetter, | |
| 3789 | − LocationScriptingInterface::locationSetter, windowValue); | |
| 3790 | − | |
| 3791 | − // register `location` on the global object. | |
| 3792 | − scriptEngine->registerGetterSetter("location", LocationScriptingInterface::locationGetter, | |
| 3793 | − LocationScriptingInterface::locationSetter); | |
| 3801 | +// scriptEngine->registerGetterSetter("location", LocationScriptingInterface::locationGetter, | |
| 3802 | +// LocationScriptingInterface::locationSetter, windowValue); | |
| 3803 | +// | |
| 3804 | +// // register `location` on the global object. | |
| 3805 | +// scriptEngine->registerGetterSetter("location", LocationScriptingInterface::locationGetter, | |
| 3806 | +// LocationScriptingInterface::locationSetter); | |
| 3794 | 3807 | |
| 3795 | 3808 | scriptEngine->registerGlobalObject("Menu", MenuScriptingInterface::getInstance()); |
| 3796 | 3809 | scriptEngine->registerGlobalObject("Settings", SettingsScriptingInterface::getInstance()); |
| @@ -4111,8 +4124,8 @@ void Application::takeSnapshot() { · 314 unmodified lines | ||
| 4111 | 4124 | void Application::urlGoTo(int argc, const char * constArgv[]) { |
| 4112 | 4125 | //Gets the url (hifi://domain/destination/orientation) |
| 4113 | 4126 | QString customUrl = getCmdOption(argc, constArgv, "-url"); |
| 4114 | − if(customUrl.startsWith(CUSTOM_URL_SCHEME + "//")) { | |
| 4115 | − QStringList urlParts = customUrl.remove(0, CUSTOM_URL_SCHEME.length() + 2).split('/', QString::SkipEmptyParts); | |
| 4127 | + if(customUrl.startsWith(HIFI_URL_SCHEME + "//")) { | |
| 4128 | + QStringList urlParts = customUrl.remove(0, HIFI_URL_SCHEME.length() + 2).split('/', QString::SkipEmptyParts); | |
| 4116 | 4129 | if (urlParts.count() == 1) { |
| 4117 | 4130 | // location coordinates or place name |
| 4118 | 4131 | QString domain = urlParts[0]; |