diff options
Diffstat (limited to 'Swift/Controllers/XMPPEvents/MessageEvent.h')
-rw-r--r-- | Swift/Controllers/XMPPEvents/MessageEvent.h | 77 |
1 files changed, 49 insertions, 28 deletions
diff --git a/Swift/Controllers/XMPPEvents/MessageEvent.h b/Swift/Controllers/XMPPEvents/MessageEvent.h index a9214f5..12f4c48 100644 --- a/Swift/Controllers/XMPPEvents/MessageEvent.h +++ b/Swift/Controllers/XMPPEvents/MessageEvent.h @@ -1,46 +1,67 @@ /* - * Copyright (c) 2010-2012 Kevin Smith - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. + * Copyright (c) 2010-2017 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. */ -#pragma once +#pragma once + #include <cassert> +#include <memory> -#include <boost/shared_ptr.hpp> +#include <Swiften/Elements/Message.h> #include <Swift/Controllers/XMPPEvents/StanzaEvent.h> -#include <Swiften/Elements/Message.h> namespace Swift { - class MessageEvent : public StanzaEvent { - public: - typedef boost::shared_ptr<MessageEvent> ref; + class MessageEvent : public StanzaEvent { + public: + class SystemNotification { + public: + SystemNotification(const std::string& title, const std::string& message) : title(title), message(message) { + } + + public: + std::string title; + std::string message; + }; + + public: + typedef std::shared_ptr<MessageEvent> ref; + + MessageEvent(std::shared_ptr<Message> stanza) : stanza_(stanza), targetsMe_(true) {} + + std::shared_ptr<Message> getStanza() {return stanza_;} - MessageEvent(boost::shared_ptr<Message> stanza) : stanza_(stanza), targetsMe_(true) {} + bool isReadable() { + return getStanza()->isError() || !getStanza()->getBody().get_value_or("").empty(); + } - boost::shared_ptr<Message> getStanza() {return stanza_;} + void addNotification(const std::string& title, const std::string& message) { + systemNotifications_.push_back(SystemNotification(title, message)); + } - bool isReadable() { - return getStanza()->isError() || !getStanza()->getBody().empty(); - } + const std::vector<SystemNotification>& getNotifications() const { + return systemNotifications_; + } - void read() { - assert (isReadable()); - conclude(); - } + void read() { + assert (isReadable()); + conclude(); + } - void setTargetsMe(bool targetsMe) { - targetsMe_ = targetsMe; - } + void setTargetsMe(bool targetsMe) { + targetsMe_ = targetsMe; + } - bool targetsMe() const { - return targetsMe_; - } + bool targetsMe() const { + return targetsMe_; + } - private: - boost::shared_ptr<Message> stanza_; - bool targetsMe_; - }; + private: + std::shared_ptr<Message> stanza_; + std::vector<SystemNotification> systemNotifications_; + bool targetsMe_; + }; } |