qTox  Version: nightly | Commit: bc751c8e1cac455f9690654fcfe0f560d2d7dfdd
friendmessagedispatcher.h
Go to the documentation of this file.
1 /*
2  Copyright © 2019 by The qTox Project Contributors
3 
4  This file is part of qTox, a Qt-based graphical interface for Tox.
5 
6  qTox is libre software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  qTox is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with qTox. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #pragma once
21 
23 #include "src/model/friend.h"
25 #include "src/model/message.h"
27 
28 #include <QObject>
29 #include <QString>
30 
31 #include <cstdint>
32 
34 {
35  Q_OBJECT
36 public:
39  ICoreExtPacketAllocator& coreExt);
40 
41  std::pair<DispatchedMessageId, DispatchedMessageId> sendMessage(bool isAction,
42  const QString& content) override;
43 
44  std::pair<DispatchedMessageId, DispatchedMessageId> sendExtendedMessage(const QString& content, ExtensionSet extensions) override;
45  void onMessageReceived(bool isAction, const QString& content);
46  void onReceiptReceived(ReceiptNum receipt);
47  void onExtMessageReceived(const QString& message);
48  void onExtReceiptReceived(uint64_t receiptId);
49  void clearOutgoingMessages();
50 private slots:
51  void onFriendOnlineOfflineChanged(const ToxPk& key, bool isOnline);
52 
53 private:
58 
62 
66 };
FriendMessageDispatcher::clearOutgoingMessages
void clearOutgoingMessages()
Clears all currently outgoing messages.
Definition: friendmessagedispatcher.cpp:123
FriendMessageDispatcher::sendProcessedMessage
void sendProcessedMessage(Message const &msg, OfflineMsgEngine::CompletionFn fn)
Definition: friendmessagedispatcher.cpp:129
FriendMessageDispatcher::onReceiptReceived
void onReceiptReceived(ReceiptNum receipt)
Handles received receipt from toxcore.
Definition: friendmessagedispatcher.cpp:90
friend.h
FriendMessageDispatcher::offlineMsgEngine
OfflineMsgEngine offlineMsgEngine
Definition: friendmessagedispatcher.h:64
FriendMessageDispatcher::onExtMessageReceived
void onExtMessageReceived(const QString &message)
Definition: friendmessagedispatcher.cpp:95
OfflineMsgEngine
Definition: offlinemsgengine.h:37
ICoreFriendMessageSender
Definition: icorefriendmessagesender.h:27
FriendMessageDispatcher::sendExtendedProcessedMessage
void sendExtendedProcessedMessage(Message const &msg, OfflineMsgEngine::CompletionFn fn)
Definition: friendmessagedispatcher.cpp:145
FriendMessageDispatcher::sendExtendedMessage
std::pair< DispatchedMessageId, DispatchedMessageId > sendExtendedMessage(const QString &content, ExtensionSet extensions) override
Definition: friendmessagedispatcher.cpp:59
FriendMessageDispatcher::f
Friend & f
Definition: friendmessagedispatcher.h:59
IMessageDispatcher
Definition: imessagedispatcher.h:34
FriendMessageDispatcher::FriendMessageDispatcher
FriendMessageDispatcher(Friend &f, MessageProcessor processor, ICoreFriendMessageSender &messageSender, ICoreExtPacketAllocator &coreExt)
Definition: friendmessagedispatcher.cpp:24
FriendMessageDispatcher::processor
MessageProcessor processor
Definition: friendmessagedispatcher.h:65
message.h
offlinemsgengine.h
FriendMessageDispatcher::getCompletionFn
OfflineMsgEngine::CompletionFn getCompletionFn(DispatchedMessageId messageId)
Definition: friendmessagedispatcher.cpp:190
FriendMessageDispatcher::onMessageReceived
void onMessageReceived(bool isAction, const QString &content)
Handles received message from toxcore.
Definition: friendmessagedispatcher.cpp:81
HistMessageContentType::message
@ message
ToxPk
This class represents a Tox Public Key, which is a part of Tox ID.
Definition: toxpk.h:26
Friend
Definition: friend.h:31
DispatchedMessageId
NamedType< size_t, struct SentMessageIdTag, Orderable, Incrementable > DispatchedMessageId
Definition: imessagedispatcher.h:31
FriendMessageDispatcher::messageSender
ICoreFriendMessageSender & messageSender
Definition: friendmessagedispatcher.h:63
FriendMessageDispatcher::sendMessage
std::pair< DispatchedMessageId, DispatchedMessageId > sendMessage(bool isAction, const QString &content) override
Definition: friendmessagedispatcher.cpp:39
ExtensionSet
std::bitset< ExtensionType::max > ExtensionSet
Definition: extension.h:32
icorefriendmessagesender.h
OfflineMsgEngine::CompletionFn
std::function< void(bool)> CompletionFn
Definition: offlinemsgengine.h:41
FriendMessageDispatcher::sendCoreProcessedMessage
void sendCoreProcessedMessage(Message const &msg, OfflineMsgEngine::CompletionFn fn)
Definition: friendmessagedispatcher.cpp:172
FriendMessageDispatcher::onFriendOnlineOfflineChanged
void onFriendOnlineOfflineChanged(const ToxPk &key, bool isOnline)
Handles status change for friend.
Definition: friendmessagedispatcher.cpp:110
ReceiptNum
NamedType< uint32_t, struct ReceiptNumTag, Orderable > ReceiptNum
Definition: receiptnum.h:27
FriendMessageDispatcher
Definition: friendmessagedispatcher.h:33
MessageProcessor
Definition: message.h:62
FriendMessageDispatcher::nextMessageId
DispatchedMessageId nextMessageId
Definition: friendmessagedispatcher.h:61
imessagedispatcher.h
Status::isOnline
bool isOnline(Status status)
Definition: status.cpp:83
FriendMessageDispatcher::onExtReceiptReceived
void onExtReceiptReceived(uint64_t receiptId)
Definition: friendmessagedispatcher.cpp:101
ICoreExtPacketAllocator
Definition: icoreextpacket.h:63
FriendMessageDispatcher::coreExtPacketAllocator
ICoreExtPacketAllocator & coreExtPacketAllocator
Definition: friendmessagedispatcher.h:60
Message
Definition: message.h:52