Permalink
Newer
100644
226 lines (184 sloc)
7.2 KB
2
"sugar-web/activity/shortcut",
3
"sugar-web/bus",
4
"sugar-web/env",
7
"sugar-web/graphics/activitypalette"], function (
8
l10n, shortcut, bus, env, datastore, icon, activitypalette) {
21
function sendPauseEvent() {
22
var pauseEvent = document.createEvent("CustomEvent");
23
pauseEvent.initCustomEvent('activityPause', false, false, {
24
'cancelable': true});
25
window.dispatchEvent(pauseEvent);
26
}
27
bus.onNotification("activity.pause", sendPauseEvent);
28
29
// An activity that handles 'activityStop' can also call
30
// event.preventDefault() to prevent the close, and explicitly
31
// call activity.close() after storing.
32
33
function sendStopEvent() {
34
var stopEvent = document.createEvent("CustomEvent");
35
stopEvent.initCustomEvent('activityStop', false, false, {
36
'cancelable': true});
37
38
var result = window.dispatchEvent(stopEvent);
39
if (result) {
40
activity.close();
41
}
42
}
43
bus.onNotification("activity.stop", sendStopEvent);
44
45
datastoreObject = new datastore.DatastoreObject();
46
47
var activityButton = document.getElementById("activity-button");
48
49
var activityPalette = new activitypalette.ActivityPalette(
50
activityButton, datastoreObject);
51
52
// Colorize the activity icon.
53
activity.getXOColor(function (error, colors) {
54
icon.colorize(activityButton, colors);
56
document.querySelector("#activity-palette .palette-invoker");
57
icon.colorize(invokerElem, colors);
58
});
59
60
// Make the activity stop with the stop button.
61
var stopButton = document.getElementById("stop-button");
62
stopButton.addEventListener('click', function (e) {
68
env.getEnvironment(function (error, environment) {
69
if (!environment.objectId) {
70
datastoreObject.setMetadata({
71
"title": environment.activityName + " Activity",
72
"title_set_by_user": "0",
73
"activity": environment.bundleId,
74
"activity_id": environment.activityId
75
});
76
}
77
datastoreObject.save(function () {
78
datastoreObject.getMetadata(function (error, metadata) {
79
activityPalette.setTitleDescription(metadata);
80
});
81
});
83
};
84
85
activity.getDatastoreObject = function () {
86
return datastoreObject;
90
function onResponseReceived(error, result) {
91
if (error === null) {
92
callback(null, {
97
callback(null, {
103
104
bus.sendMessage("activity.get_xo_color", [], onResponseReceived);
108
function onResponseReceived(error, result) {
109
if (error === null) {
110
callback(null);
115
116
bus.sendMessage("activity.close", [], onResponseReceived);
119
activity.showObjectChooser = function (callback) {
120
function onResponseReceived(error, result) {
121
if (error === null) {
122
callback(null, result[0]);
125
}
126
}
127
128
bus.sendMessage("activity.show_object_chooser", [], onResponseReceived);
129
};
131
activity.showAlert = function (title, message, btnLabel, btnCallback) {
132
if (btnLabel == null) {
133
btnLabel = 'Ok';
134
}
135
136
// if there are a alert visible, hide it
137
activity.hideAlert();
138
139
var fragment = document.createDocumentFragment();
140
var div = document.createElement('div');
141
div.className = 'alert';
142
div.id = 'activity-alert';
143
div.innerHTML = '<p><b>' + title + '</b><br/>' + message + '</p>' +
144
'<p class="button-box">' +
145
'<button id="actvity-alert-btn" class="icon">' +
146
'<span class="ok"></span>' +
147
btnLabel + '</button></p>';
148
fragment.appendChild(div);
149
150
document.body.appendChild(fragment.cloneNode(true));
151
152
var btn = document.getElementById("actvity-alert-btn");
153
btn.addEventListener('click', function (e) {
155
if (btnCallback != null) {
156
btnCallback();
157
}
158
});
159
160
};
161
162
activity.showConfirmationAlert = function (title, message, btnOkLabel,
163
btnCancelLabel, btnCallback) {
164
/*
165
title, message, btnOkLabel and btCancelLabel are str parameters
166
callback is a function called when the user press a button,
167
and receives a boolean with true if the user pressed the Ok button
168
*/
169
if (btnOkLabel == null) {
170
btnOkLabel = 'Ok';
171
}
172
if (btnCancelLabel == null) {
173
btnCancelLabel = 'Cancel';
174
}
175
176
// if there are a alert visible, hide it
177
activity.hideAlert();
178
179
var fragment = document.createDocumentFragment();
180
var div = document.createElement('div');
181
div.className = 'alert';
182
div.id = 'activity-alert';
183
184
div.innerHTML = '<p><b>' + title + '</b><br/>' + message + '</p>' +
185
'<p class="button-box">' +
186
'<button id="actvity-alert-ok-btn" class="icon">' +
187
'<span class="ok"></span>' +
188
btnOkLabel + '</button>' +
189
'<button id="actvity-alert-cancel-btn" class="icon">' +
190
'<span class="cancel"></span>' +
191
btnCancelLabel + '</button>' +
192
'</p>';
193
194
fragment.appendChild(div);
195
196
document.body.appendChild(fragment.cloneNode(true));
197
198
var okBtn = document.getElementById("actvity-alert-ok-btn");
199
var cancelBtn = document.getElementById("actvity-alert-cancel-btn");
200
201
function hideAlertAndReply(result) {
203
if (btnCallback != null) {
204
btnCallback(result);
205
};
206
};
207
208
okBtn.addEventListener('click', function (e) {
209
hideAlertAndReply(true);
210
});
211
212
cancelBtn.addEventListener('click', function (e) {
213
hideAlertAndReply(false);
214
});
215
216
};
217
218
activity.hideAlert = function() {
219
var alertNode = document.getElementById("activity-alert");
220
if (alertNode && alertNode.parentNode) {
221
alertNode.parentNode.removeChild(alertNode);
222
};
223
};