From d0e2697cbba4961600dc4e810460e9c8fa02eeb0 Mon Sep 17 00:00:00 2001 From: Stojce Slavkovski Date: Mon, 30 Mar 2015 18:26:33 +0200 Subject: [PATCH 1/8] "Create account" link --- interface/ui/loginDialog.ui | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/interface/ui/loginDialog.ui b/interface/ui/loginDialog.ui index 58ff353a16..e8eff54e63 100644 --- a/interface/ui/loginDialog.ui +++ b/interface/ui/loginDialog.ui @@ -456,9 +456,12 @@ border-radius: 4px; padding-top: 1px; <style type="text/css"> - a { text-decoration: none; color: #267077;} +a { text-decoration: none; color: #267077; margin:0;padding:0;} +#create {font-weight:bold;} +p {margin:5px 0;} </style> -<a href="https://metaverse.highfidelity.com/password/new">Recover password?</a> +<p><a id="create" href="https://metaverse.highfidelity.com/users/new">Create account</a></p> +<p><a href="https://metaverse.highfidelity.com/users/password/new">Recover password</a></p> true From e1fba3c0c00185f251477a5877a83609dd799778 Mon Sep 17 00:00:00 2001 From: Stojce Slavkovski Date: Tue, 31 Mar 2015 21:57:59 +0200 Subject: [PATCH 2/8] correct signup URL --- interface/ui/loginDialog.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/ui/loginDialog.ui b/interface/ui/loginDialog.ui index e8eff54e63..20d42f3799 100644 --- a/interface/ui/loginDialog.ui +++ b/interface/ui/loginDialog.ui @@ -460,7 +460,7 @@ a { text-decoration: none; color: #267077; margin:0;padding:0;} #create {font-weight:bold;} p {margin:5px 0;} </style> -<p><a id="create" href="https://metaverse.highfidelity.com/users/new">Create account</a></p> +<p><a id="create" href="https://metaverse.highfidelity.com/signup">Create account</a></p> <p><a href="https://metaverse.highfidelity.com/users/password/new">Recover password</a></p> From d68143675a9877ca582bdc53d5b345a71e1c6865 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Tue, 31 Mar 2015 16:24:27 -0700 Subject: [PATCH 3/8] first simple pass at using marketplace windows in preferences --- interface/src/Application.cpp | 5 +++ interface/src/Application.h | 3 ++ interface/src/scripting/WebWindowClass.cpp | 11 ++++--- interface/src/ui/PreferencesDialog.cpp | 37 ++++++++++++++++------ interface/src/ui/PreferencesDialog.h | 6 ++++ 5 files changed, 48 insertions(+), 14 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index eb427737e1..fc88511c57 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3724,22 +3724,27 @@ bool Application::askToSetAvatarUrl(const QString& url) { _myAvatar->setFaceModelURL(url); UserActivityLogger::getInstance().changedModel("head", url); _myAvatar->sendIdentityPacket(); + emit faceURLChanged(url); } else if (msgBox.clickedButton() == bodyButton) { qDebug() << "Chose to use for body: " << url; _myAvatar->setSkeletonModelURL(url); // if the head is empty, reset it to the default head. if (_myAvatar->getFaceModelURLString().isEmpty()) { _myAvatar->setFaceModelURL(DEFAULT_HEAD_MODEL_URL); + emit faceURLChanged(DEFAULT_HEAD_MODEL_URL.toString()); UserActivityLogger::getInstance().changedModel("head", DEFAULT_HEAD_MODEL_URL.toString()); } UserActivityLogger::getInstance().changedModel("skeleton", url); _myAvatar->sendIdentityPacket(); + emit skeletonURLChanged(url); } else if (msgBox.clickedButton() == bodyAndHeadButton) { qDebug() << "Chose to use for body + head: " << url; _myAvatar->setFaceModelURL(QString()); _myAvatar->setSkeletonModelURL(url); UserActivityLogger::getInstance().changedModel("skeleton", url); _myAvatar->sendIdentityPacket(); + emit faceURLChanged(QString()); + emit skeletonURLChanged(url); } else { qDebug() << "Declined to use the avatar: " << url; } diff --git a/interface/src/Application.h b/interface/src/Application.h index 84b443b876..80e2d9e8de 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -336,6 +336,9 @@ signals: void checkBackgroundDownloads(); void domainConnectionRefused(const QString& reason); + void faceURLChanged(const QString& newValue); + void skeletonURLChanged(const QString& newValue); + public slots: void domainChanged(const QString& domainHostname); void updateWindowTitle(); diff --git a/interface/src/scripting/WebWindowClass.cpp b/interface/src/scripting/WebWindowClass.cpp index 61b3ce225f..31bd4029ac 100644 --- a/interface/src/scripting/WebWindowClass.cpp +++ b/interface/src/scripting/WebWindowClass.cpp @@ -54,6 +54,7 @@ WebWindowClass::WebWindowClass(const QString& title, const QString& url, int wid _windowWidget = dockWidget; } else { + _windowWidget = new QWidget(Application::getInstance()->getWindow(), Qt::Window); _windowWidget->setWindowTitle(title); _windowWidget->setMinimumSize(width, height); @@ -89,24 +90,24 @@ void WebWindowClass::setVisible(bool visible) { if (visible) { if (_isToolWindow) { QMetaObject::invokeMethod( - Application::getInstance()->getToolWindow(), "setVisible", Qt::BlockingQueuedConnection, Q_ARG(bool, visible)); + Application::getInstance()->getToolWindow(), "setVisible", Qt::AutoConnection, Q_ARG(bool, visible)); } else { - QMetaObject::invokeMethod(_windowWidget, "raise", Qt::BlockingQueuedConnection); + QMetaObject::invokeMethod(_windowWidget, "raise", Qt::AutoConnection); } } - QMetaObject::invokeMethod(_windowWidget, "setVisible", Qt::BlockingQueuedConnection, Q_ARG(bool, visible)); + QMetaObject::invokeMethod(_windowWidget, "setVisible", Qt::AutoConnection, Q_ARG(bool, visible)); } void WebWindowClass::setURL(const QString& url) { if (QThread::currentThread() != thread()) { - QMetaObject::invokeMethod(this, "setURL", Qt::BlockingQueuedConnection, Q_ARG(QString, url)); + QMetaObject::invokeMethod(this, "setURL", Qt::AutoConnection, Q_ARG(QString, url)); return; } _webView->setUrl(url); } void WebWindowClass::raise() { - QMetaObject::invokeMethod(_windowWidget, "raise", Qt::BlockingQueuedConnection); + QMetaObject::invokeMethod(_windowWidget, "raise", Qt::AutoConnection); } QScriptValue WebWindowClass::constructor(QScriptContext* context, QScriptEngine* engine) { diff --git a/interface/src/ui/PreferencesDialog.cpp b/interface/src/ui/PreferencesDialog.cpp index 4a9165ae44..ebb7777d27 100644 --- a/interface/src/ui/PreferencesDialog.cpp +++ b/interface/src/ui/PreferencesDialog.cpp @@ -21,12 +21,12 @@ #include "MainWindow.h" #include "LODManager.h" #include "Menu.h" -#include "ModelsBrowser.h" #include "PreferencesDialog.h" #include "Snapshot.h" #include "UserActivityLogger.h" #include "UIUtil.h" + const int PREFERENCES_HEIGHT_PADDING = 20; PreferencesDialog::PreferencesDialog(QWidget* parent) : @@ -46,6 +46,11 @@ PreferencesDialog::PreferencesDialog(QWidget* parent) : connect(ui.buttonBrowseScriptsLocation, &QPushButton::clicked, this, &PreferencesDialog::openScriptsLocationBrowser); connect(ui.buttonReloadDefaultScripts, &QPushButton::clicked, Application::getInstance(), &Application::loadDefaultScripts); + + + connect(Application::getInstance(), &Application::faceURLChanged, this, &PreferencesDialog::faceURLChanged); + connect(Application::getInstance(), &Application::skeletonURLChanged, this, &PreferencesDialog::skeletonURLChanged); + // move dialog to left side move(parentWidget()->geometry().topLeft()); setFixedHeight(parentWidget()->size().height() - PREFERENCES_HEIGHT_PADDING); @@ -53,9 +58,19 @@ PreferencesDialog::PreferencesDialog(QWidget* parent) : UIUtil::scaleWidgetFontSizes(this); } +void PreferencesDialog::faceURLChanged(const QString& newValue) { + ui.faceURLEdit->setText(newValue); +} + +void PreferencesDialog::skeletonURLChanged(const QString& newValue) { + ui.skeletonURLEdit->setText(newValue); +} + void PreferencesDialog::accept() { savePreferences(); close(); + delete _marketplaceWindow; + _marketplaceWindow = NULL; } void PreferencesDialog::setHeadUrl(QString modelUrl) { @@ -67,15 +82,19 @@ void PreferencesDialog::setSkeletonUrl(QString modelUrl) { } void PreferencesDialog::openHeadModelBrowser() { - ModelsBrowser modelBrowser(FSTReader::HEAD_MODEL); - connect(&modelBrowser, &ModelsBrowser::selected, this, &PreferencesDialog::setHeadUrl); - modelBrowser.browse(); + auto MARKETPLACE_URL = "https://metaverse.highfidelity.com/marketplace?category=avatars"; + if (!_marketplaceWindow) { + _marketplaceWindow = new WebWindowClass("Marketplace", MARKETPLACE_URL, 900, 700, false); + } + _marketplaceWindow->setVisible(true); } void PreferencesDialog::openBodyModelBrowser() { - ModelsBrowser modelBrowser(FSTReader::HEAD_AND_BODY_MODEL); - connect(&modelBrowser, &ModelsBrowser::selected, this, &PreferencesDialog::setSkeletonUrl); - modelBrowser.browse(); + auto MARKETPLACE_URL = "https://metaverse.highfidelity.com/marketplace?category=avatars"; + if (!_marketplaceWindow) { + _marketplaceWindow = new WebWindowClass("Marketplace", MARKETPLACE_URL, 900, 700, false); + } + _marketplaceWindow->setVisible(true); } void PreferencesDialog::openSnapshotLocationBrowser() { @@ -196,7 +215,7 @@ void PreferencesDialog::savePreferences() { QUrl faceModelURL(ui.faceURLEdit->text()); QString faceModelURLString = faceModelURL.toString(); if (faceModelURLString != _faceURLString) { - if (faceModelURLString.isEmpty() || faceModelURLString.toLower().endsWith(".fst")) { + if (faceModelURLString.isEmpty() || faceModelURLString.toLower().contains(".fst")) { // change the faceModelURL in the profile, it will also update this user's BlendFace myAvatar->setFaceModelURL(faceModelURL); UserActivityLogger::getInstance().changedModel("head", faceModelURLString); @@ -209,7 +228,7 @@ void PreferencesDialog::savePreferences() { QUrl skeletonModelURL(ui.skeletonURLEdit->text()); QString skeletonModelURLString = skeletonModelURL.toString(); if (skeletonModelURLString != _skeletonURLString) { - if (skeletonModelURLString.isEmpty() || skeletonModelURLString.toLower().endsWith(".fst")) { + if (skeletonModelURLString.isEmpty() || skeletonModelURLString.toLower().contains(".fst")) { // change the skeletonModelURL in the profile, it will also update this user's Body myAvatar->setSkeletonModelURL(skeletonModelURL); UserActivityLogger::getInstance().changedModel("skeleton", skeletonModelURLString); diff --git a/interface/src/ui/PreferencesDialog.h b/interface/src/ui/PreferencesDialog.h index ddacaa7127..4daa2d9696 100644 --- a/interface/src/ui/PreferencesDialog.h +++ b/interface/src/ui/PreferencesDialog.h @@ -17,6 +17,8 @@ #include #include +#include "scripting/WebWindowClass.h" + class PreferencesDialog : public QDialog { Q_OBJECT @@ -36,6 +38,8 @@ private: QString _faceURLString; QString _skeletonURLString; QString _displayNameString; + + WebWindowClass* _marketplaceWindow = NULL; private slots: void accept(); @@ -43,6 +47,8 @@ private slots: void setSkeletonUrl(QString modelUrl); void openSnapshotLocationBrowser(); void openScriptsLocationBrowser(); + void faceURLChanged(const QString& newValue); + void skeletonURLChanged(const QString& newValue); }; From b7f0be761cf4b066c44014a9db26cf63ecb5161d Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Tue, 31 Mar 2015 16:27:09 -0700 Subject: [PATCH 4/8] gun buildings fall on creation, dice stops correctly --- examples/controllers/hydra/gun.js | 4 ++-- examples/dice.js | 2 +- libraries/physics/src/CharacterController.cpp | 10 +++++++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/examples/controllers/hydra/gun.js b/examples/controllers/hydra/gun.js index 8bea5d623e..9a00e181f6 100644 --- a/examples/controllers/hydra/gun.js +++ b/examples/controllers/hydra/gun.js @@ -282,7 +282,7 @@ function makePlatform(gravity, scale, size) { z: pos.z - (separation * size / 2.0) + z * separation }, dimensions: dimensions, color: { red: Math.random() * 255, green: Math.random() * 255, blue: Math.random() * 255 }, - velocity: { x: 0, y: 0, z: 0 }, + velocity: { x: 0, y: 0.05, z: 0 }, gravity: { x: 0, y: gravity, z: 0 }, lifetime: TARGET_LIFE, damping: 0.1, @@ -297,7 +297,7 @@ function makePlatform(gravity, scale, size) { type: "Box", position: { x: pos.x, y: pos.y - separation / 2.0, z: pos.z }, dimensions: { x: 2.0 * separation * size, y: separation / 2.0, z: 2.0 * separation * size }, - color: { red: 128, green: 128, blue: 128 }, + color: { red: 100, green: 100, blue: 100 }, lifetime: TARGET_LIFE }); diff --git a/examples/dice.js b/examples/dice.js index 2aefcf90fe..823ad1cb9b 100644 --- a/examples/dice.js +++ b/examples/dice.js @@ -92,7 +92,7 @@ function mousePressEvent(event) { var clickedText = false; var clickedOverlay = Overlays.getOverlayAtPoint({x: event.x, y: event.y}); if (clickedOverlay == offButton) { - deleteDice(); + Script.stop(); } else if (clickedOverlay == diceButton) { var HOW_HARD = 2.0; var position = Vec3.sum(Camera.getPosition(), Quat.getFront(Camera.getOrientation())); diff --git a/libraries/physics/src/CharacterController.cpp b/libraries/physics/src/CharacterController.cpp index 09c6b5599f..808d984f72 100644 --- a/libraries/physics/src/CharacterController.cpp +++ b/libraries/physics/src/CharacterController.cpp @@ -212,6 +212,9 @@ btVector3 CharacterController::perpindicularComponent(const btVector3& direction } const btVector3 LOCAL_UP_AXIS(0.0f, 1.0f, 0.0f); +const float DEFAULT_GRAVITY = 3.5f; +const float TERMINAL_VELOCITY = 55.0f; +const float JUMP_SPEED = 2.5f; CharacterController::CharacterController(AvatarData* avatarData) { assert(avatarData); @@ -226,9 +229,9 @@ CharacterController::CharacterController(AvatarData* avatarData) { _velocityTimeInterval = 0.0f; _verticalVelocity = 0.0f; _verticalOffset = 0.0f; - _gravity = 5.0f; // slower than Earth's - _maxFallSpeed = 55.0f; // Terminal velocity of a sky diver in m/s. - _jumpSpeed = 5.0f; + _gravity = DEFAULT_GRAVITY; // slower than Earth's + _maxFallSpeed = TERMINAL_VELOCITY; // Terminal velocity of a sky diver in m/s. + _jumpSpeed = JUMP_SPEED; _isOnGround = false; _isJumping = false; _isHovering = true; @@ -343,6 +346,7 @@ bool CharacterController::recoverFromPenetration(btCollisionWorld* collisionWorl return penetration; } + void CharacterController::scanDown(btCollisionWorld* world) { // we test with downward raycast and if we don't find floor close enough then turn on "hover" btKinematicClosestNotMeRayResultCallback callback(_ghostObject); From 8114fdd1e2e9ef7732149f940b7a6ea179d8a200 Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Tue, 31 Mar 2015 21:51:50 -0700 Subject: [PATCH 5/8] move button locations, names some constants in avatar controller --- examples/dice.js | 21 ++++++++++++------- libraries/physics/src/CharacterController.cpp | 4 ++-- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/examples/dice.js b/examples/dice.js index 823ad1cb9b..d27de904d7 100644 --- a/examples/dice.js +++ b/examples/dice.js @@ -24,20 +24,24 @@ HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; var rollSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/dice/diceRoll.wav"); var screenSize = Controller.getViewportDimensions(); + +var BUTTON_SIZE = 32; +var PADDING = 3; + var offButton = Overlays.addOverlay("image", { - x: screenSize.x - 48, - y: 96, - width: 32, - height: 32, + x: screenSize.x / 2 - BUTTON_SIZE, + y: screenSize.y- (BUTTON_SIZE + PADDING), + width: BUTTON_SIZE, + height: BUTTON_SIZE, imageURL: HIFI_PUBLIC_BUCKET + "images/close.png", color: { red: 255, green: 255, blue: 255}, alpha: 1 }); var diceButton = Overlays.addOverlay("image", { - x: screenSize.x - 48, - y: 130, - width: 32, - height: 32, + x: screenSize.x / 2 + PADDING, + y: screenSize.y - (BUTTON_SIZE + PADDING), + width: BUTTON_SIZE, + height: BUTTON_SIZE, imageURL: HIFI_PUBLIC_BUCKET + "images/die.png", color: { red: 255, green: 255, blue: 255}, alpha: 1 @@ -48,6 +52,7 @@ var LIFETIME = 300; // NOTE: angularVelocity is in radians/sec var MAX_ANGULAR_SPEED = Math.PI; + function shootDice(position, velocity) { for (var i = 0; i < NUMBER_OF_DICE; i++) { dice.push(Entities.addEntity( diff --git a/libraries/physics/src/CharacterController.cpp b/libraries/physics/src/CharacterController.cpp index 2657e28bd3..f8c8e31ece 100755 --- a/libraries/physics/src/CharacterController.cpp +++ b/libraries/physics/src/CharacterController.cpp @@ -212,9 +212,9 @@ btVector3 CharacterController::perpindicularComponent(const btVector3& direction } const btVector3 LOCAL_UP_AXIS(0.0f, 1.0f, 0.0f); -const float DEFAULT_GRAVITY = 3.5f; +const float DEFAULT_GRAVITY = 5.0f; const float TERMINAL_VELOCITY = 55.0f; -const float JUMP_SPEED = 2.5f; +const float JUMP_SPEED = 5.0f; CharacterController::CharacterController(AvatarData* avatarData) { assert(avatarData); From 9642bd199d4943caa0742072f3294f893f0e96e4 Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Tue, 31 Mar 2015 22:12:06 -0700 Subject: [PATCH 6/8] Buttons at bottom --- examples/controllers/hydra/gun.js | 57 +++++++++++++++++-------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/examples/controllers/hydra/gun.js b/examples/controllers/hydra/gun.js index 9a00e181f6..2fdf26bfeb 100644 --- a/examples/controllers/hydra/gun.js +++ b/examples/controllers/hydra/gun.js @@ -90,44 +90,49 @@ var score = 0; var bulletID = false; var targetID = false; -// Create a reticle image in center of screen +// Create overlay buttons and reticle + +var BUTTON_SIZE = 32; +var PADDING = 3; +var NUM_BUTTONS = 3; + var screenSize = Controller.getViewportDimensions(); +var startX = screenSize.x / 2 - (NUM_BUTTONS * (BUTTON_SIZE + PADDING)) / 2; var reticle = Overlays.addOverlay("image", { - x: screenSize.x / 2 - 16, - y: screenSize.y / 2 - 16, - width: 32, - height: 32, + x: screenSize.x / 2 - (BUTTON_SIZE / 2), + y: screenSize.y / 2 - (BUTTON_SIZE / 2), + width: BUTTON_SIZE, + height: BUTTON_SIZE, imageURL: HIFI_PUBLIC_BUCKET + "images/billiardsReticle.png", - color: { red: 255, green: 255, blue: 255}, alpha: 1 }); var offButton = Overlays.addOverlay("image", { - x: screenSize.x - 48, - y: 96, - width: 32, - height: 32, - imageURL: HIFI_PUBLIC_BUCKET + "images/close.png", - color: { red: 255, green: 255, blue: 255}, + x: startX, + y: screenSize.y - (BUTTON_SIZE + PADDING), + width: BUTTON_SIZE, + height: BUTTON_SIZE, + imageURL: HIFI_PUBLIC_BUCKET + "images/close.png", + alpha: 1 + }); + +startX += BUTTON_SIZE + PADDING; +var platformButton = Overlays.addOverlay("image", { + x: startX, + y: screenSize.y - (BUTTON_SIZE + PADDING), + width: BUTTON_SIZE, + height: BUTTON_SIZE, + imageURL: HIFI_PUBLIC_BUCKET + "images/city.png", alpha: 1 }); -var platformButton = Overlays.addOverlay("image", { - x: screenSize.x - 48, - y: 130, - width: 32, - height: 32, - imageURL: HIFI_PUBLIC_BUCKET + "images/city.png", - color: { red: 255, green: 255, blue: 255}, - alpha: 1 - }); +startX += BUTTON_SIZE + PADDING; var gridButton = Overlays.addOverlay("image", { - x: screenSize.x - 48, - y: 164, - width: 32, - height: 32, + x: startX, + y: screenSize.y - (BUTTON_SIZE + PADDING), + width: BUTTON_SIZE, + height: BUTTON_SIZE, imageURL: HIFI_PUBLIC_BUCKET + "images/blocks.png", - color: { red: 255, green: 255, blue: 255}, alpha: 1 }); From 8514a39812f05481a83f145a4d797f779fcc12b8 Mon Sep 17 00:00:00 2001 From: Stojce Slavkovski Date: Wed, 1 Apr 2015 07:24:16 +0200 Subject: [PATCH 7/8] Use constants for URLs --- interface/src/ui/LoginDialog.cpp | 2 ++ interface/ui/loginDialog.ui | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/interface/src/ui/LoginDialog.cpp b/interface/src/ui/LoginDialog.cpp index 690489fdb2..e83b06e144 100644 --- a/interface/src/ui/LoginDialog.cpp +++ b/interface/src/ui/LoginDialog.cpp @@ -24,6 +24,7 @@ #include "LoginDialog.h" #include "UIUtil.h" +const QString CREATE_ACCOUNT_URL = NetworkingConstants::METAVERSE_SERVER_URL.toString() + "/create"; const QString FORGOT_PASSWORD_URL = NetworkingConstants::METAVERSE_SERVER_URL.toString() + "/users/password/new"; LoginDialog::LoginDialog(QWidget* parent) : @@ -45,6 +46,7 @@ LoginDialog::LoginDialog(QWidget* parent) : this, &LoginDialog::close); UIUtil::scaleWidgetFontSizes(this); + _ui->accountLabel->setText(_ui->accountLabel->text().arg(CREATE_ACCOUNT_URL, FORGOT_PASSWORD_URL)); // Initialize toggle connection toggleQAction(); diff --git a/interface/ui/loginDialog.ui b/interface/ui/loginDialog.ui index 20d42f3799..e203699155 100644 --- a/interface/ui/loginDialog.ui +++ b/interface/ui/loginDialog.ui @@ -447,7 +447,7 @@ border-radius: 4px; padding-top: 1px; - + Helvetica,Arial,sans-serif @@ -460,8 +460,8 @@ a { text-decoration: none; color: #267077; margin:0;padding:0;} #create {font-weight:bold;} p {margin:5px 0;} </style> -<p><a id="create" href="https://metaverse.highfidelity.com/signup">Create account</a></p> -<p><a href="https://metaverse.highfidelity.com/users/password/new">Recover password</a></p> +<p><a id="create" href="%1">Create account</a></p> +<p><a href="%2">Recover password</a></p> true From da9a8e8a97c9ac0500a1444cb572e70a735f1e8b Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Wed, 1 Apr 2015 09:27:58 -0700 Subject: [PATCH 8/8] CR feedback --- interface/src/ui/PreferencesDialog.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/interface/src/ui/PreferencesDialog.cpp b/interface/src/ui/PreferencesDialog.cpp index ebb7777d27..bd32fc7c34 100644 --- a/interface/src/ui/PreferencesDialog.cpp +++ b/interface/src/ui/PreferencesDialog.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include "Application.h" #include "MainWindow.h" @@ -82,17 +83,21 @@ void PreferencesDialog::setSkeletonUrl(QString modelUrl) { } void PreferencesDialog::openHeadModelBrowser() { - auto MARKETPLACE_URL = "https://metaverse.highfidelity.com/marketplace?category=avatars"; + auto MARKETPLACE_URL = NetworkingConstants::METAVERSE_SERVER_URL.toString() + "/marketplace?category=avatars"; + auto WIDTH = 900; + auto HEIGHT = 700; if (!_marketplaceWindow) { - _marketplaceWindow = new WebWindowClass("Marketplace", MARKETPLACE_URL, 900, 700, false); + _marketplaceWindow = new WebWindowClass("Marketplace", MARKETPLACE_URL, WIDTH, HEIGHT, false); } _marketplaceWindow->setVisible(true); } void PreferencesDialog::openBodyModelBrowser() { - auto MARKETPLACE_URL = "https://metaverse.highfidelity.com/marketplace?category=avatars"; + auto MARKETPLACE_URL = NetworkingConstants::METAVERSE_SERVER_URL.toString() + "/marketplace?category=avatars"; + auto WIDTH = 900; + auto HEIGHT = 700; if (!_marketplaceWindow) { - _marketplaceWindow = new WebWindowClass("Marketplace", MARKETPLACE_URL, 900, 700, false); + _marketplaceWindow = new WebWindowClass("Marketplace", MARKETPLACE_URL, WIDTH, HEIGHT, false); } _marketplaceWindow->setVisible(true); } @@ -211,11 +216,13 @@ void PreferencesDialog::savePreferences() { UserActivityLogger::getInstance().changedDisplayName(displayNameStr); shouldDispatchIdentityPacket = true; } + + auto AVATAR_FILE_EXTENSION = ".fst"; QUrl faceModelURL(ui.faceURLEdit->text()); QString faceModelURLString = faceModelURL.toString(); if (faceModelURLString != _faceURLString) { - if (faceModelURLString.isEmpty() || faceModelURLString.toLower().contains(".fst")) { + if (faceModelURLString.isEmpty() || faceModelURLString.toLower().contains(AVATAR_FILE_EXTENSION)) { // change the faceModelURL in the profile, it will also update this user's BlendFace myAvatar->setFaceModelURL(faceModelURL); UserActivityLogger::getInstance().changedModel("head", faceModelURLString); @@ -228,7 +235,7 @@ void PreferencesDialog::savePreferences() { QUrl skeletonModelURL(ui.skeletonURLEdit->text()); QString skeletonModelURLString = skeletonModelURL.toString(); if (skeletonModelURLString != _skeletonURLString) { - if (skeletonModelURLString.isEmpty() || skeletonModelURLString.toLower().contains(".fst")) { + if (skeletonModelURLString.isEmpty() || skeletonModelURLString.toLower().contains(AVATAR_FILE_EXTENSION)) { // change the skeletonModelURL in the profile, it will also update this user's Body myAvatar->setSkeletonModelURL(skeletonModelURL); UserActivityLogger::getInstance().changedModel("skeleton", skeletonModelURLString);