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+
19+AccountServicesScriptingInterface::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+
39+AccountServicesScriptingInterface::~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+
46+AccountServicesScriptingInterface* AccountServicesScriptingInterface::getInstance() {
47+ static AccountServicesScriptingInterface sharedInstance;
48+ return &sharedInstance;
49+}
50+
51+const 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+
60+bool AccountServicesScriptingInterface::isLoggedIn() {
61+ auto accountManager = DependencyManager::get<AccountManager>();
62+ return accountManager->isLoggedIn();
63+}
64+
65+bool AccountServicesScriptingInterface::checkAndSignalForAccessToken() {
66+ auto accountManager = DependencyManager::get<AccountManager>();
67+ return accountManager->checkAndSignalForAccessToken();
68+}
69+
70+void AccountServicesScriptingInterface::logOut() {
71+ auto accountManager = DependencyManager::get<AccountManager>();
72+ return accountManager->logout();
73+}
74+
75+void AccountServicesScriptingInterface::loggedOut() {
76+ emit AccountServicesScriptingInterface::disconnected(QString("logout"));
77+}
78+
79+QString AccountServicesScriptingInterface::getFindableBy() const {
80+ auto discoverabilityManager = DependencyManager::get<DiscoverabilityManager>();
81+ return DiscoverabilityManager::findableByString(discoverabilityManager->getDiscoverabilityMode());
82+}
83+
84+void 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+
99+void AccountServicesScriptingInterface::discoverabilityModeChanged(Discoverability::Mode discoverabilityMode) {
100+ emit findableByChanged(DiscoverabilityManager::findableByString(discoverabilityMode));
101+}
102+
103+void AccountServicesScriptingInterface::onUsernameChanged(const QString& username) {
104+ _loggedIn = (username != QString());
105+ emit myUsernameChanged(username);
106+ emit loggedInChanged(_loggedIn);
107+}
108+
109+DownloadInfoResult::DownloadInfoResult() :
110+ downloading(QList<float>()),
111+ pending(0.0f)
112+{
113+}
114+
115+QScriptValue 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+
128+void 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+
138+DownloadInfoResult 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+
147+void 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+
158+void AccountServicesScriptingInterface::updateDownloadInfo() {
159+ emit downloadInfoChanged(getDownloadInfo());
160+}
161+