Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/lib/sugar-web/activity/activity.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sugar-web/activity/activity.js')
-rw-r--r--lib/sugar-web/activity/activity.js114
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;
+});