]> jfr.im git - irc/quakenet/qwebirc.git/blobdiff - js/ui/baseui.js
bump to 1.02
[irc/quakenet/qwebirc.git] / js / ui / baseui.js
index 16c334dc28e0e6f45a8a6e173409eab668f8f37c..923ba6eb602fb13cccb8cc2071f27d60e30f116f 100644 (file)
@@ -71,7 +71,7 @@ qwebirc.ui.BaseUI = new Class({
     if(!this.firstClient) {
       this.firstClient = true;
       w.addLine("", "qwebirc v" + qwebirc.VERSION);
-      w.addLine("", "Copyright (C) 2008-2014 Chris Porter and the qwebirc project.");
+      w.addLine("", "Copyright (C) 2008-2019 Chris Porter and the qwebirc project.");
       w.addLine("", "http://www.qwebirc.org");
       w.addLine("", "Licensed under the GNU General Public License, Version 2.");
     }
@@ -117,9 +117,12 @@ qwebirc.ui.BaseUI = new Class({
   getActiveWindow: function() {
     return this.active;
   },
+  getStatusWindow: function(client) {
+    return this.windows.get(this.getClientId(client)).get(this.getWindowIdentifier(client, qwebirc.ui.WINDOW_STATUS));
+  },
   getActiveIRCWindow: function(client) {
     if(!this.active || this.active.type == qwebirc.ui.WINDOW_CUSTOM) {
-      return this.windows.get(this.getClientId(client)).get(this.getWindowIdentifier(client, qwebirc.ui.WINDOW_STATUS));
+      return this.getStatusWindow(client);
     } else {
       return this.active;
     }
@@ -213,7 +216,8 @@ qwebirc.ui.BaseUI = new Class({
     this.postInitialize();
 
     this.addCustomWindow("Connect", qwebirc.ui.ConnectPane, "connectpane", {
-      initialNickname: initialNickname, initialChannels: initialChannels, autoConnect: autoConnect, networkName: this.options.networkName, callback: callback, autoNick: autoNick
+      initialNickname: initialNickname, initialChannels: initialChannels, autoConnect: autoConnect, callback: callback, autoNick: autoNick,
+      uiOptions: this.options
     }, qwebirc.ui.WINDOW_CONNECT);
   },
   focusChange: function(newValue) {
@@ -248,10 +252,11 @@ qwebirc.ui.BaseUI = new Class({
 
 qwebirc.ui.StandardUI = new Class({
   Extends: qwebirc.ui.BaseUI,
-  UICommands: qwebirc.ui.UI_COMMANDS,
   initialize: function(parentElement, windowClass, uiName, options) {
     this.parent(parentElement, windowClass, uiName, options);
 
+    this.UICommands = this.__build_menu_items(options);
+
     this.__styleValues = {hue: qwebirc.ui.DEFAULT_HUE, saturation: 0, lightness: 0, textHue: null, textSaturation: null, textLightness: null};
     if($defined(this.options.hue)) this.__styleValues.hue = this.options.hue;
     this.tabCompleter = new qwebirc.ui.TabCompleterFactory(this);
@@ -273,6 +278,42 @@ qwebirc.ui.StandardUI = new Class({
 
     document.addEvent("keydown", this.__handleHotkey.bind(this));
   },
+  __build_menu_items: function(options) {
+    var r = [];
+    var seenAbout = null;
+
+    for(var i=0;i<qwebirc.ui.UI_COMMANDS_P1.length;i++)
+      r.push([true, qwebirc.ui.UI_COMMANDS_P1[i]]);
+    for(var i=0;i<options.customMenuItems.length;i++)
+      r.push([false, options.customMenuItems[i]]);
+    for(var i=0;i<qwebirc.ui.UI_COMMANDS_P2.length;i++)
+      r.push([true, qwebirc.ui.UI_COMMANDS_P2[i]]);
+
+    var r2 = []
+    for(var i=0;i<r.length;i++) {
+      var preset = r[i][0], c = r[i][1];
+
+      if(c[0] == "About qwebirc") { /* HACK */
+        if(!preset) {
+          seenAbout = c;
+          continue;
+        } else if(seenAbout) {
+          c = seenAbout;
+          preset = false;
+        }
+      }
+
+      if(preset) {
+        r2.push([c[0], this[c[1] + "Window"].bind(this)]);
+      } else {
+        r2.push([c[0], (function(c) { return function() {
+          this.addCustomWindow(c[0], qwebirc.ui.URLPane, "urlpane", {url: c[1]});
+        }.bind(this); }).call(this, c)]);
+      }
+    }
+
+    return r2;
+  },
   __handleHotkey: function(x) {
     var success = false;
     if(!x.alt && !x.control && !x.shift && !x.meta) {
@@ -375,16 +416,7 @@ qwebirc.ui.StandardUI = new Class({
     this.addCustomWindow("Options", qwebirc.ui.OptionsPane, "optionspane", this.uiOptions);
   },
   aboutWindow: function() {
-    this.addCustomWindow("About", qwebirc.ui.AboutPane, "aboutpane", this.uiOptions);
-  },
-  privacyWindow: function() {
-    this.addCustomWindow("Privacy policy", qwebirc.ui.PrivacyPolicyPane, "privacypolicypane", this.uiOptions);
-  },
-  feedbackWindow: function() {
-    this.addCustomWindow("Feedback", qwebirc.ui.FeedbackPane, "feedbackpane", this.uiOptions);
-  },
-  helpWindow: function() {
-    this.addCustomWindow("Help!", qwebirc.ui.HelpPane, "helppane", this.uiOptions);
+    this.addCustomWindow("About qwebirc", qwebirc.ui.AboutPane, "aboutpane", this.uiOptions);
   },
   urlDispatcher: function(name, window) {
     if(name == "embedded")
@@ -463,18 +495,14 @@ qwebirc.ui.NotificationUI = new Class({
 
     this.cancelFlash = this.__flasher.cancelFlash.bind(this.__flasher);
   },
-  beep: function() {
-    this.__beeper.beep();
+  beep: function(notification) {
+    this.__beeper.beep(notification);
   },
   notify: function(title, message, callback) {
-    this.__beeper.beep();
+    this.__beeper.beep(true);
     this.__flasher.flash();
     this.__notifier.notify(title, message, callback);
   },
-  setBeepOnMention: function(value) {
-    if(value)
-      this.__beeper.soundInit();
-  },
   setNotifications: function(value) {
     this.__notifier.setEnabled(value);
   },
@@ -494,21 +522,24 @@ qwebirc.ui.QuakeNetUI = new Class({
   urlDispatcher: function(name, window) {
     if(name == "qwhois") {
       return ["span", function(auth) {
-        this.client.exec("/MSG Q whois #" + auth);
+        if($defined(this.parentObject.options.accountWhoisCommand))
+          this.client.exec(this.parentObject.options.accountWhoisCommand + auth);
       }.bind(window)];
     }
     return this.parent(name, window);
   },
   logout: function() {
-    if(!qwebirc.auth.loggedin())
+    if(!qwebirc.auth.loggedin(true)) {
+      this.getActiveWindow().errorMessage("Not logged in!");
       return;
+    }
     if(confirm("Log out?")) {
       this.clients.each(function(k, v) {
         v.quit("Logged out");
       }, this);
       
       /* HACK */
-      var foo = function() { document.location = qwebirc.global.dynamicBaseURL + "auth?logout=1"; };
+      var foo = function() { document.location = "/auth?logout=1"; };
       foo.delay(500);
     }
   }