]> jfr.im git - irc/quakenet/qwebirc.git/blobdiff - js/ui/baseui.js
IE6 fix.
[irc/quakenet/qwebirc.git] / js / ui / baseui.js
index f90b9b6de2ec8709abefce023453d12d6260ce5c..cf9b94de97210b1b0bb9756bd8328b68215ab250 100644 (file)
@@ -1,11 +1,11 @@
-var WINDOW_STATUS = 1;
-var WINDOW_QUERY = 2;
-var WINDOW_CHANNEL = 3;
-var WINDOW_CUSTOM = 4;
-var WINDOW_CONNECT = 5;
-var CUSTOM_CLIENT = "custom";
+qwebirc.ui.WINDOW_STATUS = 1;
+qwebirc.ui.WINDOW_QUERY = 2;
+qwebirc.ui.WINDOW_CHANNEL = 3;
+qwebirc.ui.WINDOW_CUSTOM = 4;
+qwebirc.ui.WINDOW_CONNECT = 5;
+qwebirc.ui.CUSTOM_CLIENT = "custom";
 
-var BaseUI = new Class({
+qwebirc.ui.BaseUI = new Class({
   Implements: [Events, Options],
   options: {
     appTitle: "QuakeNet Web IRC",
@@ -15,22 +15,22 @@ var BaseUI = new Class({
     this.setOptions(options);
     
     this.windows = {};
-    this.windows[CUSTOM_CLIENT] = {};
+    this.windows[qwebirc.ui.CUSTOM_CLIENT] = {};
     this.windowArray = [];
     this.windowClass = windowClass;
     this.parentElement = parentElement;
     this.parentElement.addClass("qwebirc");
     this.parentElement.addClass("qwebirc-" + uiName);
     this.firstClient = false;
-    this.commandhistory = new CommandHistory();
+    this.commandhistory = new qwebirc.irc.CommandHistory();
   },
   newClient: function(client) {
     this.windows[client] = {}
-    var w = this.newWindow(client, WINDOW_STATUS, "Status");
+    var w = this.newWindow(client, qwebirc.ui.WINDOW_STATUS, "Status");
     this.selectWindow(w);
     if(!this.firstClient) {
       this.firstClient = true;
-      w.addLine("", "qwebirc v" + QWEBIRC_VERSION);
+      w.addLine("", "qwebirc v" + qwebirc.VERSION);
       w.addLine("", "Copyright (C) 2008 Chris Porter. All rights reserved.");
       w.addLine("", "http://webchat.quakenet.org/");
       w.addLine("", "This is BETA quality software, please report bugs to slug@quakenet.org");
@@ -39,7 +39,7 @@ var BaseUI = new Class({
   },
   newWindow: function(client, type, name) {
     var identifier = name;
-    if(type == WINDOW_STATUS)
+    if(type == qwebirc.ui.WINDOW_STATUS)
       identifier = "";
       
     var w = this.windows[client][identifier] = new this.windowClass(this, client, type, name, identifier);
@@ -66,16 +66,17 @@ var BaseUI = new Class({
         this.windowArray = [];
       } else {
         var index = this.windowArray.indexOf(window);
-        if(index == 0) {
+        if(index == -1) {
+          return;
+        } else if(index == 0) {
           this.selectWindow(this.windowArray[1]);
         } else {
           this.selectWindow(this.windowArray[index - 1]);
         }
-        
-        this.windowArray = this.windowArray.erase(window);
       }
     }
     
+    this.windowArray = this.windowArray.erase(window);
     delete this.windows[window.client][window.identifier];
   },
     /*
@@ -86,47 +87,16 @@ var BaseUI = new Class({
       tricked into getting themselves glined
     */
   loginBox: function(callback, initialNickname, initialChannels, autoConnect, autoNick) {
-    GenericLoginBox(this.parentElement, callback, initialNickname, initialChannels, autoConnect, autoNick);
-    /*if(autoConnect) {
-      var c = initialChannels.split(",");
-      var ctext;
-      
-      if(c.length > 1) {
-        var last = c.pop();
-        ctext = c.join(", ") + " and " + last;
-      } else {
-        ctext = c[0];
-      }
-      
-      var nicktext;
-      if(autoNick) {
-        nicktext = "";
-      } else {
-        nicktext = " (as '" + initialNickname + "')"
-      }
-      if(confirm("Connect to IRC and join channels " + ctext + nicktext + "?"))
-        callback({"nickname": initialNickname, "autojoin": initialChannels});
-      return;
-    }
-
-    var nick = prompt("Nickname:", initialNickname);
-    if(!nick) {
-      alert("Aborted.");
-      return;
-    }
-
-    var chans = prompt("Channels (seperate by comma):", initialChannels);
-    callback({"nickname": nick, "autojoin": chans});
-    */
+    qwebirc.ui.GenericLoginBox(this.parentElement, callback, initialNickname, initialChannels, autoConnect, autoNick);
   }
 });
 
-var UI = new Class({
-  Extends: BaseUI,
+qwebirc.ui.StandardUI = new Class({
+  Extends: qwebirc.ui.BaseUI,
   initialize: function(parentElement, windowClass, uiName, options) {
     this.parent(parentElement, windowClass, uiName, options);
     window.addEvent("keydown", function(x) {
-      if(!x.alt)
+      if(!x.alt || x.control)
         return;
         
       if(x.key == "a" || x.key == "A") {
@@ -155,16 +125,16 @@ var UI = new Class({
   },
   newCustomWindow: function(name, select, type) {
     if(!type)
-      type = WINDOW_CUSTOM;
+      type = qwebirc.ui.WINDOW_CUSTOM;
       
-    var w = this.newWindow(CUSTOM_CLIENT, type, name);
+    var w = this.newWindow(qwebirc.ui.CUSTOM_CLIENT, type, name);
     w.addEvent("close", function(w) {
       delete this.windows[name];
     }.bind(this));
     
     if(select)
       this.selectWindow(w);  
-      
+
     return w;
   },
   embeddedWindow: function() {
@@ -173,12 +143,12 @@ var UI = new Class({
       return;
     }
     
-    this.embedded = this.newCustomWindow("Embedded wizard", true);
+    this.embedded = this.newCustomWindow("Embedding wizard", true);
     this.embedded.addEvent("close", function() {
       this.embedded = null;
     }.bind(this));
         
-    var ew = new WebmasterGuide({parent: this.embedded.lines});
+    var ew = new qwebirc.ui.EmbedWizard({parent: this.embedded.lines});
     ew.addEvent("close", function() {
       this.embedded.close();
     }.bind(this));
@@ -190,3 +160,30 @@ var UI = new Class({
     return null;
   }
 });
+
+qwebirc.ui.QuakeNetUI = new Class({
+  Extends: qwebirc.ui.StandardUI,
+  urlDispatcher: function(name, window) {
+    if(name == "qwhois") {
+      return function(auth) {
+        this.client.exec("/MSG Q whois #" + auth);
+      }.bind(window);
+    }
+    
+    return this.parent(name);
+  }
+});
+
+qwebirc.ui.NewLoginUI = new Class({
+  Extends: qwebirc.ui.QuakeNetUI,
+  loginBox: function(callbackfn, initialNickname, initialChannels, autoConnect, autoNick) {
+    this.postInitialize();
+    var w = this.newCustomWindow("Connect", true, qwebirc.ui.WINDOW_CONNECT);
+    var callback = function(args) {
+      w.close();
+      callbackfn(args);
+    };
+    
+    qwebirc.ui.GenericLoginBox(w.lines, callback, initialNickname, initialChannels, autoConnect, autoNick);
+  }
+});