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