/HackPreferences.js
enyo.kind({
name: "HackPreferences",
kind: "VFlexBox",
events: {
"onClose": ""
},
components: [
{kind: "Header", content: "Preferences"},
{kind: "Scroller", flex: 1, components: [
{kind: "Control", className: "prefs-center", components: [
{kind: "RowGroup", name: "prefsContainer"},
{kind: "HFlexBox", pack: "center", components: [
{kind: "Button", className: "enyo-button-negative prefs-done-button", caption: "Reset to Defaults", onclick: "resetToDefaults"}
]}
]}
]},
{kind: "Toolbar", className: "enyo-toolbar-light", components: [
{kind: "Button", content: "Done", onclick: "close", className: "enyo-button-affirmative prefs-done-button"}
]}
],
load: function(name, prefs, values) {
this.$.prefsContainer.setCaption(name);
this.prefs = prefs;
for (var i = 0; i < this.prefs.length; i++) {
var p = this.prefs[i];
var c;
switch(p.kind) {
case 'Slider':
c = this.$.prefsContainer.createComponent({kind: "HFlexBox", align: "center", components: [{content: p.label, flex: 1}]});
var slider = c.createComponent(p, {owner: this.$.prefsContainer});
slider.setPosition(values[p.name]);
break;
default:
c = this.$.prefsContainer.createComponent(p, {owner: this.$.prefsContainer});
c.setValue(values[p.name]);
}
}
this.$.prefsContainer.render();
},
close: function() {
var o = {};
for (var i = 0; i < this.prefs.length; i++) {
var p = this.prefs[i];
var v;
switch (p.kind) {
case 'Slider':
v = this.$.prefsContainer.$[p.name].getPosition();
break;
default:
v = this.$.prefsContainer.$[p.name].getValue();
}
o[p.name] = v;
}
this.doClose(o);
this.cleanup();
},
resetToDefaults: function() {
this.doClose(null);
this.cleanup();
},
cleanup: function() {
var controls = this.$.prefsContainer.getControls();
for (var i = 0; i < controls.length; i++) {
// We destroy the parent because we want to destroy the
// row client, as well. This is probably a bug in
// Enyo.
controls[i].parent.destroy();
controls[i].destroy();
}
}
});