/***************************************************************************
- * Copyright (C) 2005-07 by The Quassel Team *
+ * Copyright (C) 2005-07 by the Quassel IRC Team *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
+ * (at your option) version 3. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
// FIXME switch to netids!
// WHEN IS THIS NEEDED ANYHOW!?
+// ...only for finding the Buffer for a channel, I guess...
BufferInfo Client::bufferInfo(QString net, QString buf) {
foreach(Buffer *buffer_, buffers()) {
BufferInfo bufferInfo = buffer_->bufferInfo();
- if(bufferInfo.network() == net && bufferInfo.buffer() == buf)
+ if(!bufferInfo.network().compare(net, Qt::CaseInsensitive) && !bufferInfo.buffer().compare(buf, Qt::CaseInsensitive))
return bufferInfo;
}
Q_ASSERT(false); // should never happen!
return bufferInfo(net, "");
}
-BufferTreeModel *Client::bufferModel() {
- return instance()->_bufferModel;
+NetworkModel *Client::networkModel() {
+ return instance()->_networkModel;
}
SignalProxy *Client::signalProxy() {
socket(0),
_signalProxy(new SignalProxy(SignalProxy::Client, this)),
mainUi(0),
- _bufferModel(0),
+ _networkModel(0),
connectedToCore(false)
{
}
Client::~Client() {
+
}
void Client::init() {
blockSize = 0;
- _bufferModel = new BufferTreeModel(this);
+ _networkModel = new NetworkModel(this);
connect(this, SIGNAL(bufferSelected(Buffer *)),
- _bufferModel, SLOT(selectBuffer(Buffer *)));
+ _networkModel, SLOT(selectBuffer(Buffer *)));
connect(this, SIGNAL(bufferUpdated(Buffer *)),
- _bufferModel, SLOT(bufferUpdated(Buffer *)));
+ _networkModel, SLOT(bufferUpdated(Buffer *)));
connect(this, SIGNAL(bufferActivity(Buffer::ActivityLevel, Buffer *)),
- _bufferModel, SLOT(bufferActivity(Buffer::ActivityLevel, Buffer *)));
+ _networkModel, SLOT(bufferActivity(Buffer::ActivityLevel, Buffer *)));
SignalProxy *p = signalProxy();
p->attachSignal(this, SIGNAL(sendSessionData(const QString &, const QVariant &)),
}
void Client::setCoreConfiguration(const QVariantMap &settings) {
- writeDataToDevice(socket, settings);
+ SignalProxy::writeDataToDevice(socket, settings);
}
void Client::coreSocketConnected() {
clientInit["GuiProtocol"] = GUI_PROTOCOL;
clientInit["User"] = coreConnectionInfo["User"].toString();
clientInit["Password"] = coreConnectionInfo["Password"].toString();
- writeDataToDevice(socket, clientInit);
+ SignalProxy::writeDataToDevice(socket, clientInit);
}
void Client::coreSocketDisconnected() {
blockSize = 0;
/* Clear internal data. Hopefully nothing relies on it at this point. */
- _bufferModel->clear();
+ _networkModel->clear();
QHash<uint, Buffer *>::iterator bufferIter = _buffers.begin();
while(bufferIter != _buffers.end()) {
net->deleteLater();
}
Q_ASSERT(_networkInfo.isEmpty());
-
+
coreConnectionInfo.clear();
sessionData.clear();
layoutQueue.clear();
void Client::coreHasData() {
QVariant item;
- if(readDataFromDevice(socket, blockSize, item)) {
+ if(SignalProxy::readDataFromDevice(socket, blockSize, item)) {
emit recvPartialItem(1,1);
QVariantMap msg = item.toMap();
if (!msg["StartWizard"].toBool()) {
NetworkInfo *netinfo = new NetworkInfo(netid, this);
netinfo->setProxy(signalProxy());
+ networkModel()->attachNetworkInfo(netinfo);
if(!isConnected()) {
connect(netinfo, SIGNAL(initDone()), this, SLOT(updateCoreConnectionProgress()));
connect(netinfo, SIGNAL(ircUserInitDone()), this, SLOT(updateCoreConnectionProgress()));
connect(netinfo, SIGNAL(ircChannelInitDone()), this, SLOT(updateCoreConnectionProgress()));
}
+ connect(netinfo, SIGNAL(ircChannelAdded(QString)), this, SLOT(ircChannelAdded(QString)));
connect(netinfo, SIGNAL(destroyed()), this, SLOT(networkInfoDestroyed()));
_networkInfo[netid] = netinfo;
}
//buffer->displayMsg(Message(bufferid, Message::Server, tr("Server disconnected."))); FIXME
buffer->setActive(false);
}
-
+
Q_ASSERT(networkInfo(networkid));
if(!networkInfo(networkid)->initialized()) {
qDebug() << "Network" << networkid << "disconnected while not yet initialized!";
}
}
+void Client::ircChannelAdded(QString chanName) {
+ NetworkInfo *netInfo = qobject_cast<NetworkInfo*>(sender());
+ Q_ASSERT(netInfo);
+ Buffer *buf = buffer(bufferInfo(netInfo->networkName(), chanName));
+ Q_ASSERT(buf);
+ buf->setIrcChannel(netInfo->ircChannel(chanName));
+
+}
+
void Client::updateBufferInfo(BufferInfo id) {
buffer(id)->updateBufferInfo(id);
}