summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Chat/ChatStateNotifier.h')
-rw-r--r--Swiften/Chat/ChatStateNotifier.h26
1 files changed, 21 insertions, 5 deletions
diff --git a/Swiften/Chat/ChatStateNotifier.h b/Swiften/Chat/ChatStateNotifier.h
index 3889b9c..1185ed0 100644
--- a/Swiften/Chat/ChatStateNotifier.h
+++ b/Swiften/Chat/ChatStateNotifier.h
@@ -9,23 +9,39 @@
#include "Swiften/Base/boost_bsignals.h"
#include <boost/shared_ptr.hpp>
+#include "Swiften/Elements/Message.h"
#include "Swiften/Elements/ChatState.h"
+#include "Swiften/JID/JID.h"
namespace Swift {
+ class StanzaChannel;
+ class EntityCapsProvider;
+
class ChatStateNotifier {
public:
- ChatStateNotifier();
- void setContactHas85Caps(bool hasCaps);
+ ChatStateNotifier(StanzaChannel* stanzaChannel, const JID& contact, EntityCapsProvider* entityCapsManager);
+ ~ChatStateNotifier();
+
+ void setContact(const JID& contact);
+
+ void addChatStateRequest(Message::ref message);
+
void setUserIsTyping();
- void setContactIsOnline(bool online);
void userSentMessage();
void userCancelledNewMessage();
+
void receivedMessageFromContact(bool hasActiveElement);
+ void setContactIsOnline(bool online);
+
+ private:
bool contactShouldReceiveStates();
- void contactJIDHasChanged();
+ void changeState(ChatState::ChatStateType type);
+ void handleCapsChanged(const JID& contact);
- boost::signal<void (ChatState::ChatStateType)> onChatStateChanged;
private:
+ StanzaChannel* stanzaChannel_;
+ EntityCapsProvider* entityCapsManager_;
+ JID contact_;
bool contactHas85Caps_;
bool contactHasSentActive_;
bool userIsTyping_;