Remove junk console.log
[KiwiIRC.git] / client / assets / src / applets / settings.js
index 4f4b385b6da9d64c774b07eb0122539839066e61..afe120964f0c5bfc0011ef07dd12bb848b9b10f6 100644 (file)
@@ -1,7 +1,8 @@
 (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
+                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;\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