Refactoring the GUI. Work in progress.
[quassel.git] / core / server.cpp
index 01cf281..e5ed4eb 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005/06 by The Quassel Team                             *
+ *   Copyright (C) 2005-07 by The Quassel Team                             *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -26,7 +26,7 @@
 #include <QMetaObject>
 #include <QDateTime>
 
-Server::Server(QString net) : network(net) {
+Server::Server(UserId uid, QString net) : user(uid), network(net) {
   QString MQUOTE = QString('\020');
   ctcpMDequoteHash[MQUOTE + '0'] = QString('\000');
   ctcpMDequoteHash[MQUOTE + 'n'] = QString('\n');
@@ -67,8 +67,8 @@ void Server::sendState() {
 
 void Server::connectToIrc(QString net) {
   if(net != network) return; // not me!
-  networkSettings = global->getData("Networks").toMap()[net].toMap();
-  identity = global->getData("Identities").toMap()[networkSettings["Identity"].toString()].toMap();
+  networkSettings = Global::data(user, "Networks").toMap()[net].toMap();
+  identity = Global::data(user, "Identities").toMap()[networkSettings["Identity"].toString()].toMap();
   QList<QVariant> servers = networkSettings["Servers"].toList();
   QString host = servers[0].toMap()["Address"].toString();
   quint16 port = servers[0].toMap()["Port"].toUInt();
@@ -167,7 +167,7 @@ void Server::handleServerMsg(QString msg) {
       return;
     }
     // OK, first we split the raw message into its various parts...
-    QString prefix;
+    QString prefix = "";
     QString cmd;
     QStringList params;
 
@@ -697,8 +697,10 @@ void Server::handleServerQuit(QString prefix, QStringList params) {
   QString nick = updateNickFromMask(prefix);
   Q_ASSERT(nicks.contains(nick));
   VarMap chans = nicks[nick]["Channels"].toMap();
+  QString msg;
+  if(params.count()) msg = params[0];
   foreach(QString c, chans.keys()) {
-    emit displayMsg(Message::Quit, c, params[0], prefix);
+    emit displayMsg(Message::Quit, c, msg, prefix);
   }
   nicks.remove(nick);
   emit nickRemoved(network, nick);
@@ -736,6 +738,7 @@ void Server::handleServer001(QString prefix, QStringList params) {
 /* RPL_ISUPPORT */
 // TODO Complete 005 handling, also use sensible defaults for non-sent stuff
 void Server::handleServer005(QString prefix, QStringList params) {
+  //qDebug() << prefix << params;
   params.removeLast();
   foreach(QString p, params) {
     QString key = p.section("=", 0, 0);
@@ -866,8 +869,8 @@ void Server::handleCtcpAction(CtcpType ctcptype, QString prefix, QString target,
 
 void Server::handleCtcpPing(CtcpType ctcptype, QString prefix, QString target, QString param) {
   if(ctcptype == CtcpQuery) {
-    ctcpReply(userFromMask(prefix), "PING", param);
-    emit displayMsg(Message::Plain, "", tr("Received CTCP PING request by %1").arg(prefix));
+    ctcpReply(nickFromMask(prefix), "PING", param);
+    emit displayMsg(Message::Server, "", tr("Received CTCP PING request by %1").arg(prefix));
   } else {
     // display ping answer
   }
@@ -875,9 +878,10 @@ void Server::handleCtcpPing(CtcpType ctcptype, QString prefix, QString target, Q
 
 void Server::handleCtcpVersion(CtcpType ctcptype, QString prefix, QString target, QString param) {
   if(ctcptype == CtcpQuery) {
-    // FIXME use real Info about quasel :)
-    ctcpReply(userFromMask(prefix), "VERSION", QString("Quassel:pre Release:*nix"));
-    emit displayMsg(Message::Plain, "", tr("Received CTCP VERSION request by %1").arg(prefix));
+    // FIXME use real Info about quassel :)
+    //ctcpReply(nickFromMask(prefix), "VERSION", QString("Quassel:pre Release:*nix"));
+    ctcpReply(nickFromMask(prefix), "VERSION", QString("Quassel IRC (Pre-Release) - http://www.quassel-irc.org"));
+    emit displayMsg(Message::Server, "", tr("Received CTCP VERSION request by %1").arg(prefix));
   } else {
     // TODO display Version answer
   }