"));
-
- var currentDomainIDType = getCurrentDomainIDType();
- if (currentDomainIDType === DOMAIN_ID_TYPE_TEMP) {
- var warning = "
";
- warning += "If you choose a place name it will replace your current temporary place name.";
- warning += "
";
- modal_body.append(warning);
- }
-
- // setup a select box for the returned places
- modal_body.append($("
");
- _.each(data.data.places, function(place) {
- places_by_id[place.id] = place;
- place_select.append("
");
- })
- modal_body.append(place_select);
- modal_body.append($("
This place name already points to a place or path. Saving this would overwrite the previous settings associated with it.
"));
-
- if (forcePathTo === undefined || forcePathTo === null) {
- var path = "
";
- modal_body.append($(path));
- }
-
- var place_select = modal_body.find("#place-name-select")
- place_select.change(function(ev) {
- var warning = modal_body.find("#place-name-warning");
- var place = places_by_id[$(this).val()];
- if (place === undefined || place.pointee === null) {
- warning.hide();
- } else {
- warning.show();
+ function loadPlaces() {
+ $.ajax("/api/places", {
+ dataType: 'json',
+ jsonp: false,
+ success: function(data) {
+ if (data.status == 'success') {
+ var modal_buttons = {
+ cancel: {
+ label: Strings.ADD_PLACE_CANCEL_BUTTON,
+ className: 'add-place-cancel-button btn-default'
}
- });
- place_select.trigger('change');
+ };
- modal_buttons["success"] = {
- label: Strings.ADD_PLACE_CONFIRM_BUTTON,
- className: 'add-place-confirm-button btn btn-primary',
- callback: function() {
- var placeID = $('#place-name-select').val();
- // set the place ID on the form
- $(Settings.place_ID_SELECTOR).val(placeID).change();
+ var dialog;
+ var modal_body;
- if (forcePathTo === undefined || forcePathTo === null) {
- var placePath = $('#place-path-input').val();
+ if (data.data.places.length) {
+ var places_by_id = {};
+
+ modal_body = $('
');
+
+ modal_body.append($("
Choose a place name that you own or register a new place name
"));
+
+ var currentDomainIDType = getCurrentDomainIDType();
+ if (currentDomainIDType === DOMAIN_ID_TYPE_TEMP) {
+ var warning = "
";
+ warning += "If you choose a place name it will replace your current temporary place name.";
+ warning += "
";
+ modal_body.append(warning);
+ }
+
+ // setup a select box for the returned places
+ modal_body.append($("
"));
+ place_select = $("
");
+ _.each(data.data.places, function(place) {
+ places_by_id[place.id] = place;
+ place_select.append("
");
+ })
+ modal_body.append(place_select);
+ modal_body.append($("
This place name already points to a place or path. Saving this would overwrite the previous settings associated with it.
"));
+
+ if (forcePathTo === undefined || forcePathTo === null) {
+ var path = "
";
+ path += "";
+ path += "";
+ path += "
";
+ modal_body.append($(path));
+ }
+
+ var place_select = modal_body.find("#place-name-select")
+ place_select.change(function(ev) {
+ var warning = modal_body.find("#place-name-warning");
+ var place = places_by_id[$(this).val()];
+ if (place === undefined || place.pointee === null) {
+ warning.hide();
} else {
- var placePath = forcePathTo;
+ warning.show();
}
+ });
+ place_select.trigger('change');
- $('.add-place-confirm-button').attr('disabled', 'disabled');
- $('.add-place-confirm-button').html(Strings.ADD_PLACE_CONFIRM_BUTTON_PENDING);
- $('.add-place-cancel-button').attr('disabled', 'disabled');
+ modal_buttons["success"] = {
+ label: Strings.ADD_PLACE_CONFIRM_BUTTON,
+ className: 'add-place-confirm-button btn btn-primary',
+ callback: function() {
+ var placeID = $('#place-name-select').val();
+ // set the place ID on the form
+ $(Settings.place_ID_SELECTOR).val(placeID).change();
- function finalizeSaveDomainID(domainID) {
- var jsonSettings = {
- metaverse: {
- id: domainID
+ if (forcePathTo === undefined || forcePathTo === null) {
+ var placePath = $('#place-path-input').val();
+ } else {
+ var placePath = forcePathTo;
+ }
+
+ $('.add-place-confirm-button').attr('disabled', 'disabled');
+ $('.add-place-confirm-button').html(Strings.ADD_PLACE_CONFIRM_BUTTON_PENDING);
+ $('.add-place-cancel-button').attr('disabled', 'disabled');
+
+ function finalizeSaveDomainID(domainID) {
+ var jsonSettings = {
+ metaverse: {
+ id: domainID
+ }
+ }
+ var dialog = showLoadingDialog("Waiting for Domain Server to restart...");
+ $.ajax('/settings.json', {
+ data: JSON.stringify(jsonSettings),
+ contentType: 'application/json',
+ type: 'POST'
+ }).done(function(data) {
+ if (data.status == "success") {
+ waitForDomainServerRestart(function() {
+ dialog.modal('hide');
+ if (onSuccessfullyAdded) {
+ onSuccessfullyAdded(places_by_id[placeID].name, domainID);
+ }
+ });
+ } else {
+ bootbox.alert("Failed to add place");
+ }
+ }).fail(function() {
+ bootbox.alert("Failed to add place");
+ });
+ }
+
+ // If domainID is not specified, the current domain id will be used.
+ function finishSettingUpPlace(domainID) {
+ sendUpdatePlaceRequest(
+ placeID,
+ placePath,
+ domainID,
+ false,
+ function(data) {
+ dialog.modal('hide')
+ if (domainID) {
+ $(Settings.DOMAIN_ID_SELECTOR).val(domainID).change();
+ finalizeSaveDomainID(domainID);
+ } else {
+ if (onSuccessfullyAdded) {
+ onSuccessfullyAdded(places_by_id[placeID].name);
+ }
+ }
+ },
+ function(data) {
+ $('.add-place-confirm-button').removeAttr('disabled');
+ $('.add-place-confirm-button').html(Strings.ADD_PLACE_CONFIRM_BUTTON);
+ $('.add-place-cancel-button').removeAttr('disabled');
+ bootbox.alert(Strings.ADD_PLACE_UNKNOWN_ERROR);
+ }
+ );
+ }
+
+ function maybeCreateNewDomainID() {
+ console.log("Maybe creating domain id", currentDomainIDType)
+ if (currentDomainIDType === DOMAIN_ID_TYPE_FULL) {
+ finishSettingUpPlace();
+ } else {
+ sendCreateDomainRequest(function(domainID) {
+ console.log("Created domain", domainID);
+ finishSettingUpPlace(domainID);
+ }, function() {
+ $('.add-place-confirm-button').removeAttr('disabled');
+ $('.add-place-confirm-button').html(Strings.ADD_PLACE_CONFIRM_BUTTON);
+ $('.add-place-cancel-button').removeAttr('disabled');
+ bootbox.alert(Strings.ADD_PLACE_UNKNOWN_ERROR);
+ bootbox.alert("FAIL");
+ });
}
}
- var dialog = showLoadingDialog("Waiting for Domain Server to restart...");
- $.ajax('/settings.json', {
- data: JSON.stringify(jsonSettings),
- contentType: 'application/json',
- type: 'POST'
- }).done(function(data) {
- if (data.status == "success") {
- waitForDomainServerRestart(function() {
- dialog.modal('hide');
- if (onSuccessfullyAdded) {
- onSuccessfullyAdded(places_by_id[placeID].name, domainID);
- }
- });
- } else {
- bootbox.alert("Failed to add place");
- }
- }).fail(function() {
- bootbox.alert("Failed to add place");
- });
- }
- function finishSettingUpPlace(domainID) {
- sendUpdatePlaceRequest(
- placeID,
- placePath,
- domainID,
- false,
- function(data) {
- $(Settings.DOMAIN_ID_SELECTOR).val(domainID).change();
- dialog.modal('hide')
- if (domainID) {
- finalizeSaveDomainID(domainID);
- } else {
- if (onSuccessfullyAdded) {
- onSuccessfullyAdded(places_by_id[placeID].name);
- }
- }
- },
- function(data) {
- $('.add-place-confirm-button').removeAttr('disabled');
- $('.add-place-confirm-button').html(Strings.ADD_PLACE_CONFIRM_BUTTON);
- $('.add-place-cancel-button').removeAttr('disabled');
- bootbox.alert(Strings.ADD_PLACE_UNKNOWN_ERROR);
- }
- );
- }
+ maybeCreateNewDomainID();
- if (currentDomainIDType === DOMAIN_ID_TYPE_FULL) {
- finishSettingUpPlace();
- } else {
- sendCreateDomainRequest(function(domainID) {
- console.log("Created domain", domainID);
- finishSettingUpPlace(domainID);
- }, function() {
- $('.add-place-confirm-button').removeAttr('disabled');
- $('.add-place-confirm-button').html(Strings.ADD_PLACE_CONFIRM_BUTTON);
- $('.add-place-cancel-button').removeAttr('disabled');
- bootbox.alert(Strings.ADD_PLACE_UNKNOWN_ERROR);
- bootbox.alert("FAIL");
- });
+ return false;
}
-
- return false;
}
+ } else {
+ modal_buttons["success"] = {
+ label: Strings.ADD_PLACE_NO_PLACES_BUTTON,
+ callback: function() {
+ window.open(URLs.METAVERSE_URL + "/user/places", '_blank');
+ }
+ }
+ modal_body = Strings.ADD_PLACE_NO_PLACES_MESSAGE;
}
+
+ dialog = bootbox.dialog({
+ title: Strings.ADD_PLACE_TITLE,
+ message: modal_body,
+ closeButton: false,
+ buttons: modal_buttons
+ });
} else {
- modal_buttons["success"] = {
- label: Strings.ADD_PLACE_NO_PLACES_BUTTON,
- callback: function() {
- window.open(URLs.METAVERSE_URL + "/user/places", '_blank');
- }
- }
- modal_body = Strings.ADD_PLACE_NO_PLACES_MESSAGE;
+ bootbox.alert(Strings.ADD_PLACE_UNABLE_TO_LOAD_ERROR);
}
-
- dialog = bootbox.dialog({
- title: Strings.ADD_PLACE_TITLE,
- message: modal_body,
- closeButton: false,
- buttons: modal_buttons
- });
- } else {
+ },
+ error: function() {
bootbox.alert(Strings.ADD_PLACE_UNABLE_TO_LOAD_ERROR);
+ },
+ complete: function() {
+ loadingDialog.modal('hide');
}
- },
- error: function() {
- bootbox.alert(Strings.ADD_PLACE_UNABLE_TO_LOAD_ERROR);
- },
- complete: function() {
- loadingDialog.modal('hide');
- }
- });
+ });
+ }
+
+ var domainType = getCurrentDomainIDType();
+ if (domainType !== DOMAIN_ID_TYPE_UNKNOWN) {
+ loadPlaces();
+ } else {
+ getDomainFromAPI(function(data) {
+ if (data.status === 'success') {
+ var domainType = getCurrentDomainIDType();
+ loadPlaces();
+ } else {
+ loadingDialog.modal('hide');
+ bootbox.confirm("We were not able to load your domain information from the Metaverse. Would you like to retry?", function(response) {
+ if (response) {
+ chooseFromHighFidelityPlaces(accessToken, forcePathTo, onSuccessfullyAdded);
+ }
+ });
+ }
+ })
+ }
} else {
bootbox.alert({
diff --git a/domain-server/resources/web/settings/js/settings.js b/domain-server/resources/web/settings/js/settings.js
index 1224b724da..7f99b367a3 100644
--- a/domain-server/resources/web/settings/js/settings.js
+++ b/domain-server/resources/web/settings/js/settings.js
@@ -980,20 +980,6 @@ function placeTableRowForPlaceObject(place) {
return placeTableRow(place.name, placePathOrIndex, false, place.id);
}
-function getDomainFromAPI(callback) {
- var domainID = Settings.data.values.metaverse.id;
- $.ajax({
- url: "/api/domains/" + domainID,
- dataType: 'json',
- success: function(data) {
- callback(data);
- },
- error: function() {
- callback({ status: 'fail' });
- }
- });
-}
-
function reloadDomainInfo() {
$('#' + Settings.PLACES_TABLE_ID + " tbody tr").not('.headers').remove();
@@ -1010,7 +996,6 @@ function reloadDomainInfo() {
// check if we have owner_places (for a real domain) or a name (for a temporary domain)
if (data.status == "success") {
$('.domain-loading-hide').show();
- DomainInfo = data.domain;
if (data.domain.owner_places) {
// add a table row for each of these names
_.each(data.domain.owner_places, function(place){
@@ -1043,7 +1028,6 @@ function reloadDomainInfo() {
appendAddButtonToPlacesTable();
} else {
- DomainInfo = null;
$('.domain-loading-error').show();
}
})
diff --git a/domain-server/resources/web/wizard/js/wizard.js b/domain-server/resources/web/wizard/js/wizard.js
index 24a82402a6..1af3f305b7 100644
--- a/domain-server/resources/web/wizard/js/wizard.js
+++ b/domain-server/resources/web/wizard/js/wizard.js
@@ -58,6 +58,7 @@ $(document).ready(function(){
reloadSettings(function(success) {
if (success) {
+ getDomainFromAPI();
setupWizardSteps();
updatePlaceNameDisplay();
updateUsernameDisplay();
diff --git a/domain-server/src/DomainServerSettingsManager.cpp b/domain-server/src/DomainServerSettingsManager.cpp
index 43262a1a81..6c50e5245d 100644
--- a/domain-server/src/DomainServerSettingsManager.cpp
+++ b/domain-server/src/DomainServerSettingsManager.cpp
@@ -29,6 +29,7 @@
#include
#include
#include
+#include
#include //for KillAvatarReason
#include
#include "DomainServerNodeData.h"
@@ -43,12 +44,7 @@ const QString DESCRIPTION_COLUMNS_KEY = "columns";
const QString SETTINGS_VIEWPOINT_KEY = "viewpoint";
-static Setting::Handle JSON_SETTING_VERSION("json-settings/version", 0.0);
-
-DomainServerSettingsManager::DomainServerSettingsManager() :
- _descriptionArray(),
- _configMap()
-{
+DomainServerSettingsManager::DomainServerSettingsManager() {
// load the description object from the settings description
QFile descriptionFile(QCoreApplication::applicationDirPath() + SETTINGS_DESCRIPTION_RELATIVE_PATH);
descriptionFile.open(QIODevice::ReadOnly);
@@ -100,12 +96,34 @@ void DomainServerSettingsManager::processSettingsRequestPacket(QSharedPointer JSON_SETTING_VERSION("json-settings/version", 0.0);
+ if (JSON_SETTING_VERSION.isSet()) {
+ auto version = JSON_SETTING_VERSION.get();
+ *versionVariant = version;
+ persistToFile();
+ QFile::remove(settingsFilename());
+ }
+ }
// What settings version were we before and what are we using now?
// Do we need to do any re-mapping?
- double oldVersion = JSON_SETTING_VERSION.get();
+ double oldVersion = versionVariant->toDouble();
if (oldVersion != _descriptionVersion) {
const QString ALLOWED_USERS_SETTINGS_KEYPATH = "security.allowed_users";
@@ -137,12 +155,6 @@ void DomainServerSettingsManager::setupConfigMap(const QStringList& argumentList
QVariant* restrictedAccess = _configMap.valueForKeyPath(RESTRICTED_ACCESS_SETTINGS_KEYPATH, true);
*restrictedAccess = QVariant(true);
-
- // write the new settings to the json file
- persistToFile();
-
- // reload the master and user config so that the merged config is right
- _configMap.loadMasterAndUserConfig(_argumentList);
}
}
@@ -172,12 +184,6 @@ void DomainServerSettingsManager::setupConfigMap(const QStringList& argumentList
*entityServerVariant = entityServerMap;
}
-
- // write the new settings to the json file
- persistToFile();
-
- // reload the master and user config so that the merged config is right
- _configMap.loadMasterAndUserConfig(_argumentList);
}
}
@@ -195,12 +201,6 @@ void DomainServerSettingsManager::setupConfigMap(const QStringList& argumentList
qDebug() << "Migrating plaintext password to SHA256 hash in domain-server settings.";
*passwordVariant = QCryptographicHash::hash(plaintextPassword.toUtf8(), QCryptographicHash::Sha256).toHex();
-
- // write the new settings to file
- persistToFile();
-
- // reload the master and user config so the merged config is correct
- _configMap.loadMasterAndUserConfig(_argumentList);
}
}
@@ -283,19 +283,6 @@ void DomainServerSettingsManager::setupConfigMap(const QStringList& argumentList
packPermissions();
}
- if (oldVersion < 1.7) {
- // This was prior to the removal of the master config file
- // So we write the merged config to the user config file, and stop reading from the user config file
-
- qDebug() << "Migrating merged config to user config file. The master config file is deprecated.";
-
- // replace the user config by the merged config
- _configMap.getConfig() = _configMap.getMergedConfig();
-
- // persist the new config so the user config file has the correctly merged config
- persistToFile();
- }
-
if (oldVersion < 1.8) {
unpackPermissions();
// This was prior to addition of domain content replacement, add that to localhost permissions by default
@@ -316,16 +303,16 @@ void DomainServerSettingsManager::setupConfigMap(const QStringList& argumentList
QVariant* wizardCompletedOnce = _configMap.valueForKeyPath(WIZARD_COMPLETED_ONCE, true);
*wizardCompletedOnce = QVariant(true);
-
- // write the new settings to the json file
- persistToFile();
}
+
+ // write the current description version to our settings
+ *versionVariant = _descriptionVersion;
+
+ // write the new settings to the json file
+ persistToFile();
}
unpackPermissions();
-
- // write the current description version to our settings
- JSON_SETTING_VERSION.set(_descriptionVersion);
}
QVariantMap& DomainServerSettingsManager::getDescriptorsMap() {
@@ -1289,9 +1276,6 @@ bool DomainServerSettingsManager::recurseJSONObjectAndOverwriteSettings(const QJ
}
}
- // re-merge the user and master configs after a settings change
- _configMap.mergeMasterAndUserConfigs();
-
return needRestart;
}
diff --git a/interface/resources/qml/hifi/NameCard.qml b/interface/resources/qml/hifi/NameCard.qml
index fcfff02b72..775bae7969 100644
--- a/interface/resources/qml/hifi/NameCard.qml
+++ b/interface/resources/qml/hifi/NameCard.qml
@@ -432,7 +432,8 @@ Item {
anchors.verticalCenter: nameCardRemoveConnectionImage.verticalCenter
x: 240
onClicked: {
- AddressManager.goToUser(thisNameCard.userName);
+ console.log("Vist user button clicked."); // Remove after debugging.
+ AddressManager.goToUser(thisNameCard.userName, false);
UserActivityLogger.palAction("go_to_user", thisNameCard.userName);
}
}
@@ -594,7 +595,10 @@ Item {
// the avatar goes into fly mode rather than falling. However, that is not exposed to Javascript right now.
// FIXME: it would be nice if this used the same teleport steps and smoothing as in the teleport.js script.
// Note, however, that this script allows teleporting to a person in the air, while teleport.js is going to a grounded target.
+ // Position avatar 2 metres from the target in the direction that target avatar was facing.
MyAvatar.position = Vec3.sum(avatar.position, Vec3.multiplyQbyV(avatar.orientation, {x: 0, y: 0, z: -2}));
- MyAvatar.orientation = Quat.multiply(avatar.orientation, {y: 1});
+
+ // Rotate avatar on Y axis to face target avatar and cancel out any inherited roll and pitch.
+ MyAvatar.orientation = Quat.cancelOutRollAndPitch(Quat.multiply(avatar.orientation, {y: 1}));
}
}
diff --git a/interface/resources/qml/hifi/Pal.qml b/interface/resources/qml/hifi/Pal.qml
index 89f18e5ce2..efcf6ccfcf 100644
--- a/interface/resources/qml/hifi/Pal.qml
+++ b/interface/resources/qml/hifi/Pal.qml
@@ -827,7 +827,7 @@ Rectangle {
hoverEnabled: enabled
enabled: connectionsNameCard.selected && pal.activeTab == "connectionsTab"
onClicked: {
- AddressManager.goToUser(model.userName);
+ AddressManager.goToUser(model.userName, false);
UserActivityLogger.palAction("go_to_user", model.userName);
}
onEntered: connectionsLocationData.color = hifi.colors.blueHighlight;
diff --git a/interface/resources/qml/hifi/audio/Audio.qml b/interface/resources/qml/hifi/audio/Audio.qml
index 12c2ec1835..87ddce49ca 100644
--- a/interface/resources/qml/hifi/audio/Audio.qml
+++ b/interface/resources/qml/hifi/audio/Audio.qml
@@ -213,8 +213,8 @@ Rectangle {
anchors.right: parent.right
peak: model.peak;
anchors.verticalCenter: parent.verticalCenter
- visible: (bar.currentIndex === 1 && selectedHMD && isVR) ||
- (bar.currentIndex === 0 && selectedDesktop && !isVR) &&
+ visible: ((bar.currentIndex === 1 && isVR) ||
+ (bar.currentIndex === 0 && !isVR)) &&
Audio.devices.input.peakValuesAvailable;
}
}
diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp
index e8b800db69..4cf8ba6d4e 100644
--- a/interface/src/avatar/AvatarManager.cpp
+++ b/interface/src/avatar/AvatarManager.cpp
@@ -179,6 +179,12 @@ void AvatarManager::updateOtherAvatars(float deltaTime) {
const AvatarPriority& sortData = sortedAvatars.top();
const auto& avatar = std::static_pointer_cast(sortData.avatar);
+ bool ignoring = DependencyManager::get()->isPersonalMutingNode(avatar->getID());
+ if (ignoring) {
+ sortedAvatars.pop();
+ continue;
+ }
+
// for ALL avatars...
if (_shouldRender) {
avatar->ensureInScene(avatar, qApp->getMain3DScene());
diff --git a/libraries/networking/src/AddressManager.cpp b/libraries/networking/src/AddressManager.cpp
index 1a51440e91..b884dcba17 100644
--- a/libraries/networking/src/AddressManager.cpp
+++ b/libraries/networking/src/AddressManager.cpp
@@ -667,8 +667,11 @@ bool AddressManager::handleViewpoint(const QString& viewpointString, bool should
qCDebug(networking) << "Orientation parsed from lookup string is invalid. Will not use for location change.";
}
}
-
- emit locationChangeRequired(newPosition, orientationChanged, newOrientation, shouldFace);
+
+ emit locationChangeRequired(newPosition, orientationChanged,
+ LookupTrigger::VisitUserFromPAL ? cancelOutRollAndPitch(newOrientation): newOrientation,
+ shouldFace
+ );
} else {
qCDebug(networking) << "Could not jump to position from lookup string because it has an invalid value.";
@@ -732,13 +735,14 @@ bool AddressManager::setDomainInfo(const QString& hostname, quint16 port, Lookup
return hostChanged;
}
-void AddressManager::goToUser(const QString& username) {
+void AddressManager::goToUser(const QString& username, bool shouldMatchOrientation) {
QString formattedUsername = QUrl::toPercentEncoding(username);
- // for history storage handling we remember how this lookup was trigged - for a username it's always user input
+ // for history storage handling we remember how this lookup was triggered - for a username it's always user input
QVariantMap requestParams;
- requestParams.insert(LOOKUP_TRIGGER_KEY, static_cast(LookupTrigger::UserInput));
-
+ requestParams.insert(LOOKUP_TRIGGER_KEY, static_cast(
+ shouldMatchOrientation ? LookupTrigger::UserInput : LookupTrigger::VisitUserFromPAL
+ ));
// this is a username - pull the captured name and lookup that user's location
DependencyManager::get()->sendRequest(GET_USER_LOCATION.arg(formattedUsername),
AccountManagerAuth::Optional,
@@ -840,8 +844,8 @@ void AddressManager::addCurrentAddressToHistory(LookupTrigger trigger) {
// and do not but it into the back stack
_forwardStack.push(currentAddress());
} else {
- if (trigger == LookupTrigger::UserInput) {
- // anyime the user has manually looked up an address we know we should clear the forward stack
+ if (trigger == LookupTrigger::UserInput || trigger == LookupTrigger::VisitUserFromPAL) {
+ // anyime the user has actively triggered an address we know we should clear the forward stack
_forwardStack.clear();
emit goForwardPossible(false);
diff --git a/libraries/networking/src/AddressManager.h b/libraries/networking/src/AddressManager.h
index 366fc5dfab..2f3d896509 100644
--- a/libraries/networking/src/AddressManager.h
+++ b/libraries/networking/src/AddressManager.h
@@ -54,7 +54,8 @@ public:
DomainPathResponse,
Internal,
AttemptedRefresh,
- Suggestions
+ Suggestions,
+ VisitUserFromPAL
};
bool isConnected();
@@ -93,7 +94,7 @@ public slots:
void goToLocalSandbox(QString path = "", LookupTrigger trigger = LookupTrigger::StartupFromSettings) { handleUrl(SANDBOX_HIFI_ADDRESS + path, trigger); }
void goToEntry(LookupTrigger trigger = LookupTrigger::StartupFromSettings) { handleUrl(DEFAULT_HIFI_ADDRESS, trigger); }
- void goToUser(const QString& username);
+ void goToUser(const QString& username, bool shouldMatchOrientation = true);
void refreshPreviousLookup();
diff --git a/libraries/shared/src/HifiConfigVariantMap.cpp b/libraries/shared/src/HifiConfigVariantMap.cpp
index d0fb14e104..59f660feee 100644
--- a/libraries/shared/src/HifiConfigVariantMap.cpp
+++ b/libraries/shared/src/HifiConfigVariantMap.cpp
@@ -91,32 +91,6 @@ QVariantMap HifiConfigVariantMap::mergeCLParametersWithJSONConfig(const QStringL
return mergedMap;
}
-HifiConfigVariantMap::HifiConfigVariantMap() :
- _userConfigFilename(),
- _masterConfig(),
- _userConfig(),
- _mergedConfig()
-{
-
-}
-
-void HifiConfigVariantMap::loadMasterAndUserConfig(const QStringList& argumentList) {
- // check if there is a master config file
- const QString MASTER_CONFIG_FILE_OPTION = "--master-config";
-
- int masterConfigIndex = argumentList.indexOf(MASTER_CONFIG_FILE_OPTION);
- if (masterConfigIndex != -1) {
- QString masterConfigFilepath = argumentList[masterConfigIndex + 1];
-
- loadMapFromJSONFile(_masterConfig, masterConfigFilepath);
- }
-
- // load the user config - that method replace loadMasterAndUserConfig after the 1.7 migration
- loadConfig(argumentList);
-
- mergeMasterAndUserConfigs();
-}
-
void HifiConfigVariantMap::loadConfig(const QStringList& argumentList) {
// load the user config
const QString USER_CONFIG_FILE_OPTION = "--user-config";
@@ -172,14 +146,6 @@ void HifiConfigVariantMap::loadConfig(const QStringList& argumentList) {
loadMapFromJSONFile(_userConfig, _userConfigFilename);
}
-void HifiConfigVariantMap::mergeMasterAndUserConfigs() {
- // the merged config is initially matched to the master config
- _mergedConfig = _masterConfig;
-
- // then we merge in anything missing from the user config
- addMissingValuesToExistingMap(_mergedConfig, _userConfig);
-}
-
void HifiConfigVariantMap::loadMapFromJSONFile(QVariantMap& existingMap, const QString& filename) {
QFile configFile(filename);
diff --git a/libraries/shared/src/HifiConfigVariantMap.h b/libraries/shared/src/HifiConfigVariantMap.h
index cb6e92df96..ee248ec3d2 100644
--- a/libraries/shared/src/HifiConfigVariantMap.h
+++ b/libraries/shared/src/HifiConfigVariantMap.h
@@ -21,26 +21,19 @@ class HifiConfigVariantMap {
public:
static QVariantMap mergeCLParametersWithJSONConfig(const QStringList& argumentList);
- HifiConfigVariantMap();
- void loadMasterAndUserConfig(const QStringList& argumentList);
void loadConfig(const QStringList& argumentList);
const QVariant value(const QString& key) const { return _userConfig.value(key); }
QVariant* valueForKeyPath(const QString& keyPath, bool shouldCreateIfMissing = false)
{ return ::valueForKeyPath(_userConfig, keyPath, shouldCreateIfMissing); }
- QVariantMap& getMergedConfig() { return _mergedConfig; }
QVariantMap& getConfig() { return _userConfig; }
- void mergeMasterAndUserConfigs();
-
const QString& getUserConfigFilename() const { return _userConfigFilename; }
private:
QString _userConfigFilename;
- QVariantMap _masterConfig;
QVariantMap _userConfig;
- QVariantMap _mergedConfig;
void loadMapFromJSONFile(QVariantMap& existingMap, const QString& filename);
void addMissingValuesToExistingMap(QVariantMap& existingMap, const QVariantMap& newMap);
diff --git a/libraries/shared/src/SettingHelpers.cpp b/libraries/shared/src/SettingHelpers.cpp
index dd301aa5aa..c6b8ac8f83 100644
--- a/libraries/shared/src/SettingHelpers.cpp
+++ b/libraries/shared/src/SettingHelpers.cpp
@@ -23,9 +23,15 @@
#include "SharedLogging.h"
+const QSettings::Format JSON_FORMAT = QSettings::registerFormat("json", readJSONFile, writeJSONFile);
+
QSettings::SettingsMap jsonDocumentToVariantMap(const QJsonDocument& document);
QJsonDocument variantMapToJsonDocument(const QSettings::SettingsMap& map);
+QString settingsFilename() {
+ return QSettings().fileName();
+}
+
bool readJSONFile(QIODevice& device, QSettings::SettingsMap& map) {
QJsonParseError jsonParseError;
diff --git a/libraries/shared/src/SettingHelpers.h b/libraries/shared/src/SettingHelpers.h
index 122e56957c..ad61897c65 100644
--- a/libraries/shared/src/SettingHelpers.h
+++ b/libraries/shared/src/SettingHelpers.h
@@ -14,12 +14,13 @@
#include
+extern const QSettings::Format JSON_FORMAT;
+
+QString settingsFilename();
+
bool readJSONFile(QIODevice& device, QSettings::SettingsMap& map);
bool writeJSONFile(QIODevice& device, const QSettings::SettingsMap& map);
-static const auto JSON_FORMAT = QSettings::registerFormat("json", readJSONFile, writeJSONFile);
-
void loadOldINIFile(QSettings& settings);
-
#endif // hifi_SettingHelpers_h