#include "network.h"
#include "networkmodel.h"
#include "buffermodel.h"
-#include "nickmodel.h"
#include "quasselui.h"
#include "signalproxy.h"
#include "util.h"
mainUi(0),
_networkModel(0),
_bufferModel(0),
- _nickModel(0),
_connectedToCore(false),
_syncedToCore(false)
{
+ _monitorBuffer = new Buffer(BufferInfo(), this);
}
Client::~Client() {
_networkModel, SLOT(bufferUpdated(BufferInfo)));
_bufferModel = new BufferModel(_networkModel);
- _nickModel = new NickModel(_networkModel);
SignalProxy *p = signalProxy();
p->attachSignal(this, SIGNAL(sendSessionData(const QString &, const QVariant &)),
p->attachSignal(this, SIGNAL(requestRemoveIdentity(IdentityId)), SIGNAL(removeIdentity(IdentityId)));
p->attachSlot(SIGNAL(identityCreated(const Identity &)), this, SLOT(coreIdentityCreated(const Identity &)));
p->attachSlot(SIGNAL(identityRemoved(IdentityId)), this, SLOT(coreIdentityRemoved(IdentityId)));
-
+/*
+ p->attachSignal(this, SIGNAL(requestCreateNetwork(const NetworkInfo &)), SIGNAL(createNetwork(const NetworkInfo &)));
+ p->attachSignal(this, SIGNAL(requestUpdateNetwork(const NetworkInfo &)), SIGNAL(updateNetwork(const NetworkInfo &)));
+ p->attachSignal(this, SIGNAL(requestRemoveNetwork(NetworkId)), SIGNAL(removeNetwork(NetworkId)));
+ p->attachSlot(SIGNAL(networkCreated(const NetworkInfo &)), this, SLOT(coreNetworkCreated(const NetworkInfo &)));
+ p->attachSlot(SIGNAL(networkRemoved(NetworkId)), this, SLOT(coreNetworkRemoved(NetworkId)));
+*/
connect(p, SIGNAL(disconnected()), this, SLOT(disconnectFromCore()));
//connect(mainUi, SIGNAL(connectToCore(const QVariantMap &)), this, SLOT(connectToCore(const QVariantMap &)));
if(!buff) {
Client *client = Client::instance();
buff = new Buffer(id, client);
-
- connect(buff, SIGNAL(userInput(BufferInfo, QString)),
- client, SLOT(userInput(BufferInfo, QString)));
connect(buff, SIGNAL(destroyed()),
client, SLOT(bufferDestroyed()));
client->_buffers[id.uid()] = buff;
return buff;
}
+Buffer *Client::monitorBuffer() {
+ return instance()->_monitorBuffer;
+}
+
NetworkModel *Client::networkModel() {
return instance()->_networkModel;
return instance()->_bufferModel;
}
-NickModel *Client::nickModel() {
- return instance()->_nickModel;
-}
-
-
SignalProxy *Client::signalProxy() {
return instance()->_signalProxy;
}
}
/*** ***/
-
-void Client::fakeInput(BufferId bufferUid, QString message) {
- Buffer *buff = buffer(bufferUid);
- if(!buff)
- qWarning() << "No Buffer with uid" << bufferUid << "can't send Input" << message;
- else
- instance()->userInput(buff->bufferInfo(), message);
+void Client::userInput(BufferInfo bufferInfo, QString message) {
+ emit instance()->sendInput(bufferInfo, message);
}
/*** core connection stuff ***/
/*** ***/
+// FIXME
+void Client::disconnectFromNetwork(NetworkId id) {
+ if(!instance()->_networks.contains(id)) return;
+ Network *net = instance()->_networks[id];
+ net->requestDisconnect();
+}
+
/*
void Client::networkConnected(uint netid) {
// TODO: create statusBuffer / switch to networkids
}
*/
-void Client::addNetwork(NetworkId netid) {
- Network *net = new Network(netid, instance());
- addNetwork(net);
-}
-
void Client::addNetwork(Network *net) {
net->setProxy(signalProxy());
signalProxy()->synchronize(net);
networkModel()->attachNetwork(net);
connect(net, SIGNAL(destroyed()), instance(), SLOT(networkDestroyed()));
instance()->_networks[net->networkId()] = net;
- emit instance()->networkAdded(net->networkId());
- //if(net->networkId() == 1) net->requestConnect(); // FIXME
+ emit instance()->networkCreated(net->networkId());
+}
+
+void Client::createNetwork(const NetworkInfo &info) {
+
+
}
/*** ***/
}
void Client::networkDestroyed() {
- Network *netinfo = static_cast<Network *>(sender());
- NetworkId networkId = netinfo->networkId();
+ // FIXME this is not gonna work, net is a QObject here already!
+ Network *net = static_cast<Network *>(sender());
+ NetworkId networkId = net->networkId();
if(_networks.contains(networkId))
_networks.remove(networkId);
}
void Client::recvMessage(const Message &msg) {
Buffer *b = buffer(msg.buffer());
+ b->appendMsg(msg);
+ networkModel()->updateBufferActivity(msg);
-// Buffer::ActivityLevel level = Buffer::OtherActivity;
-// if(msg.type() == Message::Plain || msg.type() == Message::Notice){
-// level |= Buffer::NewMessage;
-// }
-// if(msg.flags() & Message::Highlight){
-// level |= Buffer::Highlight;
-// }
-// emit bufferActivity(level, b);
+ if(msg.type() == Message::Plain || msg.type() == Message::Notice || msg.type() == Message::Action) {
+ QString sender = msg.buffer().network() + ":" + msg.buffer().buffer() + ":" + msg.sender();
+ Message mmsg = Message(msg.timestamp(), msg.buffer(), msg.type(), msg.text(), sender, msg.flags());
+ monitorBuffer()->appendMsg(mmsg);
+ }
- b->appendMsg(msg);
}
void Client::recvStatusMsg(QString /*net*/, QString /*msg*/) {
foreach(QVariant v, msgs) {
Message msg = v.value<Message>();
b->prependMsg(msg);
+ // networkModel()->updateBufferActivity(msg);
if(!layoutQueue.contains(b)) layoutQueue.append(b);
}
if(layoutQueue.count() && !layoutTimer->isActive()) layoutTimer->start();
return instance()->mainUi->layoutMsg(msg);
}
-void Client::userInput(BufferInfo id, QString msg) {
- emit sendInput(id, msg);
-}
-