mirror of
https://github.com/overte-org/overte.git
synced 2025-05-07 08:19:31 +02:00
172 lines
5.2 KiB
C++
172 lines
5.2 KiB
C++
//
|
|
// AndroidHelper.cpp
|
|
// interface/src
|
|
//
|
|
// Created by Gabriel Calero & Cristian Duarte on 3/30/18.
|
|
// Copyright 2018 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
#include "AndroidHelper.h"
|
|
#include <QDebug>
|
|
#include <AccountManager.h>
|
|
#include <AudioClient.h>
|
|
#include <src/ui/LoginDialog.h>
|
|
#include "Application.h"
|
|
#include "Constants.h"
|
|
#include "avatar/AvatarManager.h"
|
|
|
|
#if defined(qApp)
|
|
#undef qApp
|
|
#endif
|
|
#define qApp (static_cast<Application*>(QCoreApplication::instance()))
|
|
|
|
AndroidHelper::AndroidHelper() {
|
|
qRegisterMetaType<QAudio::Mode>("QAudio::Mode");
|
|
}
|
|
|
|
AndroidHelper::~AndroidHelper() {
|
|
}
|
|
|
|
void AndroidHelper::requestActivity(const QString &activityName, const bool backToScene, QMap<QString, QString> args) {
|
|
emit androidActivityRequested(activityName, backToScene, args);
|
|
}
|
|
|
|
void AndroidHelper::notifyLoadComplete() {
|
|
emit qtAppLoadComplete();
|
|
}
|
|
|
|
void AndroidHelper::notifyEnterForeground() {
|
|
emit enterForeground();
|
|
}
|
|
|
|
void AndroidHelper::notifyBeforeEnterBackground() {
|
|
emit beforeEnterBackground();
|
|
}
|
|
|
|
void AndroidHelper::notifyToggleAwayMode() {
|
|
emit toggleAwayMode();
|
|
}
|
|
|
|
void AndroidHelper::notifyEnterBackground() {
|
|
emit enterBackground();
|
|
}
|
|
|
|
void AndroidHelper::performHapticFeedback(int duration) {
|
|
emit hapticFeedbackRequested(duration);
|
|
}
|
|
|
|
void AndroidHelper::showLoginDialog(QUrl url) {
|
|
QMap<QString, QString> args;
|
|
args["url"] = url.toString();
|
|
emit androidActivityRequested("Login", true, args);
|
|
}
|
|
|
|
void AndroidHelper::processURL(const QString &url) {
|
|
if (qApp->canAcceptURL(url)) {
|
|
qApp->acceptURL(url);
|
|
}
|
|
}
|
|
|
|
void AndroidHelper::notifyHeadsetOn(bool pluggedIn) {
|
|
#if defined (Q_OS_ANDROID)
|
|
auto audioClient = DependencyManager::get<AudioClient>();
|
|
if (audioClient) {
|
|
QMetaObject::invokeMethod(audioClient.data(), "setHeadsetPluggedIn", Q_ARG(bool, pluggedIn));
|
|
}
|
|
#endif
|
|
}
|
|
|
|
void AndroidHelper::muteMic() {
|
|
auto audioClient = DependencyManager::get<AudioClient>();
|
|
if (audioClient) {
|
|
QMetaObject::invokeMethod(audioClient.data(), "setMuted", Q_ARG(bool, true), Q_ARG(bool, true));
|
|
}
|
|
}
|
|
|
|
|
|
void AndroidHelper::signup(QString email, QString username, QString password) {
|
|
JSONCallbackParameters callbackParams;
|
|
callbackParams.callbackReceiver = this;
|
|
callbackParams.jsonCallbackMethod = "signupCompleted";
|
|
callbackParams.errorCallbackMethod = "signupFailed";
|
|
|
|
QJsonObject payload;
|
|
|
|
QJsonObject userObject;
|
|
userObject.insert("email", email);
|
|
userObject.insert("username", username);
|
|
userObject.insert("password", password);
|
|
|
|
payload.insert("user", userObject);
|
|
|
|
auto accountManager = DependencyManager::get<AccountManager>();
|
|
|
|
accountManager->sendRequest(API_SIGNUP_PATH, AccountManagerAuth::None,
|
|
QNetworkAccessManager::PostOperation, callbackParams,
|
|
QJsonDocument(payload).toJson());
|
|
}
|
|
|
|
void AndroidHelper::signupCompleted(QNetworkReply* reply) {
|
|
emit handleSignupCompleted();
|
|
}
|
|
|
|
QString AndroidHelper::errorStringFromAPIObject(const QJsonValue& apiObject) {
|
|
if (apiObject.isArray()) {
|
|
return apiObject.toArray()[0].toString();
|
|
} else if (apiObject.isString()) {
|
|
return apiObject.toString();
|
|
} else {
|
|
return "is invalid";
|
|
}
|
|
}
|
|
|
|
void AndroidHelper::signupFailed(QNetworkReply* reply) {
|
|
// parse the returned JSON to see what the problem was
|
|
auto jsonResponse = QJsonDocument::fromJson(reply->readAll());
|
|
|
|
static const QString RESPONSE_DATA_KEY = "data";
|
|
|
|
auto dataJsonValue = jsonResponse.object()[RESPONSE_DATA_KEY];
|
|
|
|
if (dataJsonValue.isObject()) {
|
|
auto dataObject = dataJsonValue.toObject();
|
|
|
|
static const QString EMAIL_DATA_KEY = "email";
|
|
static const QString USERNAME_DATA_KEY = "username";
|
|
static const QString PASSWORD_DATA_KEY = "password";
|
|
|
|
QStringList errorStringList;
|
|
|
|
if (dataObject.contains(EMAIL_DATA_KEY)) {
|
|
errorStringList.append(QString("Email %1.").arg(errorStringFromAPIObject(dataObject[EMAIL_DATA_KEY])));
|
|
}
|
|
|
|
if (dataObject.contains(USERNAME_DATA_KEY)) {
|
|
errorStringList.append(QString("Username %1.").arg(errorStringFromAPIObject(dataObject[USERNAME_DATA_KEY])));
|
|
}
|
|
|
|
if (dataObject.contains(PASSWORD_DATA_KEY)) {
|
|
errorStringList.append(QString("Password %1.").arg(errorStringFromAPIObject(dataObject[PASSWORD_DATA_KEY])));
|
|
}
|
|
|
|
emit handleSignupFailed(errorStringList.join('\n'));
|
|
} else {
|
|
static const QString DEFAULT_SIGN_UP_FAILURE_MESSAGE = "There was an unknown error while creating your account. Please try again later.";
|
|
emit handleSignupFailed(DEFAULT_SIGN_UP_FAILURE_MESSAGE);
|
|
}
|
|
}
|
|
|
|
QString AndroidHelper::getDisplayName() {
|
|
return DependencyManager::get<AvatarManager>()->getMyAvatar()->getDisplayName();
|
|
}
|
|
|
|
void AndroidHelper::setDisplayName(const QString &displayName) {
|
|
DependencyManager::get<AvatarManager>()->getMyAvatar()->setDisplayName(displayName);
|
|
}
|
|
|
|
void AndroidHelper::setMyAvatarUrl(const QString &avatarUrl) {
|
|
QUrl url = QUrl(avatarUrl);
|
|
DependencyManager::get<AvatarManager>()->getMyAvatar()->useFullAvatarURL(url);
|
|
}
|