* New options page
[KiwiIRC.git] / client / assets / src / applets / settings.js
CommitLineData
4baeda09 1(function () {\r
41e7e25b
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 settings = _kiwi.global.settings,\r
22 theme = settings.get('theme') || 'relaxed',\r
23 channel_style = settings.get('channel_list_style') || 'tabs',\r
24 scrollback = settings.get('scrollback') || '250';\r
25\r
26 $('[data-setting="theme"][data-value="' + theme + '"]', this.$el).addClass('active');\r
27\r
28 $('[data-setting="channel_list_style"][value="' + channel_style + '"]', this.$el).prop('checked', true);\r
29\r
30 if (typeof settings.get('show_joins_parts') === 'undefined' || settings.get('show_joins_parts')) {\r
31 $('[data-setting="show_joins_parts"]', this.$el).prop('checked', true);\r
32 } else {\r
33 $('[data-setting="show_joins_parts"]', this.$el).prop('checked', false);\r
34 }\r
35\r
36 if (typeof settings.get('show_timestamps') === 'undefined' || settings.get('show_timestamps')) {\r
37 $('[data-setting="show_timestamps"]', this.$el).prop('checked', true);\r
38 } else {\r
39 $('[data-setting="show_timestamps"]', this.$el).prop('checked', false);\r
40 }\r
41\r
42 if (typeof settings.get('mute_sounds') === 'undefined' || settings.get('mute_sounds')) {\r
43 $('[data-setting="mute_sounds"]', this.$el).prop('checked', true);\r
44 } else {\r
45 $('[data-setting="mute_sounds"]', this.$el).prop('checked', false);\r
46 }\r
47\r
48 $('[data-setting="scrollback"]', this.$el).val(scrollback);\r
49 },\r
50\r
51 saveSettings: function (event) {\r
52 var value,\r
53 settings = _kiwi.global.settings,\r
54 $setting = $(event.currentTarget, this.$el)\r
55\r
56 switch (event.currentTarget.type) {\r
57 case 'checkbox':\r
58 value = $setting.is(':checked');\r
59 break;\r
60 case 'radio':\r
61 case 'text':\r
62 value = $setting.val();\r
63 break;\r
64 default:\r
65 value = $setting.data('value');\r
66 break;\r
67 }\r
68\r
69 // Stop settings being updated while we're saving one by one\r
70 _kiwi.global.settings.off('change', this.loadSettings, this);\r
71 settings.set($setting.data('setting'), value);\r
72 settings.save();\r
73\r
74 // Continue listening for setting changes\r
75 _kiwi.global.settings.on('change', this.loadSettings, this);\r
76 },\r
77\r
78 selectTheme: function(event) {\r
79 $('[data-setting="theme"].active', this.$el).removeClass('active');\r
80 $(event.currentTarget).addClass('active').trigger('change');\r
81 event.preventDefault();\r
82 }\r
83 });\r
84\r
85\r
86 var Applet = Backbone.Model.extend({\r
87 initialize: function () {\r
88 this.set('title', 'Settings');\r
89 this.view = new View();\r
90 }\r
91 });\r
92\r
93\r
94 _kiwi.model.Applet.register('kiwi_settings', Applet);\r
4baeda09 95})();