{
}
+
+QDebug operator<<(QDebug dbg, Event *e) {
+ dbg.nospace() << qPrintable(e->className()) << "("
+ << "type = 0x" << qPrintable(QString::number(e->type(), 16));
+ e->debugInfo(dbg);
+ //<< ", data = " << e->data(); // we don't use data anywhere yet
+ dbg.nospace() << ", flags = 0x" << qPrintable(QString::number(e->flags(), 16))
+ << ")";
+ return dbg.space();
+}
+
#ifndef EVENT_H
#define EVENT_H
+#include <QDebug>
+
#include "eventmanager.h"
class Event {
inline void stop() { setFlag(EventManager::Stopped); }
inline bool isStopped() { return _flags.testFlag(EventManager::Stopped); }
- inline void setData(const QVariant &data) { _data = data; }
- inline QVariant data() const { return _data; }
+ //inline void setData(const QVariant &data) { _data = data; }
+ //inline QVariant data() const { return _data; }
+
+protected:
+ virtual inline QString className() const { return "Event"; }
+ virtual inline void debugInfo(QDebug &dbg) const { Q_UNUSED(dbg); }
private:
EventManager::EventType _type;
EventManager::EventFlags _flags;
- QVariant _data;
+ //QVariant _data;
+
+ friend QDebug operator<<(QDebug dbg, Event *e);
};
+QDebug operator<<(QDebug dbg, Event *e);
+
/*******/
#endif
return type == Invalid? Invalid : static_cast<EventType>(type & EventGroupMask);
}
+QString EventManager::enumName(EventType type) const {
+ return eventEnum().valueToKey(type);
+}
+
/* NOTE:
Registering and calling handlers works fine even if they specify a subclass of Event as their parameter.
However, this most probably is a result from a reinterpret_cast somewhere deep inside Qt, so there is *no*
// not threadsafe! if we should want that, we need to add a mutexed queue somewhere in this general area.
void EventManager::sendEvent(Event *event) {
+ // qDebug() << "Sending" << event;
dispatchEvent(event);
}
EventType eventTypeByName(const QString &name) const;
EventType eventGroupByName(const QString &name) const;
+ QString enumName(EventType type) const;
public slots:
void registerObject(QObject *object, Priority priority = NormalPriority, const QString &methodPrefix = "handle");
inline QStringList params() const { return _params; }
inline void setParams(const QStringList ¶ms) { _params = params; }
+protected:
+ virtual inline QString className() const { return "IrcEvent"; }
+ virtual inline void debugInfo(QDebug &dbg) const {
+ NetworkEvent::debugInfo(dbg);
+ dbg << ", prefix = " << qPrintable(prefix())
+ << ", params = " << params();
+ }
+
private:
QString _prefix;
QStringList _params;
inline QString target() const { return _target; }
inline void setTarget(const QString &target) { _target = target; }
+protected:
+ virtual inline QString className() const { return "IrcEventNumeric"; }
+ virtual inline void debugInfo(QDebug &dbg) const {
+ dbg << ", num = " << number();
+ NetworkEvent::debugInfo(dbg);
+ dbg << ", target = " << qPrintable(target())
+ << ", prefix = " << qPrintable(prefix())
+ << ", params = " << params();
+ }
+
private:
uint _number;
QString _target;
inline QByteArray rawMessage() const { return _rawMessage; }
inline void setRawMessage(const QByteArray &rawMessage) { _rawMessage = rawMessage; }
+protected:
+ virtual inline QString className() const { return "IrcEventRawMessage"; }
+ virtual inline void debugInfo(QDebug &dbg) const {
+ NetworkEvent::debugInfo(dbg);
+ dbg << ", target = " << qPrintable(target())
+ << ", prefix = " << qPrintable(prefix())
+ << ", msg = " << rawMessage();
+ }
+
+
private:
QByteArray _rawMessage;
};
inline void setMsgFlag(Message::Flag flag) { _msgFlags |= flag; }
inline void setMsgFlags(Message::Flags flags) { _msgFlags = flags; }
+protected:
+ virtual inline QString className() const { return "MessageEvent"; }
+ virtual inline void debugInfo(QDebug &dbg) const {
+ NetworkEvent::debugInfo(dbg);
+ dbg.nospace() << ", sender = " << qPrintable(sender())
+ << ", target = " << qPrintable(target())
+ << ", text = " << text()
+ << ", msgtype = " << qPrintable(QString::number(msgType(), 16))
+ << ", buffertype = " << qPrintable(QString::number(bufferType(), 16))
+ << ", msgflags = " << qPrintable(QString::number(msgFlags(), 16));
+ }
+
private:
BufferInfo::Type bufferTypeByTarget(const QString &target) const;
inline NetworkId networkId() const { return network()? network()->networkId() : NetworkId(); }
inline Network *network() const { return _network; }
+protected:
+ virtual inline QString className() const { return "NetworkEvent"; }
+ virtual inline void debugInfo(QDebug &dbg) const { dbg.nospace() << ", net = " << qPrintable(_network->networkName()); }
+
private:
Network *_network;
};
inline Network::ConnectionState connectionState() const { return _state; }
inline void setConnectionState(Network::ConnectionState state) { _state = state; }
+protected:
+ virtual inline QString className() const { return "NetworkConnectionEvent"; }
+ virtual inline void debugInfo(QDebug &dbg) const {
+ NetworkEvent::debugInfo(dbg);
+ dbg.nospace() << ", state = " << qPrintable(QString::number(_state));
+ }
+
private:
Network::ConnectionState _state;
};
inline QByteArray data() const { return _data; }
inline void setData(const QByteArray &data) { _data = data; }
+protected:
+ virtual inline QString className() const { return "NetworkDataEvent"; }
+ virtual inline void debugInfo(QDebug &dbg) const {
+ NetworkEvent::debugInfo(dbg);
+ dbg.nospace() << ", data = " << data();
+ }
+
private:
QByteArray _data;
};