diff options
Diffstat (limited to 'Swiften/Chat/ChatStateNotifier.h')
-rw-r--r-- | Swiften/Chat/ChatStateNotifier.h | 26 |
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_; |