Commit | Line | Data |
---|---|---|
4baeda09 | 1 | (function () {\r |
1b48d21e VC |
2 | var View = Backbone.View.extend({\r |
3 | events: {\r | |
4 | 'change [data-setting]': 'saveSettings',\r | |
ed5b9cd6 | 5 | 'click [data-setting="theme"]': 'selectTheme',\r |
d70c63d4 | 6 | 'click .register_protocol': 'registerProtocol',\r |
159e6756 | 7 | 'click .enable_notifications': 'enableNotifications'\r |
1b48d21e VC |
8 | },\r |
9 | \r | |
10 | initialize: function (options) {\r | |
13e912d8 NF |
11 | function t(key, vars) {\r |
12 | var trans = _kiwi.global.i18n.translate(key);\r | |
13 | return trans.fetch.apply(trans, Array.prototype.slice.call(arguments, 1));\r | |
14 | }\r | |
0d29c21f | 15 | var text = {\r |
13e912d8 NF |
16 | tabs : t('client_applets_settings_channelview_tabs'),\r |
17 | list : t('client_applets_settings_channelview_list'),\r | |
18 | large_amounts_of_chans: t('client_applets_settings_channelview_list_notice'),\r | |
19 | join_part : t('client_applets_settings_notification_joinpart'),\r | |
20 | count_all_activity : t('client_applets_settings_notification_count_all_activity'),\r | |
21 | timestamps : t('client_applets_settings_timestamp'),\r | |
22 | timestamp_24 : t('client_applets_settings_timestamp_24_hour'),\r | |
23 | mute : t('client_applets_settings_notification_sound'),\r | |
24 | emoticons : t('client_applets_settings_emoticons'),\r | |
25 | scroll_history : t('client_applets_settings_history_length'),\r | |
26 | languages : _kiwi.app.translations,\r | |
27 | default_client : t('client_applets_settings_default_client'),\r | |
28 | make_default : t('client_applets_settings_default_client_enable'),\r | |
29 | locale_restart_needed : t('client_applets_settings_locale_restart_needed'),\r | |
30 | default_note : t('client_applets_settings_default_client_notice', '<a href="chrome://settings/handlers">chrome://settings/handlers</a>'),\r | |
31 | html5_notifications : t('client_applets_settings_html5_notifications'),\r | |
32 | enable_notifications : t('client_applets_settings_enable_notifications'),\r | |
83dc56c5 D |
33 | theme_thumbnails: _.map(_kiwi.app.themes, function (theme) {\r |
34 | return _.template($('#tmpl_theme_thumbnail').html().trim(), theme);\r | |
35 | })\r | |
0d29c21f JA |
36 | };\r |
37 | this.$el = $(_.template($('#tmpl_applet_settings').html().trim(), text));\r | |
1b48d21e | 38 | \r |
ed5b9cd6 | 39 | if (!navigator.registerProtocolHandler) {\r |
aca5a9c9 | 40 | this.$('.protocol_handler').remove();\r |
ed5b9cd6 | 41 | }\r |
ee2f0962 | 42 | \r |
75c3283c | 43 | if (!(window.Notification || window.webkitNotifications || navigator.mozNotification)) {\r |
aca5a9c9 | 44 | this.$('notification_enabler').remove();\r |
ee2f0962 D |
45 | }\r |
46 | \r | |
1b48d21e VC |
47 | // Incase any settings change while we have this open, update them\r |
48 | _kiwi.global.settings.on('change', this.loadSettings, this);\r | |
49 | \r | |
50 | // Now actually show the current settings\r | |
51 | this.loadSettings();\r | |
52 | \r | |
53 | },\r | |
54 | \r | |
55 | loadSettings: function () {\r | |
56 | \r | |
3991d3a7 | 57 | _.each(_kiwi.global.settings.attributes, function(value, key) {\r |
1b48d21e | 58 | \r |
3991d3a7 | 59 | var $el = this.$('[data-setting="' + key + '"]');\r |
ad6e3f2b VC |
60 | \r |
61 | // Only deal with settings we have a UI element for\r | |
08701d92 | 62 | if (!$el.length)\r |
134071ac | 63 | return;\r |
ad6e3f2b VC |
64 | \r |
65 | switch ($el.prop('type')) {\r | |
1b48d21e | 66 | case 'checkbox':\r |
ad6e3f2b | 67 | $el.prop('checked', value);\r |
1b48d21e VC |
68 | break;\r |
69 | case 'radio':\r | |
3991d3a7 | 70 | this.$('[data-setting="' + key + '"][value="' + value + '"]').prop('checked', true);\r |
1b48d21e VC |
71 | break;\r |
72 | case 'text':\r | |
ad6e3f2b | 73 | $el.val(value);\r |
1b48d21e | 74 | break;\r |
0fa2ca42 | 75 | case 'select-one':\r |
3991d3a7 | 76 | this.$('[value="' + value + '"]').prop('selected', true);\r |
0fa2ca42 | 77 | break;\r |
1b48d21e | 78 | default:\r |
3991d3a7 | 79 | this.$('[data-setting="' + key + '"][data-value="' + value + '"]').addClass('active');\r |
1b48d21e VC |
80 | break;\r |
81 | }\r | |
3991d3a7 | 82 | }, this);\r |
1b48d21e VC |
83 | },\r |
84 | \r | |
85 | saveSettings: function (event) {\r | |
86 | var value,\r | |
87 | settings = _kiwi.global.settings,\r | |
aca5a9c9 | 88 | $setting = this.$(event.currentTarget);\r |
1b48d21e VC |
89 | \r |
90 | switch (event.currentTarget.type) {\r | |
91 | case 'checkbox':\r | |
92 | value = $setting.is(':checked');\r | |
93 | break;\r | |
94 | case 'radio':\r | |
95 | case 'text':\r | |
96 | value = $setting.val();\r | |
97 | break;\r | |
0fa2ca42 JA |
98 | case 'select-one':\r |
99 | value = $(event.currentTarget[$setting.prop('selectedIndex')]).val();\r | |
100 | break;\r | |
1b48d21e VC |
101 | default:\r |
102 | value = $setting.data('value');\r | |
103 | break;\r | |
104 | }\r | |
105 | \r | |
106 | // Stop settings being updated while we're saving one by one\r | |
107 | _kiwi.global.settings.off('change', this.loadSettings, this);\r | |
108 | settings.set($setting.data('setting'), value);\r | |
109 | settings.save();\r | |
110 | \r | |
111 | // Continue listening for setting changes\r | |
112 | _kiwi.global.settings.on('change', this.loadSettings, this);\r | |
113 | },\r | |
114 | \r | |
115 | selectTheme: function(event) {\r | |
22ffa51a D |
116 | event.preventDefault();\r |
117 | \r | |
aca5a9c9 | 118 | this.$('[data-setting="theme"].active').removeClass('active');\r |
1b48d21e | 119 | $(event.currentTarget).addClass('active').trigger('change');\r |
ed5b9cd6 JA |
120 | },\r |
121 | \r | |
122 | registerProtocol: function (event) {\r | |
22ffa51a D |
123 | event.preventDefault();\r |
124 | \r | |
ed5b9cd6 JA |
125 | navigator.registerProtocolHandler('irc', document.location.origin + _kiwi.app.get('base_path') + '/%s', 'Kiwi IRC');\r |
126 | navigator.registerProtocolHandler('ircs', document.location.origin + _kiwi.app.get('base_path') + '/%s', 'Kiwi IRC');\r | |
d70c63d4 K |
127 | },\r |
128 | \r | |
aca5a9c9 | 129 | enableNotifications: function(event) {\r |
98bc1a84 | 130 | event.preventDefault();\r |
aca5a9c9 | 131 | var Notify = window.Notification || window.webkitNotifications;\r |
98bc1a84 | 132 | \r |
aca5a9c9 NF |
133 | if (Notify) {\r |
134 | Notify.requestPermission();\r | |
98bc1a84 | 135 | }\r |
ee2f0962 | 136 | }\r |
d70c63d4 | 137 | \r |
1b48d21e VC |
138 | });\r |
139 | \r | |
140 | \r | |
141 | var Applet = Backbone.Model.extend({\r | |
142 | initialize: function () {\r | |
247dd7ac | 143 | this.set('title', _kiwi.global.i18n.translate('client_applets_settings_title').fetch());\r |
1b48d21e VC |
144 | this.view = new View();\r |
145 | }\r | |
146 | });\r | |
147 | \r | |
148 | \r | |
149 | _kiwi.model.Applet.register('kiwi_settings', Applet);\r | |
d70c63d4 | 150 | })();\r |