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 () {
21 var settings
= _kiwi
.global
.settings
,
22 theme
= settings
.get('theme') || 'relaxed',
23 channel_style
= settings
.get('channel_list_style') || 'tabs',
24 scrollback
= settings
.get('scrollback') || '250';
26 $('[data-setting="theme"][data-value="' + theme
+ '"]', this.$el
).addClass('active');
28 $('[data-setting="channel_list_style"][value="' + channel_style
+ '"]', this.$el
).prop('checked', true);
30 if (typeof settings
.get('show_joins_parts') === 'undefined' || settings
.get('show_joins_parts')) {
31 $('[data-setting="show_joins_parts"]', this.$el
).prop('checked', true);
33 $('[data-setting="show_joins_parts"]', this.$el
).prop('checked', false);
36 if (typeof settings
.get('show_timestamps') === 'undefined' || settings
.get('show_timestamps')) {
37 $('[data-setting="show_timestamps"]', this.$el
).prop('checked', true);
39 $('[data-setting="show_timestamps"]', this.$el
).prop('checked', false);
42 if (typeof settings
.get('mute_sounds') === 'undefined' || settings
.get('mute_sounds')) {
43 $('[data-setting="mute_sounds"]', this.$el
).prop('checked', true);
45 $('[data-setting="mute_sounds"]', this.$el
).prop('checked', false);
48 $('[data-setting="scrollback"]', this.$el
).val(scrollback
);
51 saveSettings: function (event
) {
53 settings
= _kiwi
.global
.settings
,
54 $setting
= $(event
.currentTarget
, this.$el
)
56 switch (event
.currentTarget
.type
) {
58 value
= $setting
.is(':checked');
62 value
= $setting
.val();
65 value
= $setting
.data('value');
69 // Stop settings being updated while we're saving one by one
70 _kiwi
.global
.settings
.off('change', this.loadSettings
, this);
71 settings
.set($setting
.data('setting'), value
);
74 // Continue listening for setting changes
75 _kiwi
.global
.settings
.on('change', this.loadSettings
, this);
78 selectTheme: function(event
) {
79 $('[data-setting="theme"].active', this.$el
).removeClass('active');
80 $(event
.currentTarget
).addClass('active').trigger('change');
81 event
.preventDefault();
86 var Applet
= Backbone
.Model
.extend({
87 initialize: function () {
88 this.set('title', 'Settings');
89 this.view
= new View();
94 _kiwi
.model
.Applet
.register('kiwi_settings', Applet
);