2 var View
= Backbone
.View
.extend({
4 'change [data-setting]': 'saveSettings',
5 'click [data-setting="theme"]': 'selectTheme'
8 initialize: function (options
) {
9 this.$el
= $($('#tmpl_applet_settings').html().trim());
11 // Incase any settings change while we have this open, update them
12 _kiwi
.global
.settings
.on('change', this.loadSettings
, this);
14 // Now actually show the current settings
19 loadSettings: function () {
23 $.each(_kiwi
.global
.settings
.attributes
, function(key
, value
) {
25 console
.log(key
, value
);
27 var $el
= $('[data-setting="' + key
+ '"]', that
.$el
);
29 // Only deal with settings we have a UI element for
33 switch ($el
.prop('type')) {
35 $el
.prop('checked', value
);
38 $('[data-setting="' + key
+ '"][value="' + value
+ '"]', that
.$el
).prop('checked', true);
44 $('[data-setting="' + key
+ '"][data-value="' + value
+ '"]', that
.$el
).addClass('active');
50 saveSettings: function (event
) {
52 settings
= _kiwi
.global
.settings
,
53 $setting
= $(event
.currentTarget
, this.$el
)
55 switch (event
.currentTarget
.type
) {
57 value
= $setting
.is(':checked');
61 value
= $setting
.val();
64 value
= $setting
.data('value');
68 // Stop settings being updated while we're saving one by one
69 _kiwi
.global
.settings
.off('change', this.loadSettings
, this);
70 settings
.set($setting
.data('setting'), value
);
73 // Continue listening for setting changes
74 _kiwi
.global
.settings
.on('change', this.loadSettings
, this);
77 selectTheme: function(event
) {
78 $('[data-setting="theme"].active', this.$el
).removeClass('active');
79 $(event
.currentTarget
).addClass('active').trigger('change');
80 event
.preventDefault();
85 var Applet
= Backbone
.Model
.extend({
86 initialize: function () {
87 this.set('title', 'Settings');
88 this.view
= new View();
93 _kiwi
.model
.Applet
.register('kiwi_settings', Applet
);