mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
use DependencyManager for AddressManager
This commit is contained in:
parent
78a61cd48b
commit
1b48cf7f5a
10 changed files with 58 additions and 50 deletions
|
@ -304,17 +304,17 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) :
|
|||
// once the event loop has started, check and signal for an access token
|
||||
QMetaObject::invokeMethod(&accountManager, "checkAndSignalForAccessToken", Qt::QueuedConnection);
|
||||
|
||||
AddressManager& addressManager = AddressManager::getInstance();
|
||||
AddressManager* addressManager = DependencyManager::get<AddressManager>();
|
||||
|
||||
// use our MyAvatar position and quat for address manager path
|
||||
addressManager.setPositionGetter(getPositionForPath);
|
||||
addressManager.setOrientationGetter(getOrientationForPath);
|
||||
addressManager->setPositionGetter(getPositionForPath);
|
||||
addressManager->setOrientationGetter(getOrientationForPath);
|
||||
|
||||
// handle domain change signals from AddressManager
|
||||
connect(&addressManager, &AddressManager::possibleDomainChangeRequiredToHostname,
|
||||
connect(addressManager, &AddressManager::possibleDomainChangeRequiredToHostname,
|
||||
this, &Application::changeDomainHostname);
|
||||
|
||||
connect(&addressManager, &AddressManager::possibleDomainChangeRequiredViaICEForID,
|
||||
connect(addressManager, &AddressManager::possibleDomainChangeRequiredViaICEForID,
|
||||
&domainHandler, &DomainHandler::setIceServerHostnameAndID);
|
||||
|
||||
_settings = new QSettings(this);
|
||||
|
@ -841,7 +841,7 @@ bool Application::event(QEvent* event) {
|
|||
QFileOpenEvent* fileEvent = static_cast<QFileOpenEvent*>(event);
|
||||
|
||||
if (!fileEvent->url().isEmpty()) {
|
||||
AddressManager::getInstance().handleLookupString(fileEvent->url().toString());
|
||||
DependencyManager::get<AddressManager>()->handleLookupString(fileEvent->url().toString());
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -1953,22 +1953,13 @@ void Application::init() {
|
|||
// when --url in command line, teleport to location
|
||||
const QString HIFI_URL_COMMAND_LINE_KEY = "--url";
|
||||
int urlIndex = arguments().indexOf(HIFI_URL_COMMAND_LINE_KEY);
|
||||
QString addressLookupString;
|
||||
if (urlIndex != -1) {
|
||||
AddressManager::getInstance().handleLookupString(arguments().value(urlIndex + 1));
|
||||
} else {
|
||||
// check if we have a URL in settings to load to jump back to
|
||||
// we load this separate from the other settings so we don't double lookup a URL
|
||||
QSettings* interfaceSettings = lockSettings();
|
||||
QVariant addressVariant = interfaceSettings->value(SETTINGS_ADDRESS_KEY);
|
||||
|
||||
QString addressString = addressVariant.isNull()
|
||||
? DEFAULT_HIFI_ADDRESS : addressVariant.toUrl().toString();
|
||||
|
||||
unlockSettings();
|
||||
|
||||
AddressManager::getInstance().handleLookupString(addressString);
|
||||
addressLookupString = arguments().value(urlIndex + 1);
|
||||
}
|
||||
|
||||
DependencyManager::get<AddressManager>()->loadSettings(addressLookupString);
|
||||
|
||||
qDebug() << "Loaded settings";
|
||||
|
||||
#ifdef __APPLE__
|
||||
|
@ -3615,7 +3606,7 @@ void Application::updateWindowTitle(){
|
|||
QString connectionStatus = nodeList->getDomainHandler().isConnected() ? "" : " (NOT CONNECTED) ";
|
||||
QString username = AccountManager::getInstance().getAccountInfo().getUsername();
|
||||
QString title = QString() + (!username.isEmpty() ? username + " @ " : QString())
|
||||
+ AddressManager::getInstance().getCurrentDomain() + connectionStatus + buildVersion;
|
||||
+ DependencyManager::get<AddressManager>()->getCurrentDomain() + connectionStatus + buildVersion;
|
||||
|
||||
AccountManager& accountManager = AccountManager::getInstance();
|
||||
if (accountManager.getAccountInfo().hasBalance()) {
|
||||
|
@ -3646,7 +3637,7 @@ void Application::updateLocationInServer() {
|
|||
|
||||
QJsonObject locationObject;
|
||||
|
||||
QString pathString = AddressManager::getInstance().currentPath();
|
||||
QString pathString = DependencyManager::get<AddressManager>()->currentPath();
|
||||
|
||||
const QString LOCATION_KEY_IN_ROOT = "location";
|
||||
const QString PATH_KEY_IN_LOCATION = "path";
|
||||
|
@ -4189,7 +4180,7 @@ void Application::uploadAttachment() {
|
|||
void Application::openUrl(const QUrl& url) {
|
||||
if (!url.isEmpty()) {
|
||||
if (url.scheme() == HIFI_URL_SCHEME) {
|
||||
AddressManager::getInstance().handleLookupString(url.toString());
|
||||
DependencyManager::get<AddressManager>()->handleLookupString(url.toString());
|
||||
} else {
|
||||
// address manager did not handle - ask QDesktopServices to handle
|
||||
QDesktopServices::openUrl(url);
|
||||
|
|
|
@ -155,9 +155,9 @@ Menu::Menu() :
|
|||
connect(&accountManager, &AccountManager::logoutComplete, this, &Menu::toggleLoginMenuItem);
|
||||
|
||||
// connect to signal of account manager so we can tell user when the user/place they looked at is offline
|
||||
AddressManager& addressManager = AddressManager::getInstance();
|
||||
connect(&addressManager, &AddressManager::lookupResultIsOffline, this, &Menu::displayAddressOfflineMessage);
|
||||
connect(&addressManager, &AddressManager::lookupResultIsNotFound, this, &Menu::displayAddressNotFoundMessage);
|
||||
AddressManager* addressManager = DependencyManager::get<AddressManager>();
|
||||
connect(addressManager, &AddressManager::lookupResultIsOffline, this, &Menu::displayAddressOfflineMessage);
|
||||
connect(addressManager, &AddressManager::lookupResultIsNotFound, this, &Menu::displayAddressNotFoundMessage);
|
||||
|
||||
addDisabledActionAndSeparator(fileMenu, "Scripts");
|
||||
addActionToQMenuAndActionHash(fileMenu, MenuOption::LoadScript, Qt::CTRL | Qt::Key_O, appInstance, SLOT(loadDialog()));
|
||||
|
@ -763,8 +763,6 @@ void Menu::saveSettings(QSettings* settings) {
|
|||
|
||||
scanMenuBar(&saveAction, settings);
|
||||
Application::getInstance()->getAvatar()->saveData(settings);
|
||||
|
||||
settings->setValue(SETTINGS_ADDRESS_KEY, AddressManager::getInstance().currentAddress());
|
||||
|
||||
if (lockedSettings) {
|
||||
Application::getInstance()->unlockSettings();
|
||||
|
@ -1198,7 +1196,7 @@ void Menu::displayNameLocationResponse(const QString& errorString) {
|
|||
void Menu::toggleLocationList() {
|
||||
if (!_userLocationsDialog) {
|
||||
JavascriptObjectMap locationObjectMap;
|
||||
locationObjectMap.insert("InterfaceLocation", &AddressManager::getInstance());
|
||||
locationObjectMap.insert("InterfaceLocation", DependencyManager::get<AddressManager>());
|
||||
_userLocationsDialog = DataWebDialog::dialogForPath("/user/locations", locationObjectMap);
|
||||
}
|
||||
|
||||
|
@ -1242,7 +1240,7 @@ void Menu::nameLocation() {
|
|||
|
||||
if (!_newLocationDialog) {
|
||||
JavascriptObjectMap locationObjectMap;
|
||||
locationObjectMap.insert("InterfaceLocation", &AddressManager::getInstance());
|
||||
locationObjectMap.insert("InterfaceLocation", DependencyManager::get<AddressManager>());
|
||||
_newLocationDialog = DataWebDialog::dialogForPath("/user/locations/new", locationObjectMap);
|
||||
}
|
||||
|
||||
|
|
|
@ -51,8 +51,6 @@ const float ADJUST_LOD_MAX_SIZE_SCALE = DEFAULT_OCTREE_SIZE_SCALE;
|
|||
const float MINIMUM_AVATAR_LOD_DISTANCE_MULTIPLIER = 0.1f;
|
||||
const float MAXIMUM_AVATAR_LOD_DISTANCE_MULTIPLIER = 15.0f;
|
||||
|
||||
const QString SETTINGS_ADDRESS_KEY = "address";
|
||||
|
||||
enum FrustumDrawMode {
|
||||
FRUSTUM_DRAW_MODE_ALL,
|
||||
FRUSTUM_DRAW_MODE_VECTORS,
|
||||
|
|
|
@ -102,7 +102,7 @@ MyAvatar::MyAvatar() :
|
|||
_skeletonModel.buildRagdoll();
|
||||
|
||||
// connect to AddressManager signal for location jumps
|
||||
connect(&AddressManager::getInstance(), &AddressManager::locationChangeRequired, this, &MyAvatar::goToLocation);
|
||||
connect(DependencyManager::get<AddressManager>(), &AddressManager::locationChangeRequired, this, &MyAvatar::goToLocation);
|
||||
}
|
||||
|
||||
MyAvatar::~MyAvatar() {
|
||||
|
|
|
@ -19,7 +19,7 @@ LocationScriptingInterface* LocationScriptingInterface::getInstance() {
|
|||
}
|
||||
|
||||
QScriptValue LocationScriptingInterface::locationGetter(QScriptContext* context, QScriptEngine* engine) {
|
||||
return engine->newQObject(&AddressManager::getInstance());
|
||||
return engine->newQObject(DependencyManager::get<AddressManager>());
|
||||
}
|
||||
|
||||
QScriptValue LocationScriptingInterface::locationSetter(QScriptContext* context, QScriptEngine* engine) {
|
||||
|
@ -28,11 +28,11 @@ QScriptValue LocationScriptingInterface::locationSetter(QScriptContext* context,
|
|||
|
||||
if (argumentVariant.canConvert(QMetaType::QVariantMap)) {
|
||||
// this argument is a variant map, so we'll assume it's an address map
|
||||
QMetaObject::invokeMethod(&AddressManager::getInstance(), "goToAddressFromObject",
|
||||
QMetaObject::invokeMethod(DependencyManager::get<AddressManager>(), "goToAddressFromObject",
|
||||
Q_ARG(const QVariantMap&, argumentVariant.toMap()));
|
||||
} else {
|
||||
// just try and convert the argument to a string, should be a hifi:// address
|
||||
QMetaObject::invokeMethod(&AddressManager::getInstance(), "handleLookupString",
|
||||
QMetaObject::invokeMethod(DependencyManager::get<AddressManager>(), "handleLookupString",
|
||||
Q_ARG(const QString&, argumentVariant.toString()));
|
||||
}
|
||||
|
||||
|
|
|
@ -121,8 +121,8 @@ void AddressBarDialog::showEvent(QShowEvent* event) {
|
|||
void AddressBarDialog::accept() {
|
||||
if (!_addressLineEdit->text().isEmpty()) {
|
||||
_goButton->setIcon(QIcon(Application::resourcesPath() + ADDRESSBAR_GO_BUTTON_ACTIVE_ICON));
|
||||
AddressManager& addressManager = AddressManager::getInstance();
|
||||
connect(&addressManager, &AddressManager::lookupResultsFinished, this, &QDialog::hide);
|
||||
addressManager.handleLookupString(_addressLineEdit->text());
|
||||
AddressManager* addressManager = DependencyManager::get<AddressManager>();
|
||||
connect(addressManager, &AddressManager::lookupResultsFinished, this, &QDialog::hide);
|
||||
addressManager->handleLookupString(_addressLineEdit->text());
|
||||
}
|
||||
}
|
|
@ -171,7 +171,7 @@ bool ChatWindow::eventFilter(QObject* sender, QEvent* event) {
|
|||
} else if (event->type() == QEvent::MouseButtonRelease) {
|
||||
QVariant userVar = sender->property("user");
|
||||
if (userVar.isValid()) {
|
||||
AddressManager::getInstance().goToUser(userVar.toString());
|
||||
DependencyManager::get<AddressManager>()->goToUser(userVar.toString());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ bool DataWebPage::acceptNavigationRequest(QWebFrame* frame, const QNetworkReques
|
|||
return true;
|
||||
} else {
|
||||
// this is a hifi URL - have the AddressManager handle it
|
||||
QMetaObject::invokeMethod(&AddressManager::getInstance(), "handleLookupString",
|
||||
QMetaObject::invokeMethod(DependencyManager::get<AddressManager>(), "handleLookupString",
|
||||
Qt::AutoConnection, Q_ARG(const QString&, request.url().toString()));
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -21,11 +21,6 @@
|
|||
|
||||
#include "AddressManager.h"
|
||||
|
||||
AddressManager& AddressManager::getInstance() {
|
||||
static AddressManager sharedInstance;
|
||||
return sharedInstance;
|
||||
}
|
||||
|
||||
AddressManager::AddressManager() :
|
||||
_currentDomain(),
|
||||
_positionGetter(NULL),
|
||||
|
@ -48,6 +43,27 @@ const QUrl AddressManager::currentAddress() const {
|
|||
return hifiURL;
|
||||
}
|
||||
|
||||
const QString ADDRESS_MANAGER_SETTINGS_GROUP = "AddressManager";
|
||||
const QString SETTINGS_CURRENT_ADDRESS_KEY = "address";
|
||||
|
||||
void AddressManager::loadSettings(const QString& lookupString) {
|
||||
if (lookupString.isEmpty()) {
|
||||
QSettings settings;
|
||||
settings.beginGroup(ADDRESS_MANAGER_SETTINGS_GROUP);
|
||||
handleLookupString(settings.value(SETTINGS_CURRENT_ADDRESS_KEY).toString());
|
||||
} else {
|
||||
handleLookupString(lookupString);
|
||||
}
|
||||
}
|
||||
|
||||
void AddressManager::storeCurrentAddress() {
|
||||
QSettings settings;
|
||||
|
||||
settings.beginGroup(ADDRESS_MANAGER_SETTINGS_GROUP);
|
||||
settings.setValue(SETTINGS_CURRENT_ADDRESS_KEY, currentAddress());
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
const QString AddressManager::currentPath(bool withOrientation) const {
|
||||
|
||||
if (_positionGetter) {
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
#include <glm/glm.hpp>
|
||||
#include <glm/gtc/quaternion.hpp>
|
||||
|
||||
#include <DependencyManager.h>
|
||||
|
||||
#include "AccountManager.h"
|
||||
|
||||
const QString HIFI_URL_SCHEME = "hifi";
|
||||
|
@ -25,7 +27,7 @@ const QString DEFAULT_HIFI_ADDRESS = "hifi://sandbox";
|
|||
typedef const glm::vec3& (*PositionGetter)();
|
||||
typedef glm::quat (*OrientationGetter)();
|
||||
|
||||
class AddressManager : public QObject {
|
||||
class AddressManager : public QObject, public DependencyManager::Dependency {
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(bool isConnected READ isConnected)
|
||||
Q_PROPERTY(QUrl href READ currentAddress)
|
||||
|
@ -34,8 +36,6 @@ class AddressManager : public QObject {
|
|||
Q_PROPERTY(QString pathname READ currentPath)
|
||||
Q_PROPERTY(QString domainID READ getDomainID)
|
||||
public:
|
||||
static AddressManager& getInstance();
|
||||
|
||||
bool isConnected();
|
||||
const QString& getProtocol() { return HIFI_URL_SCHEME; };
|
||||
|
||||
|
@ -50,6 +50,10 @@ public:
|
|||
void setPositionGetter(PositionGetter positionGetter) { _positionGetter = positionGetter; }
|
||||
void setOrientationGetter(OrientationGetter orientationGetter) { _orientationGetter = orientationGetter; }
|
||||
|
||||
void loadSettings(const QString& lookupString = QString());
|
||||
|
||||
friend class DependencyManager;
|
||||
|
||||
public slots:
|
||||
void handleLookupString(const QString& lookupString);
|
||||
void goToUser(const QString& username);
|
||||
|
@ -64,12 +68,13 @@ signals:
|
|||
void locationChangeRequired(const glm::vec3& newPosition,
|
||||
bool hasOrientationChange, const glm::quat& newOrientation,
|
||||
bool shouldFaceLocation);
|
||||
protected:
|
||||
AddressManager();
|
||||
private slots:
|
||||
void handleAPIResponse(QNetworkReply& requestReply);
|
||||
void handleAPIError(QNetworkReply& errorReply);
|
||||
void storeCurrentAddress();
|
||||
private:
|
||||
AddressManager();
|
||||
|
||||
void setDomainHostnameAndName(const QString& hostname, const QString& domainName = QString());
|
||||
|
||||
const JSONCallbackParameters& apiCallbackParameters();
|
||||
|
|
Loading…
Reference in a new issue