Tabview completely removed
[KiwiIRC.git] / client / js / front.events.js
index 6790e8fbf426092e25f7c1d50c0ea65b52ef5c47..e0d6a59b27a10a2a14187a7dd86bdee9c636713b 100755 (executable)
@@ -62,16 +62,13 @@ kiwi.front.events = {
         if (!plugin_event) {\r
             return;\r
         }\r
-        tab = Tabview.getTab(plugin_event.destination);\r
-        if (!tab) {\r
-            tab = new Tabview(plugin_event.destination);\r
-        }\r
-        tab.addMsg(null, plugin_event.nick, plugin_event.msg);\r
         \r
         var chan = kiwi.bbchans.detect(function (c) {\r
             return c.get("name") === plugin_event.destination;\r
         });\r
-        chan.addMsg(null, plugin_event.nick, plugin_event.msg);\r
+        if (chan) {\r
+            chan.addMsg(null, plugin_event.nick, plugin_event.msg);\r
+        }\r
     },\r
 \r
     /**\r
@@ -101,11 +98,12 @@ kiwi.front.events = {
             destination = data.channel;\r
         }\r
 \r
-        tab = Tabview.getTab(destination);\r
-        if (!tab) {\r
-            tab = new Tabview(destination);\r
+        var chan = kiwi.bbchans.detect(function (c) {\r
+            return c.get("name") === plugin_event.destination;\r
+        });\r
+        if (chan) {\r
+            chan.addMsg(null, ' ', '* ' + data.nick + ' ' + data.msg, 'action', 'color:#555;');\r
         }\r
-        tab.addMsg(null, ' ', '* ' + data.nick + ' ' + data.msg, 'action', 'color:#555;');\r
     },\r
 \r
     /**\r
@@ -114,9 +112,11 @@ kiwi.front.events = {
     *   @param  {Object}        data    The event data\r
     */\r
     onTopic: function (e, data) {\r
-        var tab = Tabview.getTab(data.channel);\r
-        if (tab) {\r
-            tab.changeTopic(data.topic);\r
+        var chan = kiwi.bbchans.detect(function (c) {\r
+            return c.get("name") === data.channel;\r
+        });\r
+        if (chan) {\r
+            chan.set({"topic": data.topic});\r
         }\r
     },\r
 \r
@@ -126,11 +126,12 @@ kiwi.front.events = {
     *   @param  {Object}        data    The event data\r
     */\r
     onTopicSetBy: function (e, data) {\r
-        var when, tab = Tabview.getTab(data.channel);\r
-        if (tab) {\r
-            when = new Date(data.when * 1000).toLocaleString();\r
-            tab.addMsg(null, '', 'Topic set by ' + data.nick + ' at ' + when, 'topic');\r
-        }\r
+        var when,\r
+            chan = kiwi.bbchans.detect(function (c) {\r
+                return c.get("name") === data.channel;\r
+            });\r
+        when = new Date(data.when * 1000).toLocaleString();\r
+        chan.addMsg(null, '', 'Topic set by ' + data.nick + ' at ' + when, 'topic');\r
     },\r
 \r
     /**\r
@@ -140,14 +141,14 @@ kiwi.front.events = {
     */\r
     onNotice: function (e, data) {\r
         var nick = (data.nick === undefined) ? '' : data.nick,\r
-            enick = '[' + nick + ']';\r
+            enick = '[' + nick + ']',\r
+            chan;\r
 \r
-        if (Tabview.tabExists(data.target)) {\r
-            Tabview.getTab(data.target).addMsg(null, enick, data.msg, 'notice');\r
-        } else if (Tabview.tabExists(nick)) {\r
-            Tabview.getTab(nick).addMsg(null, enick, data.msg, 'notice');\r
-        } else {\r
-            Tabview.getServerTab().addMsg(null, enick, data.msg, 'notice');\r
+        chan = kiwi.bbchans.detect(function (c) {\r
+            return c.get("name") === data.channel;\r
+        });\r
+        if (chan) {\r
+            chan.addMsg(null, enick, data.msg, 'notice');\r
         }\r
     },\r
 \r
@@ -206,15 +207,15 @@ kiwi.front.events = {
                 err_box.parent().removeClass('disconnect');\r
 \r
                 // Rejoin channels\r
-                channels = '';\r
-                _.each(Tabview.getAllTabs(), function (tabview) {\r
-                    if (tabview.name === 'server') {\r
-                        return;\r
-                    }\r
-                    channels += tabview.name + ',';\r
-                });\r
-                console.log('Rejoining: ' + channels);\r
-                kiwi.gateway.join(channels);\r
+                //channels = '';\r
+                //_.each(Tabview.getAllTabs(), function (tabview) {\r
+                //    if (tabview.name === 'server') {\r
+                //        return;\r
+                //    }\r
+                //    channels += tabview.name + ',';\r
+                //});\r
+                //console.log('Rejoining: ' + channels);\r
+                //kiwi.gateway.join(channels);\r
                 return;\r
             }\r
 \r
@@ -223,13 +224,13 @@ kiwi.front.events = {
                 kiwi.front.ui.doLayout();\r
             }\r
 \r
-            Tabview.getServerTab().addMsg(null, ' ', '=== Connected OK :)', 'status');\r
-            if (typeof init_data.channel === "string") {\r
-                kiwi.front.joinChannel(init_data.channel);\r
-            }\r
+            //Tabview.getServerTab().addMsg(null, ' ', '=== Connected OK :)', 'status');\r
+            //if (typeof init_data.channel === "string") {\r
+            //    kiwi.front.joinChannel(init_data.channel);\r
+            //}\r
             kiwi.plugs.run('connect', {success: true});\r
         } else {\r
-            Tabview.getServerTab().addMsg(null, ' ', '=== Failed to connect :(', 'status');\r
+            //Tabview.getServerTab().addMsg(null, ' ', '=== Failed to connect :(', 'status');\r
             kiwi.plugs.run('connect', {success: false});\r
         }\r
 \r
@@ -243,7 +244,7 @@ kiwi.front.events = {
     */\r
     onConnectFail: function (e, data) {\r
         var reason = (typeof data.reason === 'string') ? data.reason : '';\r
-        Tabview.getServerTab().addMsg(null, '', 'There\'s a problem connecting! (' + reason + ')', 'error');\r
+        //Tabview.getServerTab().addMsg(null, '', 'There\'s a problem connecting! (' + reason + ')', 'error');\r
         kiwi.plugs.run('connect', {success: false});\r
     },\r
     /**\r
@@ -253,10 +254,10 @@ kiwi.front.events = {
     */\r
     onDisconnect: function (e, data) {\r
         var tab, tabs;\r
-        tabs = Tabview.getAllTabs();\r
-        for (tab in tabs) {\r
-            tabs[tab].addMsg(null, '', 'Disconnected from server!', 'error disconnect');\r
-        }\r
+        //tabs = Tabview.getAllTabs();\r
+        //for (tab in tabs) {\r
+        //    tabs[tab].addMsg(null, '', 'Disconnected from server!', 'error disconnect');\r
+        //}\r
         kiwi.plugs.run('disconnect', {success: false});\r
     },\r
     /**\r
@@ -306,7 +307,7 @@ kiwi.front.events = {
     */\r
     onOptions: function (e, data) {\r
         if (typeof kiwi.gateway.network_name === "string" && kiwi.gateway.network_name !== "") {\r
-            Tabview.getServerTab().setTabText(kiwi.gateway.network_name);\r
+            //Tabview.getServerTab().setTabText(kiwi.gateway.network_name);\r
         }\r
     },\r
     /**\r
@@ -315,7 +316,7 @@ kiwi.front.events = {
     *   @param  {Object}        data    The event data\r
     */\r
     onMOTD: function (e, data) {\r
-        Tabview.getServerTab().addMsg(null, data.server, data.msg, 'motd');\r
+        //Tabview.getServerTab().addMsg(null, data.server, data.msg, 'motd');\r
     },\r
     /**\r
     *   Handles the whois event\r
@@ -335,18 +336,18 @@ kiwi.front.events = {
             idle_time = idle_time.h.toString().lpad(2, "0") + ':' + idle_time.m.toString().lpad(2, "0") + ':' + idle_time.s.toString().lpad(2, "0");\r
         }\r
 \r
-        tab = Tabview.getCurrentTab();\r
-        if (data.msg) {\r
-            tab.addMsg(null, data.nick, data.msg, 'whois');\r
-        } else if (data.logon) {\r
-            d = new Date();\r
-            d.setTime(data.logon * 1000);\r
-            d = d.toLocaleString();\r
+        //tab = Tabview.getCurrentTab();\r
+        //if (data.msg) {\r
+        //    tab.addMsg(null, data.nick, data.msg, 'whois');\r
+        //} else if (data.logon) {\r
+        //    d = new Date();\r
+        //    d.setTime(data.logon * 1000);\r
+        //    d = d.toLocaleString();\r
 \r
-            tab.addMsg(null, data.nick, 'idle for ' + idle_time + ', signed on ' + d, 'whois');\r
-        } else {\r
-            tab.addMsg(null, data.nick, 'idle for ' + idle_time, 'whois');\r
-        }\r
+        //    tab.addMsg(null, data.nick, 'idle for ' + idle_time + ', signed on ' + d, 'whois');\r
+        //} else {\r
+        //    tab.addMsg(null, data.nick, 'idle for ' + idle_time, 'whois');\r
+        //}\r
     },\r
     /**\r
     *   Handles the mode event\r
@@ -354,15 +355,30 @@ kiwi.front.events = {
     *   @param  {Object}        data    The event data\r
     */\r
     onMode: function (e, data) {\r
-        var tab;\r
+        var tab, mem;\r
         if ((typeof data.channel === 'string') && (typeof data.effected_nick === 'string')) {\r
-            tab = Tabview.getTab(data.channel);\r
-            tab.addMsg(null, ' ', '[' + data.mode + '] ' + data.effected_nick + ' by ' + data.nick, 'mode', '');\r
-            if (tab.userlist.hasUser(data.effected_nick)) {\r
-                tab.userlist.changeUserMode(data.effected_nick, data.mode.substr(1), (data.mode[0] === '+'));\r
+        //    tab = Tabview.getTab(data.channel);\r
+        //    tab.addMsg(null, ' ', '[' + data.mode + '] ' + data.effected_nick + ' by ' + data.nick, 'mode', '');\r
+        //    if (tab.userlist.hasUser(data.effected_nick)) {\r
+        //        tab.userlist.changeUserMode(data.effected_nick, data.mode.substr(1), (data.mode[0] === '+'));\r
+        //    }\r
+            chan = kiwi.bbchans.detect(function (c) {\r
+                return c.get("name") === data.channel;\r
+            });\r
+            if (chan) {\r
+                chan.addMsg(null, ' ', '[' + data.mode + '] ' + data.effected_nick + ' by ' + data.nick, 'mode', '');\r
+                mem = _.detect(chan.get("members"), function (m) {\r
+                    return data.effected_nick === m.get("nick");\r
+                });\r
+                if (mem) {\r
+                    if (data.mode[0] === '+') {\r
+                        mem.addMode(data.mode);\r
+                    } else {\r
+                        mem.removeMode(data.mode);\r
+                    }\r
+                }\r
             }\r
         }\r
-\r
         // TODO: Other mode changes that aren't +/- qaohv. - JA\r
     },\r
     /**\r
@@ -371,24 +387,29 @@ kiwi.front.events = {
     *   @param  {Object}        data    The event data\r
     */\r
     onUserList: function (e, data) {\r
-        var tab;\r
+        var tab, chan;\r
 \r
-        tab = Tabview.getTab(data.channel);\r
-        if (!tab) {\r
-            return;\r
-        }\r
+        //tab = Tabview.getTab(data.channel);\r
+        //if (!tab) {\r
+        //    return;\r
+        //}\r
 \r
+        chan = kiwi.bbchans.detect(function (c) {\r
+            return c.get("name") === data.channel;\r
+        });\r
         if ((!kiwi.front.cache.userlist) || (!kiwi.front.cache.userlist.updating)) {\r
             if (!kiwi.front.cache.userlist) {\r
                 kiwi.front.cache.userlist = {updating: true};\r
             } else {\r
                 kiwi.front.cache.userlist.updating = true;\r
             }\r
-            tab.userlist.empty();\r
+            chan.get("members").reset();\r
         }\r
 \r
-        tab.userlist.addUser(data.users);\r
-\r
+        //tab.userlist.addUser(data.users);\r
+        if (chan) {\r
+            chan.get("members").add(data.users, {"silent": true});\r
+        }\r
     },\r
     /**\r
     *   Handles the userListEnd event\r
@@ -400,6 +421,12 @@ kiwi.front.events = {
             kiwi.front.cache.userlist = {};\r
         }\r
         kiwi.front.cache.userlist.updating = false;\r
+        chan = kiwi.bbchans.detect(function (c) {\r
+            return c.get("name") === data.channel;\r
+        });\r
+        if (chan) {\r
+            chan.get("members").trigger("change");\r
+        }\r
     },\r
 \r
     /**\r
@@ -452,21 +479,30 @@ kiwi.front.events = {
     *   @param  {Object}        data    The event data\r
     */\r
     onJoin: function (e, data) {\r
-        var tab = Tabview.getTab(data.channel);\r
-        if (!tab) {\r
-            tab = new Tabview(data.channel.toLowerCase());\r
-        }\r
+        //var tab = Tabview.getTab(data.channel);\r
+        //if (!tab) {\r
+        //    tab = new Tabview(data.channel.toLowerCase());\r
+        //}\r
 \r
-        tab.addMsg(null, ' ', '--> ' + data.nick + ' [' + data.ident + '@' + data.hostname + '] has joined', 'action join', 'color:#009900;');\r
+        //tab.addMsg(null, ' ', '--> ' + data.nick + ' [' + data.ident + '@' + data.hostname + '] has joined', 'action join', 'color:#009900;');\r
 \r
-        var c = new kiwi.model.Channel({"name": data.channel.toLowerCase()});\r
-        c.get("members").add(new kiwi.model.Member({"nick": data.nick, "modes": []}));\r
-        kiwi.bbchans.add(c);\r
-        if (data.nick === kiwi.gateway.nick) {\r
-            return; // Not needed as it's already in nicklist\r
+        chan = kiwi.bbchans.detect(function (c) {\r
+            return c.get("name") === data.channel;\r
+        });\r
+        if (!chan) {\r
+            chan = new kiwi.model.Channel({"name": data.channel.toLowerCase()});\r
+            chan.get("members").add(new kiwi.model.Member({"nick": data.nick, "modes": []}));\r
+            kiwi.bbchans.add(chan);\r
+        } else {\r
+            chan.get("members").add(data.users, {"silent": true});\r
         }\r
+        chan.view.show();\r
+\r
+        //if (data.nick === kiwi.gateway.nick) {\r
+        //    return; // Not needed as it's already in nicklist\r
+        //}\r
 \r
-        tab.userlist.addUser({nick: data.nick, modes: []});\r
+        //tab.userlist.addUser({nick: data.nick, modes: []});\r
     },\r
     /**\r
     *   Handles the part event\r
@@ -474,17 +510,32 @@ kiwi.front.events = {
     *   @param  {Object}        data    The event data\r
     */\r
     onPart: function (e, data) {\r
-        var tab = Tabview.getTab(data.channel);\r
-        if (tab) {\r
+        var chan, members;\r
+        //var tab = Tabview.getTab(data.channel);\r
+        //if (tab) {\r
             // If this is us, close the tabview\r
+        //    if (data.nick === kiwi.gateway.nick) {\r
+        //        tab.close();\r
+        //        Tabview.getServerTab().show();\r
+        //        return;\r
+        //    }\r
+\r
+        //    tab.addMsg(null, ' ', '<-- ' + data.nick + ' has left (' + data.message + ')', 'action part', 'color:#990000;');\r
+        //    tab.userlist.removeUser(data.nick);\r
+        //}\r
+        chan = kiwi.bbchans.detect(function (c) {\r
+            return c.get("name") === data.channel;\r
+        });\r
+        if (chan) {\r
             if (data.nick === kiwi.gateway.nick) {\r
-                tab.close();\r
-                Tabview.getServerTab().show();\r
-                return;\r
+                chan.trigger("close");\r
+            } else {\r
+                chan.addMsg(null, ' ', '<-- ' + data.nick + ' has left (' + data.message + ')', 'action part', 'color:#990000;');\r
+                members = chan.get("members");\r
+                members.remove(_.detect(members, function (m) {\r
+                    return data.nick === m.get("nick");\r
+                }));\r
             }\r
-\r
-            tab.addMsg(null, ' ', '<-- ' + data.nick + ' has left (' + data.message + ')', 'action part', 'color:#990000;');\r
-            tab.userlist.removeUser(data.nick);\r
         }\r
     },\r
     /**\r
@@ -493,20 +544,20 @@ kiwi.front.events = {
     *   @param  {Object}        data    The event data\r
     */\r
     onKick: function (e, data) {\r
-        var tab = Tabview.getTab(data.channel);\r
-        if (tab) {\r
-            // If this is us, close the tabview\r
-            if (data.kicked === kiwi.gateway.nick) {\r
-                //tab.close();\r
-                tab.addMsg(null, ' ', '=== You have been kicked from ' + data.channel + '. ' + data.message, 'status kick');\r
-                tab.safe_to_close = true;\r
-                tab.userlist.remove();\r
-                return;\r
-            }\r
-\r
-            tab.addMsg(null, ' ', '<-- ' + data.kicked + ' kicked by ' + data.nick + '(' + data.message + ')', 'action kick', 'color:#990000;');\r
-            tab.userlist.removeUser(data.nick);\r
-        }\r
+        //var tab = Tabview.getTab(data.channel);\r
+        //if (tab) {\r
+        //    // If this is us, close the tabview\r
+        //    if (data.kicked === kiwi.gateway.nick) {\r
+        //        //tab.close();\r
+        //        tab.addMsg(null, ' ', '=== You have been kicked from ' + data.channel + '. ' + data.message, 'status kick');\r
+        //        tab.safe_to_close = true;\r
+        //        tab.userlist.remove();\r
+        //        return;\r
+        //    }\r
+\r
+        //    tab.addMsg(null, ' ', '<-- ' + data.kicked + ' kicked by ' + data.nick + '(' + data.message + ')', 'action kick', 'color:#990000;');\r
+        //    tab.userlist.removeUser(data.nick);\r
+        //}\r
     },\r
     /**\r
     *   Handles the nick event\r
@@ -514,17 +565,17 @@ kiwi.front.events = {
     *   @param  {Object}        data    The event data\r
     */\r
     onNick: function (e, data) {\r
-        if (data.nick === kiwi.gateway.nick) {\r
-            kiwi.gateway.nick = data.newnick;\r
-            kiwi.front.ui.doLayout();\r
-        }\r
+        //if (data.nick === kiwi.gateway.nick) {\r
+        //    kiwi.gateway.nick = data.newnick;\r
+        //    kiwi.front.ui.doLayout();\r
+        //}\r
 \r
-        _.each(Tabview.getAllTabs(), function (tab) {\r
-            if (tab.userlist.hasUser(data.nick)) {\r
-                tab.userlist.renameUser(data.nick, data.newnick);\r
-                tab.addMsg(null, ' ', '=== ' + data.nick + ' is now known as ' + data.newnick, 'action changenick');\r
-            }\r
-        });\r
+        //_.each(Tabview.getAllTabs(), function (tab) {\r
+        //    if (tab.userlist.hasUser(data.nick)) {\r
+        //        tab.userlist.renameUser(data.nick, data.newnick);\r
+        //        tab.addMsg(null, ' ', '=== ' + data.nick + ' is now known as ' + data.newnick, 'action changenick');\r
+        //    }\r
+        //});\r
     },\r
     /**\r
     *   Handles the quit event\r
@@ -532,12 +583,12 @@ kiwi.front.events = {
     *   @param  {Object}        data    The event data\r
     */\r
     onQuit: function (e, data) {\r
-        _.each(Tabview.getAllTabs(), function (tab) {\r
-            if (tab.userlist.hasUser(data.nick)) {\r
-                tab.userlist.removeUser(data.nick);\r
-                tab.addMsg(null, ' ', '<-- ' + data.nick + ' has quit (' + data.message + ')', 'action quit', 'color:#990000;');\r
-            }\r
-        });\r
+        //_.each(Tabview.getAllTabs(), function (tab) {\r
+        //    if (tab.userlist.hasUser(data.nick)) {\r
+        //        tab.userlist.removeUser(data.nick);\r
+        //        tab.addMsg(null, ' ', '<-- ' + data.nick + ' has quit (' + data.message + ')', 'action quit', 'color:#990000;');\r
+        //    }\r
+        //});\r
     },\r
     /**\r
     *   Handles the channelRedirect event\r
@@ -545,10 +596,10 @@ kiwi.front.events = {
     *   @param  {Object}        data    The event data\r
     */\r
     onChannelRedirect: function (e, data) {\r
-        var tab = Tabview.getTab(data.from);\r
-        tab.close();\r
-        tab = new Tabview(data.to);\r
-        tab.addMsg(null, ' ', '=== Redirected from ' + data.from, 'action');\r
+        //var tab = Tabview.getTab(data.from);\r
+        //tab.close();\r
+        //tab = new Tabview(data.to);\r
+        //tab.addMsg(null, ' ', '=== Redirected from ' + data.from, 'action');\r
     },\r
 \r
     /**\r
@@ -557,7 +608,7 @@ kiwi.front.events = {
     *   @param  {Object}        data    The event data\r
     */\r
     onIRCError: function (e, data) {\r
-        var t_view,\r
+        /*var t_view,\r
             tab = Tabview.getTab(data.channel);\r
         if (data.channel !== undefined && tab) {\r
             t_view = data.channel;\r
@@ -604,7 +655,7 @@ kiwi.front.events = {
         default:\r
             // We don't know what data contains, so don't do anything with it.\r
             console.log(e, data);\r
-        }\r
+        }*/\r
     },\r
 \r
 \r