#include "core.h"
#include "coresession.h"
#include "networkconnection.h"
+#include "userinputhandler.h"
#include "signalproxy.h"
#include "buffersyncer.h"
#include "corebacklogmanager.h"
#include "corebufferviewmanager.h"
+#include "coreirclisthelper.h"
#include "storage.h"
-#include "network.h"
+#include "corenetwork.h"
#include "ircuser.h"
#include "ircchannel.h"
#include "identity.h"
_bufferSyncer(new BufferSyncer(this)),
_backlogManager(new CoreBacklogManager(this)),
_bufferViewManager(new CoreBufferViewManager(_signalProxy, this)),
+ _ircListHelper(new CoreIrcListHelper(this)),
scriptEngine(new QScriptEngine(this))
{
// init BacklogManager;
p->synchronize(_backlogManager);
-
+
+ // init IrcListHelper;
+ p->synchronize(ircListHelper());
+
// Restore session state
if(restoreState) restoreSessionState();
foreach(NetworkConnection *conn, _connections.values()) {
delete conn;
}
- foreach(Network *net, _networks.values()) {
+ foreach(CoreNetwork *net, _networks.values()) {
delete net;
}
}
return _user;
}
-Network *CoreSession::network(NetworkId id) const {
+CoreNetwork *CoreSession::network(NetworkId id) const {
if(_networks.contains(id)) return _networks[id];
return 0;
}
}
void CoreSession::connectToNetwork(NetworkId id) {
- Network *net = network(id);
+ CoreNetwork *net = network(id);
if(!net) {
qWarning() << "Connect to unknown network requested! net:" << id << "user:" << user();
return;
}
void CoreSession::disconnectFromNetwork(NetworkId id) {
- if(!_connections.contains(id)) return;
- _connections[id]->disconnectFromIrc();
+ if(!_connections.contains(id))
+ return;
+
+ //_connections[id]->disconnectFromIrc();
+ _connections[id]->userInputHandler()->handleQuit(BufferInfo(), QString());
}
void CoreSession::networkStateRequested() {
// no checks for validity check - privateslot...
QTcpSocket *socket = qobject_cast<QTcpSocket *>(iodev);
if(socket)
- qDebug() << qPrintable(tr("Client %1 disconnected (UserId: %2).").arg(socket->peerAddress().toString()).arg(user().toInt()));
+ qDebug() << qPrintable(tr("Client")) << qPrintable(socket->peerAddress().toString()) << qPrintable(tr("disconnected (UserId: %1).").arg(user().toInt()));
else
qDebug() << "Local client disconnedted.";
disconnect(socket, 0, this, 0);
id = info.networkId.toInt();
if(!_networks.contains(id)) {
- Network *net = new Network(id, this);
+ CoreNetwork *net = new CoreNetwork(id, this);
connect(net, SIGNAL(connectRequested(NetworkId)), this, SLOT(connectToNetwork(NetworkId)));
connect(net, SIGNAL(disconnectRequested(NetworkId)), this, SLOT(disconnectFromNetwork(NetworkId)));
net->setNetworkInfo(info);
}
}
+// FIXME: move to CoreNetwork
void CoreSession::updateNetwork(const NetworkInfo &info) {
if(!_networks.contains(info.networkId)) {
qWarning() << "Update request for unknown network received!";
// this can happen if the network was reconnecting while being removed
_connections.take(id)->deleteLater();
}
+ QList<BufferId> removedBuffers = Core::requestBufferIdsForNetwork(user(), id);
Network *net = _networks.take(id);
if(net && Core::removeNetwork(user(), id)) {
+ foreach(BufferId bufferId, removedBuffers) {
+ _bufferSyncer->removeBuffer(bufferId);
+ }
emit networkRemoved(id);
net->deleteLater();
}
}
if(bufferInfo.type() == BufferInfo::ChannelBuffer) {
- Network *net = network(bufferInfo.networkId());
+ CoreNetwork *net = network(bufferInfo.networkId());
if(!net) {
qWarning() << "CoreSession::removeBufferRequested(): Received BufferInfo with unknown networkId!";
return;