History

nuke AccountScriptingInterface, rename GlobalServicesScriptingInterface to AccountServicesScriptingInterface

David Back committed 8 years ago

Commit 43cd5581 parent 2fddace6 files · +43 −139Browse files

Showing the changes to interface/src/scripting/AccountServicesScriptingInterface.cpp (1 of 6 files). Show all

Unified · Split

interface/src/scripting/AccountServicesScriptingInterface.cpp+161−0
@@ -0,0 +1,161 @@
1//
2// AccountServicesScriptingInterface.cpp
3// interface/src/scripting
4//
5// Created by Thijs Wenker on 9/10/14.
6// Copyright 2014 High Fidelity, Inc.
7//
8// Distributed under the Apache License, Version 2.0.
9// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10//
11
12#include "AccountManager.h"
13#include "Application.h"
14#include "DiscoverabilityManager.h"
15#include "ResourceCache.h"
16
17#include "AccountServicesScriptingInterface.h"
18
19AccountServicesScriptingInterface::AccountServicesScriptingInterface() {
20 auto accountManager = DependencyManager::get<AccountManager>();
21 connect(accountManager.data(), &AccountManager::usernameChanged, this, &AccountServicesScriptingInterface::onUsernameChanged);
22 connect(accountManager.data(), &AccountManager::logoutComplete, this, &AccountServicesScriptingInterface::loggedOut);
23 connect(accountManager.data(), &AccountManager::loginComplete, this, &AccountServicesScriptingInterface::connected);
24
25 _downloading = false;
26 QTimer* checkDownloadTimer = new QTimer(this);
27 connect(checkDownloadTimer, &QTimer::timeout, this, &AccountServicesScriptingInterface::checkDownloadInfo);
28 const int CHECK_DOWNLOAD_INTERVAL = MSECS_PER_SECOND / 2;
29 checkDownloadTimer->start(CHECK_DOWNLOAD_INTERVAL);
30
31 auto discoverabilityManager = DependencyManager::get<DiscoverabilityManager>();
32 connect(discoverabilityManager.data(), &DiscoverabilityManager::discoverabilityModeChanged,
33 this, &AccountServicesScriptingInterface::discoverabilityModeChanged);
34
35 _loggedIn = isLoggedIn();
36 emit loggedInChanged(_loggedIn);
37}
38
39AccountServicesScriptingInterface::~AccountServicesScriptingInterface() {
40 auto accountManager = DependencyManager::get<AccountManager>();
41 disconnect(accountManager.data(), &AccountManager::usernameChanged, this, &AccountServicesScriptingInterface::onUsernameChanged);
42 disconnect(accountManager.data(), &AccountManager::logoutComplete, this, &AccountServicesScriptingInterface::loggedOut);
43 disconnect(accountManager.data(), &AccountManager::loginComplete, this, &AccountServicesScriptingInterface::connected);
44}
45
46AccountServicesScriptingInterface* AccountServicesScriptingInterface::getInstance() {
47 static AccountServicesScriptingInterface sharedInstance;
48 return &sharedInstance;
49}
50
51const QString AccountServicesScriptingInterface::getUsername() const {
52 auto accountManager = DependencyManager::get<AccountManager>();
53 if (accountManager->isLoggedIn()) {
54 return accountManager->getAccountInfo().getUsername();
55 } else {
56 return "Unknown user";
57 }
58}
59
60bool AccountServicesScriptingInterface::isLoggedIn() {
61 auto accountManager = DependencyManager::get<AccountManager>();
62 return accountManager->isLoggedIn();
63}
64
65bool AccountServicesScriptingInterface::checkAndSignalForAccessToken() {
66 auto accountManager = DependencyManager::get<AccountManager>();
67 return accountManager->checkAndSignalForAccessToken();
68}
69
70void AccountServicesScriptingInterface::logOut() {
71 auto accountManager = DependencyManager::get<AccountManager>();
72 return accountManager->logout();
73}
74
75void AccountServicesScriptingInterface::loggedOut() {
76 emit AccountServicesScriptingInterface::disconnected(QString("logout"));
77}
78
79QString AccountServicesScriptingInterface::getFindableBy() const {
80 auto discoverabilityManager = DependencyManager::get<DiscoverabilityManager>();
81 return DiscoverabilityManager::findableByString(discoverabilityManager->getDiscoverabilityMode());
82}
83
84void AccountServicesScriptingInterface::setFindableBy(const QString& discoverabilityMode) {
85 auto discoverabilityManager = DependencyManager::get<DiscoverabilityManager>();
86 if (discoverabilityMode.toLower() == "none") {
87 discoverabilityManager->setDiscoverabilityMode(Discoverability::None);
88 } else if (discoverabilityMode.toLower() == "friends") {
89 discoverabilityManager->setDiscoverabilityMode(Discoverability::Friends);
90 } else if (discoverabilityMode.toLower() == "connections") {
91 discoverabilityManager->setDiscoverabilityMode(Discoverability::Connections);
92 } else if (discoverabilityMode.toLower() == "all") {
93 discoverabilityManager->setDiscoverabilityMode(Discoverability::All);
94 } else {
95 qDebug() << "GlobalServices setFindableBy called with an unrecognized value. Did not change discoverability.";
96 }
97}
98
99void AccountServicesScriptingInterface::discoverabilityModeChanged(Discoverability::Mode discoverabilityMode) {
100 emit findableByChanged(DiscoverabilityManager::findableByString(discoverabilityMode));
101}
102
103void AccountServicesScriptingInterface::onUsernameChanged(const QString& username) {
104 _loggedIn = (username != QString());
105 emit myUsernameChanged(username);
106 emit loggedInChanged(_loggedIn);
107}
108
109DownloadInfoResult::DownloadInfoResult() :
110 downloading(QList<float>()),
111 pending(0.0f)
112{
113}
114
115QScriptValue DownloadInfoResultToScriptValue(QScriptEngine* engine, const DownloadInfoResult& result) {
116 QScriptValue object = engine->newObject();
117
118 QScriptValue array = engine->newArray(result.downloading.count());
119 for (int i = 0; i < result.downloading.count(); i += 1) {
120 array.setProperty(i, result.downloading[i]);
121 }
122
123 object.setProperty("downloading", array);
124 object.setProperty("pending", result.pending);
125 return object;
126}
127
128void DownloadInfoResultFromScriptValue(const QScriptValue& object, DownloadInfoResult& result) {
129 QList<QVariant> downloading = object.property("downloading").toVariant().toList();
130 result.downloading.clear();
131 for (int i = 0; i < downloading.count(); i += 1) {
132 result.downloading.append(downloading[i].toFloat());
133 }
134
135 result.pending = object.property("pending").toVariant().toFloat();
136}
137
138DownloadInfoResult AccountServicesScriptingInterface::getDownloadInfo() {
139 DownloadInfoResult result;
140 foreach(const auto& resource, ResourceCache::getLoadingRequests()) {
141 result.downloading.append(resource->getProgress() * 100.0f);
142 }
143 result.pending = ResourceCache::getPendingRequestCount();
144 return result;
145}
146
147void AccountServicesScriptingInterface::checkDownloadInfo() {
148 DownloadInfoResult downloadInfo = getDownloadInfo();
149 bool downloading = downloadInfo.downloading.count() > 0 || downloadInfo.pending > 0;
150
151 // Emit signal if downloading or have just finished.
152 if (downloading || _downloading) {
153 _downloading = downloading;
154 emit downloadInfoChanged(downloadInfo);
155 }
156}
157
158void AccountServicesScriptingInterface::updateDownloadInfo() {
159 emit downloadInfoChanged(getDownloadInfo());
160}
161