Using default user prefixes when not provided by the ircd
[KiwiIRC.git] / client / src / models / application.js
index 704587cc5cd96c1440b3259828dea252288ca091..574ce25b891f84be9ae5ec6c869e48991c7484cf 100644 (file)
@@ -32,6 +32,9 @@
             // Best guess at where the kiwi server is if not already specified\r
             this.kiwi_server = options.kiwi_server || this.detectKiwiServer();\r
 \r
+            // The applet to initially load\r
+            this.startup_applet_name = options.startup || 'kiwi_startup';\r
+\r
             // Set any default settings before anything else is applied\r
             if (this.server_settings && this.server_settings.client && this.server_settings.client.settings) {\r
                 this.applyDefaultClientSettings(this.server_settings.client.settings);\r
@@ -39,7 +42,7 @@
         },\r
 \r
 \r
-        start: function () {\r
+        initializeInterfaces: function () {\r
             // Set the gateway up\r
             _kiwi.gateway = new _kiwi.model.Gateway();\r
             this.bindGatewayCommands(_kiwi.gateway);\r
@@ -48,8 +51,6 @@
             this.initializeGlobals();\r
 \r
             this.view.barsHide(true);\r
-\r
-            this.showIntialConenctionDialog();\r
         },\r
 \r
 \r
         },\r
 \r
 \r
-        showIntialConenctionDialog: function() {\r
-            var connection_dialog = new _kiwi.model.NewConnection();\r
-            this.populateDefaultServerSettings(connection_dialog);\r
-\r
-            connection_dialog.view.$el.addClass('initial');\r
-            this.view.$el.find('.panel_container:first').append(connection_dialog.view.$el);\r
-\r
-            var $info = $($('#tmpl_new_connection_info').html().trim());\r
-\r
-            if ($info.html()) {\r
-                connection_dialog.view.infoBoxSet($info);\r
-                connection_dialog.view.infoBoxShow();\r
-            }\r
-\r
-            // TODO: Shouldn't really be here but it's not working in the view.. :/\r
-            // Hack for firefox browers: Focus is not given on this event loop iteration\r
-            setTimeout(function(){\r
-                connection_dialog.view.$el.find('.nick').select();\r
-            }, 0);\r
-\r
-            // Once connected, close this dialog and remove its own event\r
-            var fn = function() {\r
-                connection_dialog.view.$el.slideUp(function() {\r
-                    connection_dialog.view.dispose();\r
-                    connection_dialog = null;\r
-\r
-                    _kiwi.gateway.off('onconnect', fn);\r
-                });\r
-\r
-            };\r
-            _kiwi.gateway.on('onconnect', fn);\r
+        showStartup: function() {\r
+            this.startup_applet = _kiwi.model.Applet.load(this.startup_applet_name, {no_tab: true});\r
+            this.startup_applet.tab = this.view.$('.console');\r
+            this.startup_applet.view.show();\r
         },\r
 \r
 \r
         },\r
 \r
 \r
-        populateDefaultServerSettings: function (new_connection_dialog) {\r
+        panels: (function() {\r
+            var active_panel;\r
+\r
+            var fn = function(panel_type) {\r
+                var panels;\r
+\r
+                // Default panel type\r
+                panel_type = panel_type || 'connections';\r
+\r
+                switch (panel_type) {\r
+                case 'connections':\r
+                    panels = this.connections.panels();\r
+                    break;\r
+                case 'applets':\r
+                    panels = this.applet_panels.models;\r
+                    break;\r
+                }\r
+\r
+                // Active panels / server\r
+                panels.active = active_panel;\r
+                panels.server = this.connections.active_connection ?\r
+                    this.connections.active_connection.panels.server :\r
+                    null;\r
+\r
+                return panels;\r
+            };\r
+\r
+            _.extend(fn, Backbone.Events);\r
+\r
+            // Keep track of the active panel. Channel/query/server or applet\r
+            fn.bind('active', function (new_active_panel) {\r
+                active_panel = new_active_panel;\r
+            });\r
+\r
+            return fn;\r
+        })(),\r
+\r
+\r
+        defaultServerSettings: function () {\r
             var parts;\r
             var defaults = {\r
                 nick: '',\r
                 server: '',\r
                 port: 6667,\r
                 ssl: false,\r
-                channel: '#chat',\r
+                channel: '',\r
                 channel_key: ''\r
             };\r
             var uricheck;\r
             if (getQueryVariable('encoding'))\r
                 defaults.encoding = getQueryVariable('encoding');\r
 \r
-            // Populate the server select box with defaults\r
-            new_connection_dialog.view.populateFields(defaults);\r
+            return defaults;\r
         },\r
 \r
 \r
-        panels: (function() {\r
-            var fn = function(panel_type) {\r
-                var panels;\r
-\r
-                // Default panel type\r
-                panel_type = panel_type || 'connections';\r
-\r
-                switch (panel_type) {\r
-                case 'connections':\r
-                    panels = this.connections.panels();\r
-                    break;\r
-                case 'applets':\r
-                    panels = this.applet_panels.models;\r
-                    break;\r
-                }\r
-\r
-                // Active panels / server\r
-                panels.active = this.connections.active_panel;\r
-                panels.server = this.connections.active_connection ?\r
-                    this.connections.active_connection.panels.server :\r
-                    null;\r
-\r
-                return panels;\r
-            };\r
-\r
-            _.extend(fn, Backbone.Events);\r
-\r
-            return fn;\r
-        })(),\r
-\r
-\r
         bindGatewayCommands: function (gw) {\r
             var that = this;\r
 \r
 \r
 \r
             fn_to_bind['command:ignore'] = function (ev) {\r
-                var list = _kiwi.gateway.get('ignore_list');\r
+                var list = this.connections.active_connection.get('ignore_list');\r
 \r
                 // No parameters passed so list them\r
                 if (!ev.params[0]) {\r
 \r
                 // We have a parameter, so add it\r
                 list.push(ev.params[0]);\r
-                _kiwi.gateway.set('ignore_list', list);\r
+                this.connections.active_connection.set('ignore_list', list);\r
                 _kiwi.app.panels().active.addMsg(' ', _kiwi.global.i18n.translate('client_models_application_ignore_nick').fetch(ev.params[0]));\r
             };\r
 \r
 \r
             fn_to_bind['command:unignore'] = function (ev) {\r
-                var list = _kiwi.gateway.get('ignore_list');\r
+                var list = this.connections.active_connection.get('ignore_list');\r
 \r
                 if (!ev.params[0]) {\r
                     _kiwi.app.panels().active.addMsg(' ', _kiwi.global.i18n.translate('client_models_application_ignore_stop_notice').fetch());\r
                     return pattern === ev.params[0];\r
                 });\r
 \r
-                _kiwi.gateway.set('ignore_list', list);\r
+                this.connections.active_connection.set('ignore_list', list);\r
 \r
                 _kiwi.app.panels().active.addMsg(' ', _kiwi.global.i18n.translate('client_models_application_ignore_stopped').fetch(ev.params[0]));\r
             };\r
     function unknownCommand (ev) {\r
         var raw_cmd = ev.command + ' ' + ev.params.join(' ');\r
         console.log('RAW: ' + raw_cmd);\r
-        _kiwi.gateway.raw(null, raw_cmd);\r
+        this.connections.active_connection.gateway.raw(raw_cmd);\r
     }\r
 \r
     function allCommands (ev) {}\r
         message = formatToIrcMsg(ev.params.join(' '));\r
 \r
         panel.addMsg(_kiwi.app.connections.active_connection.get('nick'), message);\r
-        _kiwi.gateway.privmsg(null, destination, message);\r
+        this.connections.active_connection.gateway.msg(destination, message);\r
     }\r
 \r
     function actionCommand (ev) {\r
 \r
         var panel = _kiwi.app.panels().active;\r
         panel.addMsg('', '* ' + _kiwi.app.connections.active_connection.get('nick') + ' ' + ev.params.join(' '), 'action');\r
-        _kiwi.gateway.action(null, panel.get('name'), ev.params.join(' '));\r
+        this.connections.active_connection.gateway.action(panel.get('name'), ev.params.join(' '));\r
     }\r
 \r
     function partCommand (ev) {\r
+        var that = this;\r
+\r
         if (ev.params.length === 0) {\r
-            _kiwi.gateway.part(null, _kiwi.app.panels().active.get('name'));\r
+            this.connections.active_connection.gateway.part(_kiwi.app.panels().active.get('name'));\r
         } else {\r
             _.each(ev.params, function (channel) {\r
-                _kiwi.gateway.part(null, channel);\r
+                that.connections.active_connection.gateway.part(channel);\r
             });\r
         }\r
     }\r
 \r
     function nickCommand (ev) {\r
-        _kiwi.gateway.changeNick(null, ev.params[0]);\r
+        this.connections.active_connection.gateway.changeNick(ev.params[0]);\r
     }\r
 \r
     function topicCommand (ev) {\r
             channel_name = _kiwi.app.panels().active.get('name');\r
         }\r
 \r
-        _kiwi.gateway.topic(null, channel_name, ev.params.join(' '));\r
+        this.connections.active_connection.gateway.topic(channel_name, ev.params.join(' '));\r
     }\r
 \r
     function noticeCommand (ev) {\r
         destination = ev.params[0];\r
         ev.params.shift();\r
 \r
-        _kiwi.gateway.notice(null, destination, ev.params.join(' '));\r
+        this.connections.active_connection.gateway.notice(destination, ev.params.join(' '));\r
     }\r
 \r
     function quoteCommand (ev) {\r
         var raw = ev.params.join(' ');\r
-        _kiwi.gateway.raw(null, raw);\r
+        this.connections.active_connection.gateway.raw(raw);\r
     }\r
 \r
     function kickCommand (ev) {\r
         nick = ev.params[0];\r
         ev.params.shift();\r
 \r
-        _kiwi.gateway.kick(null, panel.get('name'), nick, ev.params.join(' '));\r
+        this.connections.active_connection.gateway.kick(panel.get('name'), nick, ev.params.join(' '));\r
     }\r
 \r
     function clearCommand (ev) {\r
         type = ev.params[0];\r
         ev.params.shift();\r
 \r
-        _kiwi.gateway.ctcp(null, true, type, target, ev.params.join(' '));\r
+        this.connections.active_connection.gateway.ctcp(true, type, target, ev.params.join(' '));\r
     }\r
 \r
     function settingsCommand (ev) {\r