signals for everything you need to send. This uses the usual mechanism, but instead of sending
custom-named signals and perform a parameter conversion, we just emit the raw data and leave
the processing to the user. Note that this might have a slight performance impact on the receiver's
side if you connect the generic signal to several custom slots, because _all_ unhandled signals
are sent to _all_ generic handlers (which then need to filter out whichever signal they need).
Use as follows:
- define signaltype in main/proxy_common.h
- use slots CoreProxy::csGeneric(type, arg1, arg2, arg3)
or GUIProcy::gsGeneric(type, arg1, arg2, arg3)
- On the other side, the signal is emitted by the proxy, so you may connect your slot
and then handle the sigtype as needed.
case GS_REQUEST_CONNECT: emit gsRequestConnect(arg1.toStringList()); break;
case GS_IMPORT_BACKLOG: emit gsImportBacklog(); break;
case GS_REQUEST_BACKLOG: emit gsRequestBacklog(arg1.value<BufferId>(), arg2, arg3); break;
- default: qWarning() << "Unknown signal in CoreProxy::recv: " << sig;
+ //default: qWarning() << "Unknown signal in CoreProxy::recv: " << sig;
+ default: emit gsGeneric(sig, arg1, arg2, arg3);
}
}
inline void csBacklogData(BufferId id, QList<QVariant> msg, bool done) { send(CS_BACKLOG_DATA, QVariant::fromValue(id), msg, done); }
inline void csUpdateBufferId(BufferId id) { send(CS_UPDATE_BUFFERID, QVariant::fromValue(id)); }
+ inline void csGeneric(CoreSignal sig, QVariant v1 = QVariant(), QVariant v2 = QVariant(), QVariant v3 = QVariant()) { send(sig, v1, v2, v3); }
+
signals:
void gsPutGlobalData(QString, QVariant);
void gsUserInput(BufferId, QString);
void gsImportBacklog();
void gsRequestBacklog(BufferId, QVariant, QVariant);
+ void gsGeneric(GUISignal, QVariant, QVariant, QVariant);
+
void requestServerStates();
private:
}
}
-/*
-void Buffer::displayMsg(Message msg) {
- contents()->append(msg);
- emit msgDisplayed(msg);
-}
-
-void Buffer::prependMessages(QList<Message> msgs) {
- _contents = msgs + _contents;
-}
-*/
-
void Buffer::appendChatLine(ChatLine *line) {
lines.append(line);
emit chatLineAppended(line);
case CS_BACKLOG_DATA: emit csBacklogData(arg1.value<BufferId>(), arg2.toList(), arg3.toBool()); break;
case CS_UPDATE_BUFFERID: emit csUpdateBufferId(arg1.value<BufferId>()); break;
- default: qWarning() << "Unknown signal in GUIProxy::recv: " << sig;
+ //default: qWarning() << "Unknown signal in GUIProxy::recv: " << sig;
+ default: emit csGeneric(sig, arg1, arg2, arg3);
}
}
inline void gsImportBacklog() { send(GS_IMPORT_BACKLOG); }
inline void gsRequestBacklog(BufferId id, QVariant v1, QVariant v2) { send(GS_REQUEST_BACKLOG, QVariant::fromValue(id), v1, v2); }
+ inline void gsGeneric(GUISignal sig, QVariant v1 = QVariant(), QVariant v2 = QVariant(), QVariant v3 = QVariant()) { send(sig, v1, v2, v3); }
+
void connectToCore(QString host, quint16 port);
void disconnectFromCore();
void csBacklogData(BufferId, QList<QVariant>, bool);
void csUpdateBufferId(BufferId);
- void csGeneric(int, QVariant, QVariant);
+ void csGeneric(CoreSignal, QVariant, QVariant, QVariant);
void coreConnected();
void coreDisconnected();
}
GUIProxy::GUIProxy() {
- if(guiProxy) qFatal("Trying to instantiate more than one CoreProxy object!");
+ if(guiProxy) qFatal("Trying to instantiate more than one GUIProxy object!");
}
void GUIProxy::send(GUISignal sig, QVariant arg1, QVariant arg2, QVariant arg3) {