(function () {\r
var View = Backbone.View.extend({\r
events: {\r
- 'click .save': 'saveSettings'\r
+ 'change [data-setting]': 'saveSettings',\r
+ 'click [data-setting="theme"]': 'selectTheme'\r
},\r
\r
initialize: function (options) {\r
// Now actually show the current settings\r
this.loadSettings();\r
\r
-\r
},\r
- \r
\r
loadSettings: function () {\r
- var settings = _kiwi.global.settings;\r
-\r
- // TODO: Tidy this up\r
- var theme = settings.get('theme') || 'relaxed';\r
- this.$el.find('.setting-theme option').filter(function() {\r
- return $(this).val() === theme;\r
- }).prop('selected', true);\r
-\r
- var list_style = settings.get('channel_list_style') || 'tabs';\r
- this.$el.find('.setting-channel_list_style option').filter(function() {\r
- return $(this).val() === list_style;\r
- }).prop('selected', true);\r
\r
- this.$el.find('.setting-scrollback').val(settings.get('scrollback') || '250');\r
-\r
- if (typeof settings.get('show_joins_parts') === 'undefined' || settings.get('show_joins_parts')) {\r
- this.$el.find('.setting-show_joins_parts').prop('checked', true);\r
- } else {\r
- this.$el.find('.setting-show_joins_parts').prop('checked', false);\r
- }\r
-\r
- if (typeof settings.get('show_timestamps') === 'undefined' || !settings.get('show_timestamps')) {\r
- this.$el.find('.setting-show_timestamps').prop('checked', false);\r
- } else {\r
- this.$el.find('.setting-show_timestamps').prop('checked', true);\r
- }\r
-\r
- if (typeof settings.get('mute_sounds') === 'undefined' || settings.get('mute_sounds')) {\r
- this.$el.find('.setting-mute_sounds').prop('checked', true);\r
- } else {\r
- this.$el.find('.setting-mute_sounds').prop('checked', false);\r
- }\r
+ var that = this;\r
+\r
+ $.each(_kiwi.global.settings.attributes, function(key, value) {\r
+\r
+ console.log(key, value);\r
+\r
+ var $el = $('[data-setting="' + key + '"]', that.$el);\r
+\r
+ // Only deal with settings we have a UI element for\r
+ if (!$el.length)\r
+ return false;\r
+\r
+ switch ($el.prop('type')) {\r
+ case 'checkbox':\r
+ $el.prop('checked', value);\r
+ break;\r
+ case 'radio':\r
+ $('[data-setting="' + key + '"][value="' + value + '"]', that.$el).prop('checked', true);\r
+ break;\r
+ case 'text':\r
+ $el.val(value);\r
+ break;\r
+ default:\r
+ $('[data-setting="' + key + '"][data-value="' + value + '"]', that.$el).addClass('active');\r
+ break;\r
+ }\r
+ });\r
},\r
\r
-\r
- saveSettings: function () {\r
- var settings = _kiwi.global.settings,\r
- feedback;\r
+ saveSettings: function (event) {\r
+ var value,\r
+ settings = _kiwi.global.settings,\r
+ $setting = $(event.currentTarget, this.$el)\r
+\r
+ switch (event.currentTarget.type) {\r
+ case 'checkbox':\r
+ value = $setting.is(':checked');\r
+ break;\r
+ case 'radio':\r
+ case 'text':\r
+ value = $setting.val();\r
+ break;\r
+ default:\r
+ value = $setting.data('value');\r
+ break;\r
+ }\r
\r
// Stop settings being updated while we're saving one by one\r
_kiwi.global.settings.off('change', this.loadSettings, this);\r
-\r
- settings.set('theme', $('.setting-theme', this.$el).val());\r
- settings.set('channel_list_style', $('.setting-channel_list_style', this.$el).val());\r
- settings.set('scrollback', $('.setting-scrollback', this.$el).val());\r
- settings.set('show_joins_parts', $('.setting-show_joins_parts', this.$el).is(':checked'));\r
- settings.set('show_timestamps', $('.setting-show_timestamps', this.$el).is(':checked'));\r
- settings.set('mute_sounds', $('.setting-mute_sounds', this.$el).is(':checked'));\r
-\r
+ settings.set($setting.data('setting'), value);\r
settings.save();\r
\r
- feedback = $('.feedback', this.$el);\r
- feedback.fadeIn('slow', function () {\r
- feedback.fadeOut('slow');\r
- })\r
-\r
// Continue listening for setting changes\r
_kiwi.global.settings.on('change', this.loadSettings, this);\r
+ },\r
+\r
+ selectTheme: function(event) {\r
+ $('[data-setting="theme"].active', this.$el).removeClass('active');\r
+ $(event.currentTarget).addClass('active').trigger('change');\r
+ event.preventDefault();\r
}\r
});\r
\r
\r
-\r
var Applet = Backbone.Model.extend({\r
initialize: function () {\r
this.set('title', 'Settings');\r