067952712b2f5ac69ce64e705ab7d1b6cab6c20e
2 var View
= Backbone
.View
.extend({
4 'change [data-setting]': 'saveSettings',
5 'click [data-setting="theme"]': 'selectTheme',
6 'click .register_protocol': 'registerProtocol'
9 initialize: function (options
) {
10 this.$el
= $($('#tmpl_applet_settings').html().trim());
12 if (!navigator
.registerProtocolHandler
) {
13 this.$el
.find('.protocol_handler').remove();
16 // Incase any settings change while we have this open, update them
17 _kiwi
.global
.settings
.on('change', this.loadSettings
, this);
19 // Now actually show the current settings
24 loadSettings: function () {
28 $.each(_kiwi
.global
.settings
.attributes
, function(key
, value
) {
30 var $el
= $('[data-setting="' + key
+ '"]', that
.$el
);
32 // Only deal with settings we have a UI element for
36 switch ($el
.prop('type')) {
38 $el
.prop('checked', value
);
41 $('[data-setting="' + key
+ '"][value="' + value
+ '"]', that
.$el
).prop('checked', true);
47 $('[data-setting="' + key
+ '"][data-value="' + value
+ '"]', that
.$el
).addClass('active');
53 saveSettings: function (event
) {
55 settings
= _kiwi
.global
.settings
,
56 $setting
= $(event
.currentTarget
, this.$el
)
58 switch (event
.currentTarget
.type
) {
60 value
= $setting
.is(':checked');
64 value
= $setting
.val();
67 value
= $setting
.data('value');
71 // Stop settings being updated while we're saving one by one
72 _kiwi
.global
.settings
.off('change', this.loadSettings
, this);
73 settings
.set($setting
.data('setting'), value
);
76 // Continue listening for setting changes
77 _kiwi
.global
.settings
.on('change', this.loadSettings
, this);
80 selectTheme: function(event
) {
81 $('[data-setting="theme"].active', this.$el
).removeClass('active');
82 $(event
.currentTarget
).addClass('active').trigger('change');
83 event
.preventDefault();
86 registerProtocol: function (event
) {
87 navigator
.registerProtocolHandler('irc', document
.location
.origin
+ _kiwi
.app
.get('base_path') + '/%s', 'Kiwi IRC');
88 navigator
.registerProtocolHandler('ircs', document
.location
.origin
+ _kiwi
.app
.get('base_path') + '/%s', 'Kiwi IRC');
93 var Applet
= Backbone
.Model
.extend({
94 initialize: function () {
95 this.set('title', 'Settings');
96 this.view
= new View();
101 _kiwi
.model
.Applet
.register('kiwi_settings', Applet
);