diff options
Diffstat (limited to 'lib/sugar-web/activity/activity.js')
-rw-r--r-- | lib/sugar-web/activity/activity.js | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/lib/sugar-web/activity/activity.js b/lib/sugar-web/activity/activity.js new file mode 100644 index 0000000..9a407d9 --- /dev/null +++ b/lib/sugar-web/activity/activity.js @@ -0,0 +1,114 @@ +define(["webL10n", + "sugar-web/activity/shortcut", + "sugar-web/bus", + "sugar-web/env", + "sugar-web/datastore", + "sugar-web/graphics/icon", + "sugar-web/graphics/activitypalette"], function ( + l10n, shortcut, bus, env, datastore, icon, activitypalette) { + + var datastoreObject = null; + + var activity = {}; + + activity.setup = function () { + bus.listen(); + + l10n.start(); + + function onPause() { + activity.write(function () {}); + } + + function onStop() { + function onDataStored(error, result) { + activity.close(function () {}); + } + activity.write(onDataStored); + } + + bus.onNotification("activity.pause", onPause); + bus.onNotification("activity.stop", onStop); + + datastoreObject = new datastore.DatastoreObject(); + + var activityButton = document.getElementById("activity-button"); + + var activityPalette = new activitypalette.ActivityPalette( + activityButton, datastoreObject); + + // Colorize the activity icon. + activity.getXOColor(function (error, colors) { + icon.colorize(activityButton, colors); + invokerElem = + document.querySelector("#activity-palette .palette-invoker"); + icon.colorize(invokerElem, colors); + }); + + // Make the activity stop with the stop button. + var stopButton = document.getElementById("stop-button"); + stopButton.addEventListener('click', onStop); + + shortcut.add("Ctrl", "Q", this.close); + + env.getEnvironment(function (error, environment) { + if (!environment.objectId) { + datastoreObject.setMetadata({ + "title": environment.activityName + " Activity", + "title_set_by_user": "0", + "activity": environment.bundleId, + "activity_id": environment.activityId + }); + } + datastoreObject.save(function () { + datastoreObject.getMetadata(function (error, metadata) { + activityPalette.setTitleDescription(metadata); + }); + }); + }); + }; + + activity.getDatastoreObject = function () { + return datastoreObject; + }; + + activity.getXOColor = function (callback) { + function onResponseReceived(error, result) { + if (error === null) { + callback(null, { + stroke: result[0][0], + fill: result[0][1] + }); + } else { + callback(null, { + stroke: "#00A0FF", + fill: "#8BFF7A" + }); + } + } + + bus.sendMessage("activity.get_xo_color", [], onResponseReceived); + }; + + // Activities should override this function in order to store + // data. + activity.write = function (callback) { + setTimeout(function () { + callback(null); + }, 0); + }; + + activity.close = function (callback) { + function onResponseReceived(error, result) { + if (error === null) { + callback(null); + } else { + console.log("activity.close called"); + } + } + + bus.sendMessage("activity.close", [], onResponseReceived); + }; + + return activity; +}); |