Emit a new signal CoreSession::networkDisconnected(NetworkId)
[quassel.git] / src / core / corenetwork.cpp
index ccb5600..42b090f 100644 (file)
 
 #include "corenetwork.h"
 
+#include "ctcphandler.h"
 #include "core.h"
-#include "coresession.h"
 #include "coreidentity.h"
 #include "corenetworkconfig.h"
-
-#include "ircserverhandler.h"
+#include "coresession.h"
 #include "coreuserinputhandler.h"
-#include "ctcphandler.h"
+#include "ircserverhandler.h"
+#include "networkevent.h"
 
 INIT_SYNCABLE_OBJECT(CoreNetwork)
 CoreNetwork::CoreNetwork(const NetworkId &networkid, CoreSession *session)
@@ -277,6 +277,26 @@ void CoreNetwork::removeChannelKey(const QString &channel) {
 }
 
 #ifdef HAVE_QCA2
+Cipher *CoreNetwork::cipher(const QString &target) const {
+  if(target.isEmpty())
+    return 0;
+
+  QByteArray key = cipherKey(target);
+  if(key.isEmpty())
+    return 0;
+
+  CoreIrcChannel *channel = qobject_cast<CoreIrcChannel *>(ircChannel(target));
+  if(channel) {
+    if(channel->cipher()->setKey(key))
+      return channel->cipher();
+  } else {
+    CoreIrcUser *user = qobject_cast<CoreIrcUser *>(ircUser(target));
+    if(user && user->cipher()->setKey(key))
+      return user->cipher();
+  }
+  return 0;
+}
+
 QByteArray CoreNetwork::cipherKey(const QString &recipient) const {
   return _cipherKeys.value(recipient.toLower(), QByteArray());
 }
@@ -307,7 +327,15 @@ void CoreNetwork::setMyNick(const QString &mynick) {
 void CoreNetwork::socketHasData() {
   while(socket.canReadLine()) {
     QByteArray s = socket.readLine().trimmed();
-    ircServerHandler()->handleServerMsg(s);
+    ircServerHandler()->handleServerMsg(s); // FIXME remove with events
+
+    NetworkDataEvent *event = new NetworkDataEvent(EventManager::NetworkIncoming, this, s);
+#if QT_VERSION >= 0x040700
+    event->setTimestamp(QDateTime::currentDateTimeUtc());
+#else
+    event->setTimestamp(QDateTime::currentDateTime().toUTC());
+#endif
+    coreSession()->eventManager()->sendEvent(event);
   }
 }