X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Feventmanager.h;h=d7480d1c202711dd250bb484c8b185e35a191b20;hp=54d2721436f5743defccc98df6303944981ea874;hb=cd78f70e75d797cb6217b32fceebdfb6022fbe83;hpb=86837eac3346857733f3488acccca9dc2c45605e diff --git a/src/common/eventmanager.h b/src/common/eventmanager.h index 54d27214..d7480d1c 100644 --- a/src/common/eventmanager.h +++ b/src/common/eventmanager.h @@ -21,13 +21,13 @@ #ifndef EVENTMANAGER_H #define EVENTMANAGER_H -#include -#include +#include class Event; class EventManager : public QObject { Q_OBJECT + Q_FLAGS(EventFlag EventFlags) Q_ENUMS(EventType) public: @@ -45,6 +45,12 @@ public: HighestPriority }; + enum EventFlag { + Backlog = 0x40, + Stopped = 0x80 + }; + Q_DECLARE_FLAGS(EventFlags, EventFlag) + /* */ @@ -85,14 +91,20 @@ public: IrcEventPrivmsg, IrcEventQuit, IrcEventTopic, + IrcEventRawPrivmsg, ///< Undecoded privmsg (still needs CTCP parsing) + IrcEventRawNotice, ///< Undecoded notice (still needs CTCP parsing) + IrcEventUnknown, ///< Unknown non-numeric cmd IrcEventNumeric = 0x00031000, /* needs 1000 (0x03e8) consecutive free values! */ + + MessageEvent = 0x00040000, ///< Stringified event suitable for converting to Message }; EventManager(QObject *parent = 0); //virtual ~EventManager(); - QStringList providesEnums(); + EventType eventTypeByName(const QString &name) const; + EventType eventGroupByName(const QString &name) const; public slots: void registerObject(QObject *object, Priority priority = NormalPriority, const QString &methodPrefix = "handle"); @@ -130,8 +142,13 @@ private: void dispatchEvent(Event *event); - HandlerHash _registeredHandlers; + //! @return the EventType enum + QMetaEnum eventEnum() const; + HandlerHash _registeredHandlers; + mutable QMetaEnum _enum; }; +Q_DECLARE_OPERATORS_FOR_FLAGS(EventManager::EventFlags); + #endif