2 var View
= Backbone
.View
.extend({
4 'change [data-setting]': 'saveSettings',
5 'click [data-setting="theme"]': 'selectTheme',
6 'click .register_protocol': 'registerProtocol',
7 'click .enable_notifications': 'enableNoticiations'
10 initialize: function (options
) {
12 tabs
: _kiwi
.global
.i18n
.translate('client_applets_settings_channelview_tabs').fetch(),
13 list
: _kiwi
.global
.i18n
.translate('client_applets_settings_channelview_list').fetch(),
14 large_amounts_of_chans
: _kiwi
.global
.i18n
.translate('client_applets_settings_channelview_list_notice').fetch(),
15 join_part
: _kiwi
.global
.i18n
.translate('client_applets_settings_notification_joinpart').fetch(),
16 count_all_activity
: _kiwi
.global
.i18n
.translate('client_applets_settings_notification_count_all_activity').fetch(),
17 timestamps
: _kiwi
.global
.i18n
.translate('client_applets_settings_timestamp').fetch(),
18 mute
: _kiwi
.global
.i18n
.translate('client_applets_settings_notification_sound').fetch(),
19 emoticons
: _kiwi
.global
.i18n
.translate('client_applets_settings_emoticons').fetch(),
20 scroll_history
: _kiwi
.global
.i18n
.translate('client_applets_settings_history_length').fetch(),
21 languages
: _kiwi
.app
.translations
,
22 default_client
: _kiwi
.global
.i18n
.translate('client_applets_settings_default_client').fetch(),
23 make_default
: _kiwi
.global
.i18n
.translate('client_applets_settings_default_client_enable').fetch(),
24 locale_restart_needed
: _kiwi
.global
.i18n
.translate('client_applets_settings_locale_restart_needed').fetch(),
25 default_note
: _kiwi
.global
.i18n
.translate('client_applets_settings_default_client_notice').fetch('<a href="chrome://settings/handlers">chrome://settings/handlers</a>'),
26 html5_notifications
: _kiwi
.global
.i18n
.translate('client_applets_settings_html5_notifications').fetch(),
27 enable_notifications
: _kiwi
.global
.i18n
.translate('client_applets_settings_enable_notifications').fetch(),
28 theme_thumbnails
: _
.map(_kiwi
.app
.themes
, function (theme
) {
29 return _
.template($('#tmpl_theme_thumbnail').html().trim(), theme
);
32 this.$el
= $(_
.template($('#tmpl_applet_settings').html().trim(), text
));
34 if (!navigator
.registerProtocolHandler
) {
35 this.$el
.find('.protocol_handler').remove();
38 if (!window
.webkitNotifications
) {
39 this.$el
.find('notification_enabler').remove();
42 // Incase any settings change while we have this open, update them
43 _kiwi
.global
.settings
.on('change', this.loadSettings
, this);
45 // Now actually show the current settings
50 loadSettings: function () {
54 $.each(_kiwi
.global
.settings
.attributes
, function(key
, value
) {
56 var $el
= $('[data-setting="' + key
+ '"]', that
.$el
);
58 // Only deal with settings we have a UI element for
62 switch ($el
.prop('type')) {
64 $el
.prop('checked', value
);
67 $('[data-setting="' + key
+ '"][value="' + value
+ '"]', that
.$el
).prop('checked', true);
73 $('[value="' + value
+ '"]', that
.$el
).prop('selected', true);
76 $('[data-setting="' + key
+ '"][data-value="' + value
+ '"]', that
.$el
).addClass('active');
82 saveSettings: function (event
) {
84 settings
= _kiwi
.global
.settings
,
85 $setting
= $(event
.currentTarget
, this.$el
);
87 switch (event
.currentTarget
.type
) {
89 value
= $setting
.is(':checked');
93 value
= $setting
.val();
96 value
= $(event
.currentTarget
[$setting
.prop('selectedIndex')]).val();
99 value
= $setting
.data('value');
103 // Stop settings being updated while we're saving one by one
104 _kiwi
.global
.settings
.off('change', this.loadSettings
, this);
105 settings
.set($setting
.data('setting'), value
);
108 // Continue listening for setting changes
109 _kiwi
.global
.settings
.on('change', this.loadSettings
, this);
112 selectTheme: function(event
) {
113 $('[data-setting="theme"].active', this.$el
).removeClass('active');
114 $(event
.currentTarget
).addClass('active').trigger('change');
115 event
.preventDefault();
118 registerProtocol: function (event
) {
119 navigator
.registerProtocolHandler('irc', document
.location
.origin
+ _kiwi
.app
.get('base_path') + '/%s', 'Kiwi IRC');
120 navigator
.registerProtocolHandler('ircs', document
.location
.origin
+ _kiwi
.app
.get('base_path') + '/%s', 'Kiwi IRC');
123 enableNoticiations: function(event
){
124 window
.webkitNotifications
.requestPermission();
130 var Applet
= Backbone
.Model
.extend({
131 initialize: function () {
132 this.set('title', _kiwi
.global
.i18n
.translate('client_applets_settings_title').fetch());
133 this.view
= new View();
138 _kiwi
.model
.Applet
.register('kiwi_settings', Applet
);