mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 18:23:54 +02:00
Add downloads information changed event for JavaScript
This commit is contained in:
parent
8b0d859686
commit
40274df279
3 changed files with 84 additions and 19 deletions
|
@ -11,15 +11,56 @@
|
|||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
|
||||
var downloadInfo,
|
||||
downloadInfoOverlay;
|
||||
|
||||
function formatInfo(info) {
|
||||
var string = "Downloads: ",
|
||||
i;
|
||||
|
||||
for (i = 0; i < info.downloading.length; i += 1) {
|
||||
string += info.downloading[i].toFixed(0) + "% ";
|
||||
}
|
||||
|
||||
string += "(" + info.pending.toFixed(0) + " pending)";
|
||||
|
||||
return string;
|
||||
}
|
||||
|
||||
|
||||
// Get and log the current downloads info ...
|
||||
|
||||
var downloadInfo,
|
||||
downloadInfoString;
|
||||
|
||||
downloadInfo = GlobalServices.getDownloadInfo();
|
||||
downloadInfoString = "Downloads: ";
|
||||
if (downloadInfo.downloading.length > 0) {
|
||||
downloadInfoString += downloadInfo.downloading.join("% ") + "% ";
|
||||
print(formatInfo(downloadInfo));
|
||||
|
||||
|
||||
// Display and update the downloads info in an overlay ...
|
||||
|
||||
function setUp() {
|
||||
downloadInfoOverlay = Overlays.addOverlay("text", {
|
||||
x: 300,
|
||||
y: 200,
|
||||
width: 300,
|
||||
height: 50,
|
||||
color: { red: 255, green: 255, blue: 255 },
|
||||
alpha: 1.0,
|
||||
backgroundColor: { red: 127, green: 127, blue: 127 },
|
||||
backgroundAlpha: 0.5,
|
||||
topMargin: 15,
|
||||
leftMargin: 20,
|
||||
text: ""
|
||||
});
|
||||
}
|
||||
downloadInfoString += "(" + downloadInfo.pending.toFixed(0) + " pending)";
|
||||
print(downloadInfoString);
|
||||
|
||||
function updateInfo(info) {
|
||||
Overlays.editOverlay(downloadInfoOverlay, { text: formatInfo(info) });
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
Overlays.deleteOverlay(downloadInfoOverlay);
|
||||
}
|
||||
|
||||
setUp();
|
||||
GlobalServices.downloadInfoChanged.connect(updateInfo);
|
||||
GlobalServices.updateDownloadInfo();
|
||||
Script.scriptEnding.connect(tearDown);
|
||||
|
|
|
@ -10,8 +10,9 @@
|
|||
//
|
||||
|
||||
#include "AccountManager.h"
|
||||
#include "XmppClient.h"
|
||||
#include "Application.h"
|
||||
#include "ResourceCache.h"
|
||||
#include "XmppClient.h"
|
||||
|
||||
#include "GlobalServicesScriptingInterface.h"
|
||||
|
||||
|
@ -26,6 +27,9 @@ GlobalServicesScriptingInterface::GlobalServicesScriptingInterface() {
|
|||
const QXmppClient& qxmppClient = XmppClient::getInstance().getXMPPClient();
|
||||
connect(&qxmppClient, &QXmppClient::messageReceived, this, &GlobalServicesScriptingInterface::messageReceived);
|
||||
#endif // HAVE_QXMPP
|
||||
|
||||
_downloading = false;
|
||||
connect(Application::getInstance(), &Application::renderingInWorldInterface, this, &GlobalServicesScriptingInterface::checkDownloadInfo);
|
||||
}
|
||||
|
||||
GlobalServicesScriptingInterface::~GlobalServicesScriptingInterface() {
|
||||
|
@ -115,16 +119,6 @@ void GlobalServicesScriptingInterface::messageReceived(const QXmppMessage& messa
|
|||
}
|
||||
#endif // HAVE_QXMPP
|
||||
|
||||
DownloadInfoResult GlobalServicesScriptingInterface::getDownloadInfo() {
|
||||
DownloadInfoResult result;
|
||||
foreach(Resource* resource, ResourceCache::getLoadingRequests()) {
|
||||
result.downloading.append(resource->getProgress() * 100.0f);
|
||||
}
|
||||
result.pending = ResourceCache::getPendingRequestCount();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
DownloadInfoResult::DownloadInfoResult() :
|
||||
downloading(QList<float>()),
|
||||
|
@ -154,3 +148,27 @@ void DownloadInfoResultFromScriptValue(const QScriptValue& object, DownloadInfoR
|
|||
|
||||
result.pending = object.property("pending").toVariant().toFloat();
|
||||
}
|
||||
|
||||
DownloadInfoResult GlobalServicesScriptingInterface::getDownloadInfo() {
|
||||
DownloadInfoResult result;
|
||||
foreach(Resource* resource, ResourceCache::getLoadingRequests()) {
|
||||
result.downloading.append(resource->getProgress() * 100.0f);
|
||||
}
|
||||
result.pending = ResourceCache::getPendingRequestCount();
|
||||
return result;
|
||||
}
|
||||
|
||||
void GlobalServicesScriptingInterface::checkDownloadInfo() {
|
||||
DownloadInfoResult downloadInfo = getDownloadInfo();
|
||||
bool downloading = downloadInfo.downloading.count() > 0 || downloadInfo.pending > 0;
|
||||
|
||||
// Emit signal if downloading or have just finished.
|
||||
if (downloading || _downloading) {
|
||||
_downloading = downloading;
|
||||
emit downloadInfoChanged(downloadInfo);
|
||||
}
|
||||
}
|
||||
|
||||
void GlobalServicesScriptingInterface::updateDownloadInfo() {
|
||||
emit downloadInfoChanged(getDownloadInfo());
|
||||
}
|
||||
|
|
|
@ -56,6 +56,7 @@ public:
|
|||
public slots:
|
||||
QScriptValue chat(const QString& message);
|
||||
DownloadInfoResult getDownloadInfo();
|
||||
void updateDownloadInfo();
|
||||
|
||||
private slots:
|
||||
void loggedOut();
|
||||
|
@ -64,6 +65,7 @@ private slots:
|
|||
#ifdef HAVE_QXMPP
|
||||
void messageReceived(const QXmppMessage& message);
|
||||
#endif // HAVE_QXMPP
|
||||
void checkDownloadInfo();
|
||||
|
||||
signals:
|
||||
void connected();
|
||||
|
@ -71,6 +73,10 @@ signals:
|
|||
void incomingMessage(const QString& username, const QString& message);
|
||||
void onlineUsersChanged(const QStringList& usernames);
|
||||
void myUsernameChanged(const QString& username);
|
||||
void downloadInfoChanged(DownloadInfoResult info);
|
||||
|
||||
private:
|
||||
bool _downloading;
|
||||
};
|
||||
|
||||
#endif // hifi_GlobalServicesScriptingInterface_h
|
||||
|
|
Loading…
Reference in a new issue