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 var $el
= $('[data-setting="' + key
+ '"]', that
.$el
);
27 // Only deal with settings we have a UI element for
31 switch ($el
.prop('type')) {
33 $el
.prop('checked', value
);
36 $('[data-setting="' + key
+ '"][value="' + value
+ '"]', that
.$el
).prop('checked', true);
42 $('[data-setting="' + key
+ '"][data-value="' + value
+ '"]', that
.$el
).addClass('active');
48 saveSettings: function (event
) {
50 settings
= _kiwi
.global
.settings
,
51 $setting
= $(event
.currentTarget
, this.$el
)
53 switch (event
.currentTarget
.type
) {
55 value
= $setting
.is(':checked');
59 value
= $setting
.val();
62 value
= $setting
.data('value');
66 // Stop settings being updated while we're saving one by one
67 _kiwi
.global
.settings
.off('change', this.loadSettings
, this);
68 settings
.set($setting
.data('setting'), value
);
71 // Continue listening for setting changes
72 _kiwi
.global
.settings
.on('change', this.loadSettings
, this);
75 selectTheme: function(event
) {
76 $('[data-setting="theme"].active', this.$el
).removeClass('active');
77 $(event
.currentTarget
).addClass('active').trigger('change');
78 event
.preventDefault();
83 var Applet
= Backbone
.Model
.extend({
84 initialize: function () {
85 this.set('title', 'Settings');
86 this.view
= new View();
91 _kiwi
.model
.Applet
.register('kiwi_settings', Applet
);