1 /*************************************************************************** 2 * Copyright (C) 2005-2020 by the Quassel Project * 3 * devel@quassel-irc.org * 4 * * 5 * This program is free software; you can redistribute it and/or modify * 6 * it under the terms of the GNU General Public License as published by * 7 * the Free Software Foundation; either version 2 of the License, or * 8 * (at your option) version 3. * 9 * * 10 * This program is distributed in the hope that it will be useful, * 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 * GNU General Public License for more details. * 14 * * 15 * You should have received a copy of the GNU General Public License * 16 * along with this program; if not, write to the * 17 * Free Software Foundation, Inc., * 18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * 19 ***************************************************************************/ 20 21 #pragma once 22 23 #include "common-export.h" 24 25 #include "message.h" 26 #include "networkevent.h" 27 28 // this corresponds to CoreSession::RawMessage for now and should contain the information we need to convert events 29 // into messages for the legacy code to work with 30 31 class COMMON_EXPORT MessageEvent : public NetworkEvent 32 { 33 public: 34 explicit MessageEvent(Message::Type msgType, 35 Network* network, 36 QString msg, 37 QString sender = {}, 38 QString target = {}, 39 Message::Flags msgFlags = Message::None, 40 const QDateTime& timestamp = {}); 41 msgType()42 inline Message::Type msgType() const { return _msgType; } setMsgType(Message::Type type)43 inline void setMsgType(Message::Type type) { _msgType = type; } 44 bufferType()45 inline BufferInfo::Type bufferType() const { return _bufferType; } setBufferType(BufferInfo::Type type)46 inline void setBufferType(BufferInfo::Type type) { _bufferType = type; } 47 target()48 inline QString target() const { return _target; } text()49 inline QString text() const { return _text; } sender()50 inline QString sender() const { return _sender; } 51 msgFlags()52 inline Message::Flags msgFlags() const { return _msgFlags; } setMsgFlag(Message::Flag flag)53 inline void setMsgFlag(Message::Flag flag) { _msgFlags |= flag; } setMsgFlags(Message::Flags flags)54 inline void setMsgFlags(Message::Flags flags) { _msgFlags = flags; } 55 56 static Event* create(EventManager::EventType type, QVariantMap& map, Network* network); 57 58 protected: 59 explicit MessageEvent(EventManager::EventType type, QVariantMap& map, Network* network); 60 void toVariantMap(QVariantMap& map) const override; 61 className()62 inline QString className() const override { return "MessageEvent"; } debugInfo(QDebug & dbg)63 inline void debugInfo(QDebug& dbg) const override 64 { 65 NetworkEvent::debugInfo(dbg); 66 dbg.nospace() << ", sender = " << qPrintable(sender()) 67 << ", target = " << qPrintable(target()) 68 << ", text = " << text() 69 << ", msgtype = " << qPrintable(QString::number(msgType(), 16)) 70 << ", buffertype = " << qPrintable(QString::number(bufferType(), 16)) 71 << ", msgflags = " << qPrintable(QString::number(msgFlags(), 16)); 72 } 73 74 private: 75 BufferInfo::Type bufferTypeByTarget(const QString& target) const; 76 77 Message::Type _msgType; 78 BufferInfo::Type _bufferType; 79 QString _text, _sender, _target; 80 Message::Flags _msgFlags; 81 }; 82