Merge branch 'happytodesign-favicon_notifications' into development
[KiwiIRC.git] / client / assets / src / applets / settings.js
CommitLineData
4baeda09 1(function () {\r
1b48d21e
VC
2 var View = Backbone.View.extend({\r
3 events: {\r
4 'change [data-setting]': 'saveSettings',\r
5 'click [data-setting="theme"]': 'selectTheme'\r
6 },\r
7\r
8 initialize: function (options) {\r
9 this.$el = $($('#tmpl_applet_settings').html().trim());\r
10\r
11 // Incase any settings change while we have this open, update them\r
12 _kiwi.global.settings.on('change', this.loadSettings, this);\r
13\r
14 // Now actually show the current settings\r
15 this.loadSettings();\r
16\r
17 },\r
18\r
19 loadSettings: function () {\r
20\r
21 var that = this;\r
22\r
23 $.each(_kiwi.global.settings.attributes, function(key, value) {\r
24\r
ad6e3f2b
VC
25 var $el = $('[data-setting="' + key + '"]', that.$el);\r
26\r
27 // Only deal with settings we have a UI element for\r
08701d92 28 if (!$el.length)\r
134071ac 29 return;\r
ad6e3f2b
VC
30\r
31 switch ($el.prop('type')) {\r
1b48d21e 32 case 'checkbox':\r
ad6e3f2b 33 $el.prop('checked', value);\r
1b48d21e
VC
34 break;\r
35 case 'radio':\r
36 $('[data-setting="' + key + '"][value="' + value + '"]', that.$el).prop('checked', true);\r
37 break;\r
38 case 'text':\r
ad6e3f2b 39 $el.val(value);\r
1b48d21e
VC
40 break;\r
41 default:\r
42 $('[data-setting="' + key + '"][data-value="' + value + '"]', that.$el).addClass('active');\r
43 break;\r
44 }\r
45 });\r
46 },\r
47\r
48 saveSettings: function (event) {\r
49 var value,\r
50 settings = _kiwi.global.settings,\r
51 $setting = $(event.currentTarget, this.$el)\r
52\r
53 switch (event.currentTarget.type) {\r
54 case 'checkbox':\r
55 value = $setting.is(':checked');\r
56 break;\r
57 case 'radio':\r
58 case 'text':\r
59 value = $setting.val();\r
60 break;\r
61 default:\r
62 value = $setting.data('value');\r
63 break;\r
64 }\r
65\r
66 // Stop settings being updated while we're saving one by one\r
67 _kiwi.global.settings.off('change', this.loadSettings, this);\r
68 settings.set($setting.data('setting'), value);\r
69 settings.save();\r
70\r
71 // Continue listening for setting changes\r
72 _kiwi.global.settings.on('change', this.loadSettings, this);\r
73 },\r
74\r
75 selectTheme: function(event) {\r
76 $('[data-setting="theme"].active', this.$el).removeClass('active');\r
77 $(event.currentTarget).addClass('active').trigger('change');\r
78 event.preventDefault();\r
79 }\r
80 });\r
81\r
82\r
83 var Applet = Backbone.Model.extend({\r
84 initialize: function () {\r
85 this.set('title', 'Settings');\r
86 this.view = new View();\r
87 }\r
88 });\r
89\r
90\r
91 _kiwi.model.Applet.register('kiwi_settings', Applet);\r
4baeda09 92})();