not really known
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

1481 lines
50 KiB

// Settings dialog
enyo.kind({
name: "Sugar.DialogSettings",
kind: "enyo.Popup",
classes: "settings-dialog",
centered: false,
modal: true,
floating: true,
components: [
{name: "toolbar", classes: "toolbar", components: [
{name: "settingssearch", kind: "Sugar.SearchField", onTextChanged: "filterSettings", classes: "settings-filter-text"},
{name: "donebutton", kind: "Button", classes: "toolbutton settings-close-button", title:"List", ontap: "closeSettings"}
]},
{name: "scroller", kind: "Scroller", horizontal: "hidden", vertical: "auto", classes: "settings-scroller", components: [
{name: "content", components: [
{name: "me", kind: "Sugar.DialogSettingsItem", ontap: "meClicked", text: "Me", icon: {directory: "icons", icon: "module-about_me.svg"}, colorized: true},
{name: "computer", kind: "Sugar.DialogSettingsItem", ontap: "computerClicked", text: "Computer", icon: {directory: "icons", icon: "module-about_my_computer.svg"}},
{name: "aboutserver", kind: "Sugar.DialogSettingsItem", ontap: "serverClicked", text: "Server", icon: {directory: "icons", icon: "cloud-settings.svg"}},
{name: "security", kind: "Sugar.DialogSettingsItem", ontap: "securityClicked", icon: {directory: "icons", icon: "login-icon.svg"}, showing: false},
{name: "privacy", kind: "Sugar.DialogSettingsItem", ontap: "privacyClicked", icon: {directory: "icons", icon: "privacy.svg"}, showing: false},
{name: "language", kind: "Sugar.DialogSettingsItem", ontap: "languageClicked", text: "Language", icon: {directory: "icons", icon: "module-language.svg"}},
{name: "androidSettings", kind: "Sugar.DialogSettingsItem", ontap: "androidSettingsClicked", text: "AndroidSettings", icon: {directory: "icons", icon: "android-preferences.svg"}, showing: false},
{name: "resetLauncher", kind: "Sugar.DialogSettingsItem", ontap: "resetLauncherPopup", text: "ResetLauncher", icon: {directory: "icons", icon: "launcher-icon.svg"}, showing: false}
]},
]},
{name: "subdialog"}
],
// Constructor
create: function() {
this.inherited(arguments);
this.$.settingssearch.setPlaceholder(l10n.get("SearchSettings"));
this.$.me.setText(l10n.get("AboutMe"));
this.$.computer.setText(l10n.get("AboutMyComputer"));
this.$.security.setText(l10n.get("MySecurity"));
this.$.privacy.setText(l10n.get("MyPrivacy"));
this.$.language.setText(l10n.get("Language"));
this.$.aboutserver.setText(l10n.get("Server"));
if (util.getClientType() == constant.webAppType || preferences.isConnected()) {
this.$.security.setShowing(true);
this.$.privacy.setShowing(true);
}
if (window.sugarizerOS) {
sugarizerOS.getLauncherPackageName(function(value) {sugarizerOS.launcherPackageName = value;});
this.$.androidSettings.setText(l10n.get("AndroidSettings"));
this.$.androidSettings.show();
this.$.resetLauncher.show();
this.$.resetLauncher.setText(l10n.get("ResetLauncher"));
}
if (l10n.language.direction == "rtl") {
this.$.me.addClass("rtl-10");
this.$.computer.addClass("rtl-10");
this.$.security.addClass("rtl-10");
this.$.privacy.addClass("rtl-10");
this.$.language.addClass("rtl-10");
this.$.aboutserver.addClass("rtl-10");
}
if (util.getClientType() == constant.webAppType) {
this.$.security.setShowing(true);
}
this.subdialog = null;
},
rendered: function() {
this.inherited(arguments);
app.noresize = true; // HACK: Forbid home resizing when popup is displayed to avoid modal issue
this.$.me.render();
this.$.donebutton.setNodeProperty("title", l10n.get("Done"));
var margin = this.centerDialog(this);
this.$.content.applyStyle("height", (margin.height)+"px");
this.$.scroller.render();
},
centerDialog: function(dialog) {
var margin = util.computeMargin({width: 800, height: 500}, {width: 0.95, height: 0.95});
dialog.applyStyle("margin-left", margin.left+"px");
dialog.applyStyle("margin-top", (margin.top-55)+"px");
return margin;
},
// Events
filterSettings: function() {
var filter = this.$.settingssearch.getText().toLowerCase();
stats.trace('my_settings', 'search', 'q='+filter, null);
enyo.forEach(this.$.content.getControls(), function(item) {
item.setDisabled(item.getText().toLowerCase().indexOf(filter) == -1 && filter.length != 0);
});
},
closeSettings: function() {
this.hide();
app.noresize = false;
},
// Display me dialog
meClicked: function() {
if (!this.$.me.getDisabled()) {
stats.trace('my_settings', 'click', 'about_me', null);
this.hide();
this.subdialog = this.$.subdialog.createComponent({kind: "Sugar.DialogAboutme"}, {owner:this});
this.subdialog.show();
}
},
computerClicked: function() {
if (!this.$.computer.getDisabled()) {
stats.trace('my_settings', 'click', 'about_my_computer', null);
this.hide();
this.subdialog = this.$.subdialog.createComponent({kind: "Sugar.DialogComputer"}, {owner:this});
this.subdialog.show();
}
},
securityClicked: function() {
if (!this.$.security.getDisabled()) {
stats.trace('my_settings', 'click', 'security', null);
this.hide();
this.subdialog = this.$.subdialog.createComponent({kind: "Sugar.DialogSecurity"}, {owner:this});
this.subdialog.show();
}
},
privacyClicked: function() {
if (!this.$.security.getDisabled()) {
stats.trace('my_settings', 'click', 'privacy', null);
this.hide();
this.subdialog = this.$.subdialog.createComponent({kind: "Sugar.DialogPrivacy"}, {owner:this});
this.subdialog.show();
}
},
languageClicked: function() {
if (!this.$.language.getDisabled()) {
stats.trace('my_settings', 'click', 'language', null);
this.hide();
this.subdialog = this.$.subdialog.createComponent({kind: "Sugar.DialogLanguage"}, {owner:this});
this.subdialog.show();
}
},
serverClicked: function() {
if (!this.$.aboutserver.getDisabled()) {
stats.trace('my_settings', 'click', 'about_my_server', null);
this.hide();
this.subdialog = this.$.subdialog.createComponent({kind: "Sugar.DialogServer"}, {owner:this});
this.subdialog.show();
}
},
androidSettingsClicked: function() {
if (window.sugarizerOS){
sugarizerOS.runSettings();
}
this.hide();
},
resetLauncherPopup: function(){
this.hide();
this.subdialog = this.$.subdialog.createComponent({kind:"Sugar.DialogSetLauncher"}, {owner:this});
this.subdialog.show();
}
});
// Set Launcher dialog
enyo.kind({
name: "Sugar.DialogSetLauncher",
kind: "enyo.Popup",
classes: "module-dialog",
centered: false,
modal: true,
floating: true,
autoDismiss: false,
components: [
{name: "toolbar", classes: "toolbar", components: [
{name: "icon", kind: "Sugar.Icon", x: 6, y: 6, classes: "module-icon", colorized: true, size: constant.sizeToolbar, icon: {directory: "icons", icon: "owner-icon.svg"}},
{name: "text", content: "xxx", classes: "module-text"},
{name: "cancelbutton", kind: "Button", classes: "toolbutton module-cancel-button", ontap: "cancel"},
{name: "okbutton", kind: "Button", classes: "toolbutton module-ok-button", ontap: "ok"}
]},
{name: "warningbox", kind: "Sugar.DialogSettingsWarningBox", showing: false, onCancel: "cancel", onRestart: "restart"},
{name: "content", components: [
{name: "message", content: "xxx", classes: "launcher-message" },
{classes: "launcher-icons", components: [
{name: "nativeIcon", kind: "Sugar.Icon", classes: "setlauncher-icon native", icon: {directory: "icons", icon: "launcher-icon.svg"}, size: 100, ontap:"changeLauncher"},
{name: "sugarIcon", kind: "Sugar.Icon", classes: "setlauncher-icon sugar", icon: {directory: "icons", icon: "sugarizer.svg"}, size: 100, ontap:"changeLauncher"}
]},
]}
],
// Constructor
create: function() {
this.inherited(arguments);
this.$.text.setContent(l10n.get("SetLauncherTitle"));
this.$.message.setContent(l10n.get("SetLauncherText", {launcher:sugarizerOS.launcherPackageName}));
if (l10n.language.direction == "rtl") {
this.$.text.addClass("rtl-10");
}
if (window.sugarizerOS) {
if (sugarizerOS.launcherPackageName == sugarizerOS.packageName) {
this.$.sugarIcon.addClass("selected");
}
else {
this.$.nativeIcon.addClass("selected");
}
}
},
rendered: function() {
this.inherited(arguments);
this.$.icon.render();
this.$.cancelbutton.setNodeProperty("title", l10n.get("Cancel"));
this.$.okbutton.setNodeProperty("title", l10n.get("Ok"));
this.owner.centerDialog(this);
},
// Event handling
cancel: function() {
this.hide();
},
restart: function() {
sugarizerOS.chooseLauncher();
this.hide();
},
changeLauncher: function() {
this.$.warningbox.setShowing(true);
}
});
// Enter Wireless key dialog
enyo.kind({
name: "Sugar.DialogNetworkKey",
kind: "enyo.Popup",
classes: "module-dialog-wifikey",
centered: false,
modal: true,
floating: true,
autoDismiss: false,
components: [
{name: "toolbar", classes: "toolbar", components: [
{name: "icon", kind: "Sugar.Icon", x: 6, y: 6, classes: "module-icon", colorized: true, size: constant.sizeToolbar, icon: {directory: "icons", icon: "owner-icon.svg"}},
{name: "text", content: "xxx", classes: "module-text"},
{name: "cancelbutton", kind: "Button", classes: "toolbutton module-cancel-button", ontap: "cancel"},
{name: "okbutton", kind: "Button", classes: "toolbutton module-ok-button", ontap: "ok"}
]},
{name: "content", components: [
{classes: "enterkey", components: [
{name: "keyInput", kind: "Input", classes: "enterkey-input", oninput:"keychanged"}
]}
]}
],
// Constructor
create: function() {
this.inherited(arguments);
this.$.text.setContent(l10n.get("EnterKey") + " [" + sugarizerOS.NetworkBuffer.SSID + "]");
if (sugarizerOS.sharedKeyBuffer) {
this.$.keyInput.setValue(sugarizerOS.sharedKeyBuffer);
} else {
this.$.keyInput.setValue("");
}
if (l10n.language.direction == "rtl") {
this.$.text.addClass("rtl-10");
}
},
rendered: function() {
this.inherited(arguments);
this.$.icon.render();
this.$.cancelbutton.setNodeProperty("title", l10n.get("Cancel"));
this.$.okbutton.setNodeProperty("title", l10n.get("Ok"));
this.centerDialog(this);
},
// Event handling
cancel: function() {
this.hide();
},
ok: function() {
sugarizerOS.sharedKeyBuffer = this.$.keyInput.getValue();
sugarizerOS.setKey(sugarizerOS.NetworkBuffer.SSID, sugarizerOS.sharedKeyBuffer, true);
this.hide();
this.$.okbutton.setDisabled(true);
this.$.cancelbutton.setDisabled(true);
},
keychanged: function() {
},
connect: function() {
},
centerDialog: function(dialog) {
var margin = util.computeMargin({width: 500, height: 150}, {width: 0.95, height: 0.25});
dialog.applyStyle("margin-left", margin.left+"px");
dialog.applyStyle("margin-top", (margin.top-55-40)+"px");
}
});
// About me dialog
enyo.kind({
name: "Sugar.DialogAboutme",
kind: "enyo.Popup",
classes: "module-dialog",
centered: false,
modal: true,
floating: true,
autoDismiss: false,
components: [
{name: "toolbar", classes: "toolbar", components: [
{name: "icon", kind: "Sugar.Icon", x: 6, y: 6, classes: "module-icon", colorized: true, size: constant.sizeToolbar, icon: {directory: "icons", icon: "owner-icon.svg"}},
{name: "text", content: "xxx", classes: "module-text"},
{name: "cancelbutton", kind: "Button", classes: "toolbutton module-cancel-button", ontap: "cancel"},
{name: "okbutton", kind: "Button", classes: "toolbutton module-ok-button", ontap: "ok"}
]},
{name: "warningbox", kind: "Sugar.DialogSettingsWarningBox", showing: false, onCancel: "cancel", onRestart: "restart"},
{name: "content", components: [
{name: "message", content: "xxx", classes: "aboutme-message"},
{classes: "aboutme-icons", components: [
{name: "psicon", kind: "Sugar.Icon", x: 0, y: 6, classes: "aboutme-icon aboutme-psicon", size: constant.sizeOwner, icon: {directory: "icons", icon: "owner-icon.svg"}, ontap:"setcolor"},
{name: "nsicon", kind: "Sugar.Icon", x: -12, y: 6, classes: "aboutme-icon aboutme-nsicon", size: constant.sizeOwner, icon: {directory: "icons", icon: "owner-icon.svg"}, ontap:"setcolor"},
{name: "cicon", kind: "Sugar.Icon", x: 6, y: 6, classes: "aboutme-icon aboutme-cicon", size: constant.sizeOwner, icon: {directory: "icons", icon: "owner-icon.svg"}, ontap:"setcolor"},
{name: "pficon", kind: "Sugar.Icon", x: 0, y: 6, classes: "aboutme-icon aboutme-pficon", size: constant.sizeOwner, icon: {directory: "icons", icon: "owner-icon.svg"}, ontap:"setcolor"},
{name: "nficon", kind: "Sugar.Icon", x: -12, y: 6, classes: "aboutme-icon aboutme-nficon", size: constant.sizeOwner, icon: {directory: "icons", icon: "owner-icon.svg"}, ontap:"setcolor"}
]},
{classes: "aboutme-input", components: [
{name: "name", kind: "Input", classes: "aboutme-name", oninput:"namechanged"}
]},
{name: "restartmessage", content: "xxx", classes: "aboutme-restart", showing: false}
]}
],
// Constructor
create: function() {
this.inherited(arguments);
this.$.text.setContent(l10n.get("AboutMe"));
this.$.message.setContent(l10n.get("ClickToChangeColor"));
this.$.restartmessage.setContent(l10n.get("ChangesRequireRestart"));
this.initcolor = this.currentcolor = preferences.getColor();
this.initname = this.currentname = preferences.getName();
this.$.name.setValue(this.initname);
if (l10n.language.direction == "rtl") {
this.$.text.addClass("rtl-10");
this.$.name.addClass("rtl-10");
this.$.message.addClass("rtl-10");
this.$.restartmessage.addClass("rtl-10");
}
},
rendered: function() {
this.inherited(arguments);
this.$.icon.render();
this.$.cancelbutton.setNodeProperty("title", l10n.get("Cancel"));
this.$.okbutton.setNodeProperty("title", l10n.get("Ok"));
var xosize = (util.getCanvasCenter().dx < 515 ? constant.sizeOwner/2 : constant.sizeOwner);
this.$.pficon.setSize(xosize);
this.$.pficon.setColorizedColor(util.getPreviousFillColor(this.currentcolor));
this.$.pficon.setColorized(true);
this.$.psicon.setSize(xosize);
this.$.psicon.setColorizedColor(util.getPreviousStrokeColor(this.currentcolor));
this.$.psicon.setColorized(true);
this.$.cicon.setSize(xosize);
this.$.cicon.setColorizedColor(this.currentcolor);
this.$.cicon.setColorized(true);
this.$.nficon.setSize(xosize);
this.$.nficon.setColorizedColor(util.getNextFillColor(this.currentcolor));
this.$.nficon.setColorized(true);
this.$.nsicon.setSize(xosize);
this.$.nsicon.setColorizedColor(util.getNextStrokeColor(this.currentcolor));
this.$.nsicon.setColorized(true);
this.$.name.setValue(this.currentname);
this.owner.centerDialog(this);
},
// Event handling
cancel: function() {
this.hide();
this.owner.show();
},
ok: function() {
if (this.currentcolor.stroke == "#00B20D" && this.currentcolor.fill == "#00EA11" && (this.currentname == "one laptop per child" || this.currentname == "OLPC France")) {
new Sugar.EE({mode:(this.currentname.indexOf("Fr")==-1?1:2)}).renderInto(document.getElementById("body"));
return;
}
if (this.currentcolor == this.initcolor && this.currentname == this.initname) {
this.hide();
this.owner.show();
return;
}
this.$.warningbox.setShowing(true);
this.$.okbutton.setDisabled(true);
this.$.cancelbutton.setDisabled(true);
this.$.name.addRemoveClass('aboutme-name-validate', true);
},
setcolor: function(icon) {
var newcolor = icon.getColorizedColor();
if (newcolor == this.currentcolor) {
return;
}
this.currentcolor = newcolor;
this.render();
this.$.restartmessage.setShowing(true);
},
namechanged: function() {
this.$.restartmessage.setShowing(true);
this.currentname = this.$.name.getValue().trim();
},
restart: function() {
stats.trace('my_settings_about_me', 'change', 'name_color', null);
preferences.setName(this.currentname);
preferences.setColor(util.getColorIndex(this.currentcolor));
preferences.save();
var that = this;
preferences.saveToServer(myserver, function() {
util.restartApp();
}, function(error, code) {
that.$.warningbox.setShowing(false);
that.$.okbutton.setDisabled(false);
that.$.cancelbutton.setDisabled(false);
that.currentname = preferences.getName();
if (code == 22) {
that.$.restartmessage.setContent(l10n.get("UserAlreadyExist"));
} else {
that.$.restartmessage.setContent(l10n.get("ServerError", {code: code}));
}
});
}
});
// Language dialog
enyo.kind({
name: "Sugar.DialogSecurity",
kind: "enyo.Popup",
classes: "module-dialog",
centered: false,
modal: true,
floating: true,
autoDismiss: false,
components: [
{name: "toolbar", classes: "toolbar", components: [
{name: "icon", kind: "Sugar.Icon", x: 6, y: 6, classes: "module-icon", size: constant.sizeToolbar, icon: {directory: "icons", icon: "login-icon.svg"}},
{name: "text", content: "xxx", classes: "module-text"},
{name: "cancelbutton", kind: "Button", classes: "toolbutton module-cancel-button", ontap: "cancel"},
{name: "okbutton", kind: "Button", classes: "toolbutton module-ok-button", ontap: "ok"}
]},
{name: "content", components: [
{name: "message", content: "xxx", classes: "security-message"},
{name: "password", kind: "Sugar.Password", classes: "security-password", onEnter: "next"},
{name: "next", kind: "Sugar.IconButton", icon: {directory: "icons", icon: "go-right.svg"}, classes: "security-rightbutton", ontap: "next"},
{name: "spinner", kind: "Image", src: "images/spinner-light.gif", classes: "security-spinner", showing: false},
{name: "warningmessage", content: "xxx", classes: "security-warning", showing: false}
]}
],
// Constructor
create: function() {
this.inherited(arguments);
this.$.text.setContent(l10n.get("MySecurity"));
this.$.message.setContent(l10n.get("SecurityMessage"));
this.$.next.setText(l10n.get("Next"));
this.$.password.startInputListening();
if (l10n.language.direction == "rtl") {
this.$.text.addClass("rtl-10");
this.$.message.addClass("rtl-10");
}
this.step = 0;
},
rendered: function() {
this.inherited(arguments);
this.$.cancelbutton.setNodeProperty("title", l10n.get("Cancel"));
this.$.okbutton.setNodeProperty("title", l10n.get("Ok"));
this.owner.centerDialog(this);
},
// Event handling
cancel: function() {
this.$.password.stopInputListening();
this.hide();
this.owner.show();
},
ok: function() {
this.$.password.stopInputListening();
this.hide();
this.owner.show();
},
next: function() {
var that = this;
var user = {
"name": preferences.getName(),
"password": this.$.password.getPassword()
};
if (this.step == 0) {
that.$.spinner.setShowing(true);
myserver.loginUser(user, function(loginSender, loginResponse) {
preferences.setToken({'x_key': loginResponse.user._id, 'access_token': loginResponse.token});
that.$.warningmessage.setShowing(false);
that.$.password.setPassword("");
that.$.next.setText(l10n.get("Done"));
that.$.message.setContent(l10n.get("SecurityMessageNew", {min: util.getMinPasswordSize()}));
that.step++;
that.$.spinner.setShowing(false);
},
function(response, error) {
if (error == 1) {
that.$.warningmessage.setContent(l10n.get("InvalidPassword"));
} else {
that.$.warningmessage.setContent(l10n.get("ServerError", {code: error}));
}
that.$.warningmessage.setShowing(true);
that.$.spinner.setShowing(false);
});
} else {
var pass = this.$.password.getPassword();
if (pass.length == 0 || pass.length < util.getMinPasswordSize()) {
return;
}
that.$.spinner.setShowing(true);
myserver.putUser(
preferences.getNetworkId(),
{
password: this.$.password.getPassword()
},
function(inSender, inResponse) {
that.$.message.setContent(l10n.get("SecurityMessageDone"));
that.$.next.setShowing(false);
that.$.password.setShowing(false);
that.$.warningmessage.setShowing(false);
that.$.spinner.setShowing(false);
},
function(response, error) {
that.$.warningmessage.setContent(l10n.get("ServerError", {code: error}));
that.$.warningmessage.setShowing(true);
that.$.spinner.setShowing(false);
}
);
}
}
});
// Language dialog
enyo.kind({
name: "Sugar.DialogLanguage",
kind: "enyo.Popup",
classes: "module-dialog",
centered: false,
modal: true,
floating: true,
autoDismiss: false,
components: [
{name: "toolbar", classes: "toolbar", components: [
{name: "icon", kind: "Sugar.Icon", x: 6, y: 6, classes: "module-icon", size: constant.sizeToolbar, icon: {directory: "icons", icon: "module-language.svg"}},
{name: "text", content: "xxx", classes: "module-text"},
{name: "cancelbutton", kind: "Button", classes: "toolbutton module-cancel-button", ontap: "cancel"},
{name: "okbutton", kind: "Button", classes: "toolbutton module-ok-button", ontap: "ok"}
]},
{name: "warningbox", kind: "Sugar.DialogSettingsWarningBox", showing: false, onCancel: "cancel", onRestart: "restart"},
{name: "content", components: [
{name: "message", content: "xxx", classes: "language-message"},
{name: "languageselect", kind: "Sugar.SelectBox", classes: "language-select", onIndexChanged: "languageChanged"},
{name: "restartmessage", content: "xxx", classes: "language-restart", showing: false}
]}
],
// Constructor
create: function() {
this.inherited(arguments);
this.$.text.setContent(l10n.get("Language"));
this.$.message.setContent(l10n.get("ChooseLanguage"));
this.initlanguage = this.currentlanguage = preferences.getLanguage();
this.languageset = [
{code: "en", icon: null, name: "English (" + l10n.get("English") +")"},
{code: "es", icon: null, name: "Español (" + l10n.get("Spanish") +")"},
{code: "fr", icon: null, name: "Français (" + l10n.get("French") +")"},
{code: "de", icon: null, name: "Deutsch (" + l10n.get("German") +")"},
{code: "pt", icon: null, name: "Português (" + l10n.get("Portuguese") +")"},
{code: "ar", icon: null, name: "عربي (" + l10n.get("Arabic") +")"},
{code: "ja", icon: null, name: "日本語 (" + l10n.get("Japanese") +")"},
{code: "pl", icon: null, name: "Polski (" + l10n.get("Polish") +")"},
{code: "ibo", icon: null, name: "Igbo (" + l10n.get("Igbo") +")"},
{code: "yor", icon: null, name: "Yoruba (" + l10n.get("Yoruba") +")"}
];
this.$.languageselect.setItems(this.languageset);
for (var i = 0 ; i < this.languageset.length ; i++) {
if (this.languageset[i].code == this.initlanguage) {
this.$.languageselect.setSelected(i);
break;
}
}
this.$.restartmessage.setContent(l10n.get("ChangesRequireRestart"));
if (l10n.language.direction == "rtl") {
this.$.text.addClass("rtl-10");
this.$.message.addClass("rtl-10");
this.$.restartmessage.addClass("rtl-10");
}
},
rendered: function() {
this.inherited(arguments);
this.$.cancelbutton.setNodeProperty("title", l10n.get("Cancel"));
this.$.okbutton.setNodeProperty("title", l10n.get("Ok"));
this.$.languageselect.setParentMargin(this);
this.owner.centerDialog(this);
},
// Event handling
cancel: function() {
this.hide();
this.owner.show();
},
ok: function() {
if (this.currentlanguage == this.initlanguage) {
this.hide();
this.owner.show();
return;
}
this.$.warningbox.setShowing(true);
this.$.okbutton.setDisabled(true);
this.$.cancelbutton.setDisabled(true);
},
languageChanged: function() {
this.$.restartmessage.setShowing(true);
this.currentlanguage = this.languageset[this.$.languageselect.getSelected()].code;
},
restart: function() {
stats.trace('my_settings_language', 'change', 'language', null);
preferences.setLanguage(this.currentlanguage);
preferences.save();
preferences.saveToServer(myserver, function() {
util.restartApp();
}, function() {
util.restartApp();
});
}
});
// Computer dialog
enyo.kind({
name: "Sugar.DialogComputer",
kind: "enyo.Popup",
classes: "module-dialog",
centered: false,
modal: true,
floating: true,
autoDismiss: false,
components: [
{name: "toolbar", classes: "toolbar", components: [
{name: "icon", kind: "Sugar.Icon", x: 6, y: 6, classes: "module-icon", size: constant.sizeToolbar, icon: {directory: "icons", icon: "module-about_my_computer.svg"}},
{name: "text", content: "xxx", classes: "module-text"},
{name: "cancelbutton", kind: "Button", classes: "toolbutton module-cancel-button", ontap: "cancel"},
{name: "okbutton", kind: "Button", classes: "toolbutton module-ok-button", ontap: "ok"}
]},
{name: "warningbox", kind: "Sugar.DialogSettingsWarningBox", showing: false, onCancel: "cancel", onRestart: "reinit"},
{name: "content", kind: "Scroller", classes: "computer-content", components: [
{name: "software", content: "xxx", classes: "computer-software"},
{content: "Sugarizer:", classes: "computer-sugarizer"},
{name: "sugarizer_value", classes: "computer-value", ontap: "version"},
{classes: "computer-line"},
{name: "clienttype", classes: "computer-clienttype"},
{name: "clienttype_value", classes: "computer-value"},
{classes: "computer-line"},
{name: "browser", content: "xxx", classes: "computer-browser"},
{name: "browser_value", classes: "computer-value"},
{classes: "computer-line"},
{name: "browserversion", content: "xxx", classes: "computer-browserversion"},
{name: "browserversion_value", classes: "computer-value"},
{classes: "computer-line"},
{name: "useragent", content: "xxx", classes: "computer-useragent"},
{name: "useragent_value", classes: "computer-value"},
{name: "storage", content: "xxx", classes: "computer-storage"},
{name: "storage_value", classes: "computer-value"},
{classes: "computer-line"},
{name: "reinitcheck", showing: false, kind: "Input", type: "checkbox", classes: "toggle computer-reinitcheck", onchange: "switchInit"},
{name: "reinittext", showing: false, content: "xxx", classes: "computer-reinit"},
{classes: "computer-line"},
{name: "copyright", content: "xxx", classes: "computer-copyright"},
{content: "© 2013-2019 Lionel Laské, Sugar Labs Inc and Contributors", classes: "computer-contributor"},
{name: "license", content: "xxx", classes: "computer-licence"},
{name: "licenseplus", content: "xxx", classes: "computer-licence"},
{name: "warningmessage", showing: false, content: "xxx", classes: "computer-warningmessage", showing: false}
]}
],
// Constructor
create: function() {
this.inherited(arguments);
this.$.text.setContent(l10n.get("AboutMyComputer"));
this.$.software.setContent(l10n.get("Software"));
this.$.browser.setContent(l10n.get("Browser"));
this.$.clienttype.setContent(l10n.get("ClientType"));
this.$.browserversion.setContent(l10n.get("BrowserVersion"));
this.$.useragent.setContent(l10n.get("UserAgent"));
this.$.storage.setContent(l10n.get("Storage"));
this.$.copyright.setContent(l10n.get("Copyright"));
this.$.license.setContent(l10n.get("LicenseTerms"));
this.$.licenseplus.setContent(l10n.get("LicenseTermsPlus"));
this.$.warningmessage.setContent(l10n.get("AllDataWillBeLost"));
this.$.reinittext.setContent(l10n.get("ReinitJournalAndSettings"));
this.notify = humane.create({ timeout: 1000, baseCls: 'humane-libnotify' })
this.clickLeft = 3;
this.$.sugarizer_value.setContent(constant.sugarizerVersion);
this.$.clienttype_value.setContent(util.getClientName());
this.$.browser_value.setContent(util.getBrowserName());
this.$.browserversion_value.setContent(util.getBrowserVersion());
this.$.useragent_value.setContent(navigator.userAgent);
var that = this;
util.computeDatastoreSize(function(size) {
that.$.storage_value.setContent(l10n.get("StorageSize", {used: size.bytes, formatted: size.formatted}));
});
if (l10n.language.direction == "rtl") {
this.$.text.addClass("rtl-10");
this.$.software.addClass("rtl-10");
this.$.browser.addClass("rtl-10");
this.$.clienttype.addClass("rtl-10");
this.$.browserversion.addClass("rtl-10");
this.$.useragent.addClass("rtl-10");
this.$.storage.addClass("rtl-10");
this.$.copyright.addClass("rtl-10");
this.$.license.addClass("rtl-10");
}
},
rendered: function() {
this.inherited(arguments);
this.$.cancelbutton.setNodeProperty("title", l10n.get("Cancel"));
this.$.okbutton.setNodeProperty("title", l10n.get("Ok"));
this.owner.centerDialog(this);
},
// Event handling
cancel: function() {
this.hide();
this.owner.show();
},
ok: function() {
if (this.$.reinitcheck.getNodeProperty("checked")) {
this.$.warningbox.setShowing(true);
this.$.okbutton.setDisabled(true);
this.$.cancelbutton.setDisabled(true);
} else {
this.hide();
this.owner.show();
}
},
reinit: function() {
util.cleanDatastore(true, function() {
util.restartApp();
});
},
switchInit: function() {
this.$.warningmessage.setShowing(this.$.reinitcheck.getNodeProperty("checked"));
},
version: function() {
this.clickLeft--;
if (this.clickLeft == 0) {
this.$.reinittext.setShowing(true);
this.$.reinitcheck.setShowing(true);
} else if (this.clickLeft > 0) {
this.notify.log(l10n.get("ClickMore"));
}
}
});
// Server dialog
enyo.kind({
name: "Sugar.DialogServer",
kind: "enyo.Popup",
classes: "module-dialog",
centered: false,
modal: true,
floating: true,
autoDismiss: false,
components: [
{name: "toolbar", classes: "toolbar", components: [
{name: "icon", kind: "Sugar.Icon", x: 6, y: 6, classes: "module-icon", size: constant.sizeToolbar, icon: {directory: "icons", icon: "cloud-settings.svg"}},
{name: "text", content: "xxx", classes: "module-text"},
{name: "cancelbutton", kind: "Button", classes: "toolbutton module-cancel-button", ontap: "cancel"},
{name: "okbutton", kind: "Button", classes: "toolbutton module-ok-button", ontap: "ok"}
]},
{name: "warningbox", kind: "Sugar.DialogSettingsWarningBox", showing: false, onCancel: "cancel", onRestart: "restart"},
{name: "content", components: [
{name: "connected", kind: "Input", type: "checkbox", classes: "toggle aboutserver-checkbox", onchange: "switchConnection"},
{name: "textconnected", content: "xxx", classes: "aboutserver-message"},
{components:[
{name: "textservername", content: "xxx", classes: "aboutserver-serverlabel"},
{name: "servername", kind: "Input", classes: "aboutserver-servername", onkeydown: "enterclick"},
{name: "qrbutton", kind: "Sugar.Icon", size: constant.sizeEmpty, icon: {directory: "icons", icon: "qrcode.svg"}, ontap: "scanQR", classes: "aboutserver-qr", showing: false}
]},
{name: "serversettingsname", classes: "aboutserver-settingsname"},
{name: "serversettingsvalue", classes: "aboutserver-settingsvalue"},
{name: "serverdescription", classes: "aboutserver-description"},
{name: "serverdescriptionvalue", classes: "aboutserver-descriptionvalue"},
{components:[
{name: "textusername", content: "xxx", classes: "aboutserver-userlabel"},
{name: "username", kind: "Input", classes: "aboutserver-username", oninput: "changed"}
]},
{name: "passwordmessage", classes: "aboutserver-passwordmessage"},
{name: "password", kind: "Sugar.Password", classes: "aboutserver-password", onEnter: "next"},
{name: "next", kind: "Sugar.IconButton", icon: {directory: "icons", icon: "go-right.svg"}, classes: "aboutserver-rightbutton", ontap: "next"},
{name: "spinner", kind: "Image", src: "images/spinner-light.gif", classes: "aboutserver-spinner", showing: false},
{name: "warningmessage", content: "xxx", classes: "aboutserver-warningmessage", showing: false}
]}
],
// Constructor
create: function() {
this.inherited(arguments);
this.$.text.setContent(l10n.get("Server"));
this.$.textconnected.setContent(l10n.get("ConnectedToServer"));
this.$.textservername.setContent(l10n.get("ServerUrl"));
this.$.serversettingsname.setContent(l10n.get("ServerName"));
this.$.serverdescription.setContent(l10n.get("ServerDescription"));
this.$.textusername.setContent(l10n.get("UserId"));
this.$.next.setText(l10n.get("Next"));
this.currentserver = preferences.getServer();
this.initconnected = preferences.isConnected();
this.initservername = (this.currentserver && this.currentserver.url) ? this.currentserver.url : util.getCurrentServerUrl();
this.initusername = preferences.getName();
this.networkId = null;
this.forbidcheck = false;
if (l10n.language.direction == "rtl") {
this.$.text.addClass("rtl-10");
this.$.textconnected.addClass("rtl-10");
this.$.warningmessage.addClass("rtl-10");
this.$.textservername.addClass("rtl-10");
this.$.textusername.addClass("rtl-10");
this.$.textusermessage.addClass("rtl-10");
this.$.next.addClass("rtl-10");
}
this.step = 0;
if (util.getClientType() == constant.webAppType) {
this.step = 3;
} else {
if (!this.initconnected) {
this.step = 0;
} else {
var token = preferences.getToken();
if (token && token.expired) {
this.step = 2;
} else {
this.step = 3;
}
}
}
this.displayStep();
},
rendered: function() {
this.inherited(arguments);
this.$.cancelbutton.setNodeProperty("title", l10n.get("Cancel"));
this.$.okbutton.setNodeProperty("title", l10n.get("Ok"));
this.$.connected.setNodeProperty("checked", this.initconnected);
if (util.getClientType() == constant.webAppType) {
this.$.servername.setDisabled(true);
this.$.username.setDisabled(true);
}
this.centerDialog(this);
},
centerDialog: function(dialog) {
var margin = util.computeMargin({width: 800, height: 500}, {width: 0.95, height: 0.95});
dialog.applyStyle("margin-left", margin.left+"px");
dialog.applyStyle("margin-top", (margin.top-55)+"px");
return margin;
},
displayStep: function() {
var
vtextservername = false,
vserversettingsname = false,
vserverdescription = false,
vtextservername = false,
vservername = false,
vserversettingsvalue = false,
vserverdescriptionvalue = false,
vserverqr = false,
vtextusername = false,
vusername = false,
vnext = false,
vpasswordmessage = false,
vpassword = false;
if (this.step == 0) {
this.$.passwordmessage.setContent(l10n.get("PleaseConnectMessage"));
vpasswordmessage = true;
} else if (this.step == 1) {
this.$.servername.setValue(constant.defaultServer);
vtextservername = vservername = vnext = true;
vserverqr = (enyo.platform.ios || enyo.platform.android || enyo.platform.androidChrome);
} else if (this.step == 2) {
vpasswordmessage = vpassword = vnext = true;
this.$.password.startInputListening();
if (preferences.getToken() && preferences.getToken().expired) {
this.$.passwordmessage.setContent(l10n.get("SecurityMessageExpired", {min: util.getMinPasswordSize()}));
} else {
this.$.passwordmessage.setContent(l10n.get("SecurityMessageNew", {min: util.getMinPasswordSize()}));
}
} else if (this.step == 3) {
this.$.servername.setValue(this.initservername);
this.$.username.setValue(this.initusername);
this.$.serversettingsvalue.setContent(this.currentserver.name);
this.$.serverdescriptionvalue.setContent(this.currentserver.description);
this.$.servername.setDisabled(true);
vtextservername = vserversettingsname = vserverdescription = vtextservername = vservername = vserversettingsvalue = vserverdescriptionvalue = vtextusername = vusername = true;
}
this.$.textservername.setShowing(vtextservername);
this.$.serversettingsname.setShowing(vserversettingsname);
this.$.serverdescription.setShowing(vserverdescription);
this.$.textservername.setShowing(vtextservername);
this.$.servername.setShowing(vservername);
this.$.qrbutton.setShowing(vserverqr);
this.$.serversettingsvalue.setShowing(vserversettingsvalue);
this.$.serverdescriptionvalue.setShowing(vserverdescriptionvalue);
this.$.textusername.setShowing(vtextusername);
this.$.username.setShowing(vusername);
this.$.next.setShowing(vnext);
this.$.passwordmessage.setShowing(vpasswordmessage);
this.$.password.setShowing(vpassword);
},
// Event handling
cancel: function() {
if (!this.initconnected && this.hasChanged()) {
preferences.setServer(null);
}
this.hide();
this.owner.show();
this.$.password.stopInputListening();
},
ok: function() {
if (!this.hasChanged() || (this.$.connected.getNodeProperty("checked") && this.step != 3)) {
this.hide();
this.owner.show();
return;
}
this.$.warningbox.setShowing(true);
this.$.okbutton.setDisabled(true);
this.$.cancelbutton.setDisabled(true);
this.$.password.stopInputListening();
},
switchConnection: function() {
if (this.forbidcheck) {
this.$.connected.setNodeProperty("checked", !this.$.connected.getNodeProperty());
return;
}
this.forbidcheck = true;
if (util.getClientType() == constant.webAppType) {
this.$.connected.setNodeProperty("checked", true);
return;
}
if (this.step == 0) {
this.step++;
this.displayStep();
}
},
next: function() {
if (this.step == 1) {
// Retrieve server information
var that = this;
that.$.spinner.setShowing(true);
myserver.getServerInformation(this.$.servername.getValue(), function(inSender, inResponse) {
that.currentserver = inResponse;
that.currentserver.url = that.$.servername.getValue();
if (that.currentserver.secure) {
that.currentserver.url = that.currentserver.url.replace(constant.http, constant.https);
} else {
that.currentserver.url = that.currentserver.url.replace(constant.https, constant.http);
}
preferences.setServer(that.currentserver);
that.initservername = that.$.servername.getValue();
that.step++;
that.displayStep();
that.$.spinner.setShowing(false);
that.$.warningmessage.setShowing(false);
}, function() {
that.$.warningmessage.setContent(l10n.get("ErrorLoadingRemote"));
that.$.warningmessage.setShowing(true);
that.$.spinner.setShowing(false);
});
} else if (this.step == 2) {
// Validate password size
var pass = this.$.password.getPassword();
if (pass.length == 0 || pass.length < util.getMinPasswordSize()) {
return;
}
// Try first to create a new user
var that = this;
that.$.spinner.setShowing(true);
myserver.postUser(
{
name: preferences.getName(),
color: preferences.getColor(),
language: preferences.getLanguage(),
role: "student",
password: this.$.password.getPassword(),
options: { sync: preferences.getOptions("sync"), stats: preferences.getOptions("stats") }
},
function(inSender, inResponse) {
that.login();
},
function(response, error) {
// User already exist, try to login instead
if (error == 22) {
that.login();
} else {
that.$.warningmessage.setContent(l10n.get("ServerError", {code: error}));
that.$.warningmessage.setShowing(true);
that.$.spinner.setShowing(false);
}
}
);
}
},
login: function() {
var that = this;
var user = {
name: preferences.getName(),
password: that.$.password.getPassword()
};
myserver.loginUser(user, function(loginSender, loginResponse) {
that.step++;
that.displayStep();
that.networkId = loginResponse.user._id;
preferences.setToken({'x_key': that.networkId, 'access_token': loginResponse.token});
preferences.setPrivateJournal(loginResponse.user.private_journal);
preferences.setSharedJournal(loginResponse.user.shared_journal);
that.$.warningmessage.setContent(l10n.get("ChangesRequireRestart"));
that.$.warningmessage.setShowing(true);
that.$.spinner.setShowing(false);
that.$.warningbox.setShowing(true);
that.$.okbutton.setDisabled(true);
that.$.cancelbutton.setDisabled(true);
},
function(response, error) {
// Login error, retry
if (error == 1) {
that.$.warningmessage.setContent(l10n.get("UserLoginInvalid"));
} else {
that.$.warningmessage.setContent(l10n.get("ServerError", {code: error}));
}
that.$.warningmessage.setShowing(true);
that.$.spinner.setShowing(false);
}
);
},
restart: function() {
// Now ConnectedToServer
var nowconnected = this.$.connected.getNodeProperty("checked");
preferences.setConnected(nowconnected);
if (nowconnected) {
preferences.setNetworkId(this.networkId);
} else {
preferences.setNetworkId(null);
preferences.setServer(null);
preferences.setToken(null);
}
preferences.save();
util.restartApp();
},
// Handle QR Code scanner
scanQR: function() {
var that = this;
var toolbar = document.getElementById("toolbar");
this.hide();
toolbar.style.visibility = 'hidden';
util.scanQRCode(function(code) {
toolbar.style.visibility = 'visible';
that.show();
that.$.servername.setValue(code);
}, function() {
toolbar.style.visibility = 'visible';
that.show();
that.$.servername.focus();
that.$.servername.hasNode().select()
});
},
// Utility
hasChanged: function() {
var currentconnected = this.$.connected.getNodeProperty("checked");
return (this.initconnected != currentconnected);
},
enterclick: function(inSender, inEvent) {
if (inEvent.keyCode === 13) {
this.next();
return true;
}
}
});
// Privacy dialog
enyo.kind({
name: "Sugar.DialogPrivacy",
kind: "enyo.Popup",
classes: "module-dialog",
centered: false,
modal: true,
floating: true,
autoDismiss: false,
components: [
{name: "toolbar", classes: "toolbar", components: [
{name: "icon", kind: "Sugar.Icon", x: 6, y: 6, classes: "module-icon", size: constant.sizeToolbar, icon: {directory: "icons", icon: "privacy.svg"}},
{name: "text", content: "xxx", classes: "module-text"},
{name: "cancelbutton", kind: "Button", classes: "toolbutton module-cancel-button", ontap: "cancel"},
{name: "okbutton", kind: "Button", classes: "toolbutton module-ok-button", ontap: "ok"}
]},
{name: "warningbox", kind: "Sugar.DialogSettingsWarningBox", showing: false, onCancel: "cancel", onRestart: "restart"},
{name: "content", components: [
{name: "stats", kind: "Input", type: "checkbox", classes: "toggle privacy-statscheckbox"},
{name: "textstats", content: "xxx", classes: "privacy-statsmessage"},
{content: ""},
{name: "sync", kind: "Input", type: "checkbox", classes: "toggle privacy-synccheckbox"},
{name: "textsync", content: "xxx", classes: "privacy-syncmessage"},
]}
],
// Constructor
create: function() {
this.inherited(arguments);
this.$.text.setContent(l10n.get("MyPrivacy"));
this.$.textstats.setContent(l10n.get("PrivacyStats"));
this.$.textsync.setContent(l10n.get("PrivacySync"));
this.initstats = preferences.getOptions("stats");
this.initsync = preferences.getOptions("sync");
if (l10n.language.direction == "rtl") {
this.$.text.addClass("rtl-10");
this.$.textstats.addClass("rtl-10");
this.$.textsync.addClass("rtl-10");
}
},
rendered: function() {
this.inherited(arguments);
this.$.cancelbutton.setNodeProperty("title", l10n.get("Cancel"));
this.$.okbutton.setNodeProperty("title", l10n.get("Ok"));
this.$.stats.setNodeProperty("checked", !this.initstats);
this.$.sync.setNodeProperty("checked", !this.initsync);
this.owner.centerDialog(this);
},
// Event handling
cancel: function() {
this.hide();
this.owner.show();
},
ok: function() {
if (!this.hasChanged()) {
this.hide();
this.owner.show();
return;
}
this.$.warningbox.setShowing(true);
this.$.okbutton.setDisabled(true);
this.$.cancelbutton.setDisabled(true);
},
restart: function() {
if (this.hasChanged()) {
preferences.setOptions("stats", !this.$.stats.getNodeProperty("checked"));
preferences.setOptions("sync", !this.$.sync.getNodeProperty("checked"));
preferences.save();
preferences.saveToServer(myserver, null, null);
}
util.restartApp();
},
// Utility
hasChanged: function() {
var currentstats = !this.$.stats.getNodeProperty("checked");
var currentsync = !this.$.sync.getNodeProperty("checked");
return (this.initstats != currentstats || this.initsync != currentsync);
}
});
//-------------------------- Settings utility classes
// Class for an item in the settings dialog
enyo.kind({
name: "Sugar.DialogSettingsItem",
kind: enyo.Control,
classes: "settings-item",
published: {
icon: null,
text: null,
colorized: false,
disabled: false
},
components: [
{components: [
{name: "icon", kind: "Sugar.Icon", x: 6, y: 6, classes: "settings-item-icon", size: constant.sizeSettings, disabledBackground: "#000000"},
{name: "text", content: "xxx", classes: "settings-item-text"}
]}
],
// Constructor
create: function() {
this.inherited(arguments);
this.colorizedChanged();
this.iconChanged();
this.textChanged();
this.disabledChanged();
},
// Property changed
iconChanged: function() {
this.$.icon.setIcon(this.icon);
},
textChanged: function() {
this.$.text.setContent(this.text);
},
colorizedChanged: function() {
this.$.icon.setColorized(this.colorized);
},
disabledChanged: function() {
this.$.icon.setDisabled(this.disabled);
this.addRemoveClass('settings-item-text-disable', this.disabled);
this.addRemoveClass('settings-item-text-enable', !this.disabled);
}
});
// Class for a Warning box in settings
enyo.kind({
name: "Sugar.DialogSettingsWarningBox",
kind: enyo.Control,
classes: "settings-warningbox",
events: { onRestart: "", onCancel: "" },
components: [
{name: "warningtitle", content: "xxx", classes: "warningbox-title"},
{name: "warningmessage", content: "xxx", classes: "warningbox-message"},
{name: "warningcancel", kind: "Sugar.IconButton", icon: {directory: "icons", icon: "dialog-cancel.svg"}, classes: "warningbox-cancel-button", ontap: "cancel"},
{name: "warningrestart", kind: "Sugar.IconButton", icon: {directory: "icons", icon: "system-restart.svg"}, classes: "warningbox-refresh-button", ontap: "restart"}
],
// Constructor
create: function() {
this.inherited(arguments);
this.$.warningtitle.setContent(l10n.get("Warning"));
this.$.warningmessage.setContent(l10n.get("ChangesRequireRestart"));
this.$.warningcancel.setText(l10n.get("CancelChanges"));
this.$.warningrestart.setText(l10n.get("RestartNow"));
if (l10n.language.direction == "rtl") {
this.$.warningtitle.addClass("rtl-10");
this.$.warningmessage.addClass("rtl-10");
}
},
// Events
cancel: function() {
this.doCancel();
},
restart: function() {
this.doRestart();
}
});
//Dialog to change launcher on a native device
enyo.kind({
name: "Sugar.DialogChangeLauncher",
kind: "enyo.Popup",
classes: "module-dialog",
centered: false,
modal: true,
floating: true,
autoDismiss: false,
components: [
{name: "toolbar", classes: "toolbar", components: [
{name: "icon", kind: "Sugar.Icon", x: 6, y: 6, classes: "module-icon", colorized: true, size: constant.sizeToolbar, icon: {directory: "icons", icon: "owner-icon.svg"}},
{name: "text", content: "xxx", classes: "module-text"},
{name: "cancelbutton", kind: "Button", classes: "toolbutton module-cancel-button", ontap: "cancel"},
{name: "okbutton", kind: "Button", classes: "toolbutton module-ok-button", ontap: "ok"}
]},
{name: "warningbox", kind: "Sugar.DialogSettingsWarningBox", showing: false, onCancel: "cancel", onRestart: "restart"},
{name: "content", components: [
{classes: "enterkey", components: [
{name: "keyInput", kind: "Input", classes: "enterkey-input", oninput:"keychanged"}
]},
{name: "connectButton", kind: "Button", classes: "toolbutton", ontap: "ok"}
]}
],
// Constructor
create: function() {
this.inherited(arguments);
this.$.text.setContent(l10n.get("EnterKey"));
if (l10n.language.direction == "rtl") {
this.$.text.addClass("rtl-10");
}
},
rendered: function() {
this.inherited(arguments);
this.$.icon.render();
this.$.cancelbutton.setNodeProperty("title", l10n.get("Cancel"));
this.$.okbutton.setNodeProperty("title", l10n.get("Ok"));
this.$.connectButton.setContent(l10n.get("Ok"));
},
// Event handling
cancel: function() {
this.hide();
},
ok: function() {
sugarizerOS.sharedKeyBuffer = this.$.keyInput.getValue();
this.hide();
this.$.okbutton.setDisabled(true);
this.$.cancelbutton.setDisabled(true);
},
keychanged: function() {
},
connect: function() {
},
centerDialog: function(dialog) {
var margin = util.computeMargin({width: 800, height: 500}, {width: 0.95, height: 0.95});
dialog.applyStyle("margin-left", margin.left+"px");
dialog.applyStyle("margin-top", (margin.top-55)+"px");
}
});
// Waring message dialog
enyo.kind({
name: "Sugar.DialogWarningMessage",
kind: "enyo.Popup",
classes: "warning-dialog",
centered: false,
modal: true,
floating: true,
autoDismiss: true,
components: [
{name: "icon", kind: "Sugar.Icon", x: 6, y: 6, classes: "warningdialog-icon", size: constant.sizeToolbar, icon: {directory: "icons", icon: "emblem-warning.svg"}},
{name: "warningtitle", content: "xxx", classes: "warningdialog-title"},
{name: "warningmessage", content: "xxx", classes: "warningdialog-message"},
{name: "warningcancel", kind: "Sugar.IconButton", icon: {directory: "icons", icon: "dialog-cancel.svg"}, classes: "warningdialog-cancel-button", ontap: "cancel"},
{name: "warningrestart", kind: "Sugar.IconButton", icon: {directory: "icons", icon: "system-shutdown.svg"}, classes: "warningdialog-ok-button", ontap: "ok"},
],
// Constructor
create: function() {
this.inherited(arguments);
this.$.warningtitle.setContent(l10n.get("Warning"));
this.$.warningmessage.setContent(l10n.get("AllDataWillBeLost"));
this.$.warningcancel.setText(l10n.get("CancelChanges"));
this.$.warningrestart.setText(l10n.get("Logoff"));
},
rendered: function() {
this.inherited(arguments);
var margin = util.computeMargin({width: 800, height: 150}, {width: 0.95, height: 0.95});
this.applyStyle("margin-left", margin.left+"px");
this.applyStyle("margin-top", (margin.top-55)+"px");
},
// Event handling
cancel: function() {
this.hide();
},
ok: function() {
this.hide();
preferences.addUserInHistory();
util.cleanDatastore(null, function() {
util.restartApp();
});
}
});
// Class for a generic Warning box
enyo.kind({
name: "Sugar.GenericDialogBox",
kind: enyo.Control,
classes: "genericbox",
events: { onOk: "", onCancel: "", onShow: "", onHide: "" },
published: {
title: null,
message: null,
okText: '',
cancelText: ''
},
components: [
{name: "warningtitle", content: "xxx", classes: "genericbox-title"},
{name: "warningmessage", content: "xxx", classes: "genericbox-message"},
{name: "warningcancel", kind: "Sugar.IconButton", icon: {directory: "icons", icon: "dialog-cancel.svg"}, classes: "genericbox-cancel-button", ontap: "cancel"},
{name: "warningok", kind: "Sugar.IconButton", icon: {directory: "icons", icon: "dialog-ok.svg"}, classes: "genericbox-ok-button", ontap: "ok"}
],
// Constructor
create: function() {
this.inherited(arguments);
this.titleChanged();
this.messageChanged();
this.okTextChanged();
this.cancelTextChanged();
if (l10n.language.direction == "rtl") {
this.$.warningtitle.addClass("rtl-10");
this.$.warningmessage.addClass("rtl-10");
}
},
titleChanged: function() {
this.$.warningtitle.setContent(this.title);
},
messageChanged: function() {
this.$.warningmessage.setContent(this.message);
},
cancelTextChanged: function() {
this.$.warningcancel.setText(this.cancelText);
},
okTextChanged: function() {
this.$.warningok.setText(this.okText);
},
showingChanged: function() {
this.inherited(arguments);
if (this.showing) {
this.doShow();
} else {
this.doHide();
}
},
// Events
cancel: function() {
this.doCancel();
},
ok: function() {
this.doOk();
}
});