/***************************************************************************
- * Copyright (C) 2005-2010 by the Quassel Project *
+ * Copyright (C) 2005-2019 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#ifndef EVENT_H
-#define EVENT_H
+#pragma once
+
+#include "common-export.h"
+
+#include <QDateTime>
+#include <QDebug>
#include "eventmanager.h"
-class Event {
+class Network;
+class COMMON_EXPORT Event
+{
public:
- explicit Event(EventManager::EventType type = EventManager::Invalid);
- virtual ~Event() {};
+ explicit Event(EventManager::EventType type = EventManager::Invalid);
+ virtual ~Event() = default;
+
+ inline EventManager::EventType type() const { return _type; }
+
+ inline void setFlag(EventManager::EventFlag flag) { _flags |= flag; }
+ inline void setFlags(EventManager::EventFlags flags) { _flags = flags; }
+ inline bool testFlag(EventManager::EventFlag flag) { return _flags.testFlag(flag); }
+ inline EventManager::EventFlags flags() const { return _flags; }
+
+ inline bool isValid() const { return _valid; }
+ inline void stop() { setFlag(EventManager::Stopped); }
+ inline bool isStopped() { return _flags.testFlag(EventManager::Stopped); }
- inline EventManager::EventType type() const { return _type; }
+ inline void setTimestamp(const QDateTime& time) { _timestamp = time; }
+ inline QDateTime timestamp() const { return _timestamp; }
- inline void setFlag(EventManager::EventFlag flag) { _flags |= flag; }
- inline void setFlags(EventManager::EventFlags flags) { _flags = flags; }
+ // inline void setData(const QVariant &data) { _data = data; }
+ // inline QVariant data() const { return _data; }
- inline EventManager::EventFlags flags() const { return _flags; }
+ // call EventManager::createEvent(map) instead!
+ static Event* fromVariantMap(QVariantMap& map, Network* network);
+ QVariantMap toVariantMap() const;
- inline void stop() { setFlag(EventManager::Stopped); }
- inline bool isStopped() { return _flags.testFlag(EventManager::Stopped); }
+protected:
+ virtual inline QString className() const { return "Event"; }
+ virtual inline void debugInfo(QDebug& dbg) const { Q_UNUSED(dbg); }
- inline void setData(const QVariant &data) { _data = data; }
- inline QVariant data() const { return _data; }
+ explicit Event(EventManager::EventType type, QVariantMap& map);
+
+ // must only use primitive types: string, int, double, list, hash
+ // we want to convert this to JSON in the future!
+ virtual void toVariantMap(QVariantMap& map) const;
+
+ inline void setValid(bool valid) { _valid = valid; }
private:
- EventManager::EventType _type;
- EventManager::EventFlags _flags;
- QVariant _data;
-};
+ EventManager::EventType _type;
+ EventManager::EventFlags _flags;
+ QDateTime _timestamp;
+ bool _valid{true};
-/*******/
+ friend COMMON_EXPORT QDebug operator<<(QDebug dbg, Event* e);
+};
-#endif
+COMMON_EXPORT QDebug operator<<(QDebug dbg, Event* e);