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 &)));
/*** public static methods ***/
-
-QList<Network *> Client::networks() {
- return instance()->_networks.values();
-}
-
-Network *Client::network(uint networkid) {
- if(instance()->_networks.contains(networkid))
- return instance()->_networks[networkid];
- else
- return 0;
-}
-
QList<BufferInfo> Client::allBufferInfos() {
QList<BufferInfo> bufferids;
foreach(Buffer *buffer, buffers()) {
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 instance()->_syncedToCore;
}
+/*** Network handling ***/
+
+QList<NetworkId> Client::networkIds() {
+ return instance()->_networks.keys();
+}
+
+const Network * Client::network(NetworkId networkid) {
+ if(instance()->_networks.contains(networkid)) return instance()->_networks[networkid];
+ else return 0;
+}
+
/*** Identity handling ***/
QList<IdentityId> Client::identityIds() {
}
/*** ***/
-
-void Client::fakeInput(uint bufferUid, QString message) {
- Buffer *buff = buffer(bufferUid);
- if(!buff)
- qWarning() << "No Buffer with uid" << bufferUid << "can't send Input" << message;
- else
- emit instance()->sendInput(buff->bufferInfo(), message);
-}
-
-void Client::fakeInput(BufferInfo bufferInfo, QString message) {
- fakeInput(bufferInfo, message);
+void Client::userInput(BufferInfo bufferInfo, QString message) {
+ emit instance()->sendInput(bufferInfo, message);
}
/*** core connection stuff ***/
// Clear internal data. Hopefully nothing relies on it at this point.
_networkModel->clear();
- QHash<BufferId, Buffer *>::iterator bufferIter = _buffers.begin();
- while(bufferIter != _buffers.end()) {
- Buffer *buffer = bufferIter.value();
- disconnect(buffer, SIGNAL(destroyed()), this, 0);
- bufferIter = _buffers.erase(bufferIter);
- buffer->deleteLater();
- }
- Q_ASSERT(_buffers.isEmpty());
-
-
QHash<NetworkId, Network*>::iterator netIter = _networks.begin();
while(netIter != _networks.end()) {
Network *net = netIter.value();
}
Q_ASSERT(_networks.isEmpty());
+ QHash<BufferId, Buffer *>::iterator bufferIter = _buffers.begin();
+ while(bufferIter != _buffers.end()) {
+ Buffer *buffer = bufferIter.value();
+ disconnect(buffer, SIGNAL(destroyed()), this, 0);
+ bufferIter = _buffers.erase(bufferIter);
+ buffer->deleteLater();
+ }
+ Q_ASSERT(_buffers.isEmpty());
+
QHash<IdentityId, Identity*>::iterator idIter = _identities.begin();
while(idIter != _identities.end()) {
Identity *id = idIter.value();
/*** ***/
+// 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;
- //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());
-
-// 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);
-
b->appendMsg(msg);
+ networkModel()->updateBufferActivity(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);
-}
-