diff options
author | Kevin Smith <git@kismith.co.uk> | 2009-12-26 22:52:16 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2009-12-26 22:52:16 (GMT) |
commit | c3bda61b09597a7944fbc382366bcdf998540e82 (patch) | |
tree | a710af80c7e494a60a2676d3595ba4ab3a5ccf79 /Swift/Controllers/ChatsManager.h | |
parent | 21532c3557a3dc43f5f0376bf6554f6895c71a03 (diff) | |
download | swift-c3bda61b09597a7944fbc382366bcdf998540e82.zip swift-c3bda61b09597a7944fbc382366bcdf998540e82.tar.bz2 |
More thoroughly test the chat routing.
This adds in the behaviour for unbinding chats when the resource goes offline (only if there isn't already an unbound chatwindow).
Resolves: #155
Diffstat (limited to 'Swift/Controllers/ChatsManager.h')
-rw-r--r-- | Swift/Controllers/ChatsManager.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/Swift/Controllers/ChatsManager.h b/Swift/Controllers/ChatsManager.h index e897e59..260bd1d 100644 --- a/Swift/Controllers/ChatsManager.h +++ b/Swift/Controllers/ChatsManager.h @@ -1,54 +1,56 @@ #pragma once #include <map> #include <boost/shared_ptr.hpp> #include "Swiften/Base/String.h" #include "Swiften/Elements/DiscoInfo.h" #include "Swiften/Elements/Message.h" +#include "Swiften/Elements/Presence.h" #include "Swiften/JID/JID.h" #include "Swiften/MUC/MUCRegistry.h" namespace Swift { class EventController; class ChatController; class MUCController; class ChatWindowFactory; class TreeWidgetFactory; class NickResolver; class PresenceOracle; class AvatarManager; class StanzaChannel; class IQRouter; class PresenceSender; class ChatsManager : public MUCRegistry { public: ChatsManager(JID jid, StanzaChannel* stanzaChannel, IQRouter* iqRouter, EventController* eventController, ChatWindowFactory* chatWindowFactory, TreeWidgetFactory* treeWidgetFactory, NickResolver* nickResolver, PresenceOracle* presenceOracle, boost::shared_ptr<DiscoInfo> serverDiscoInfo, PresenceSender* presenceSender); ~ChatsManager(); void setAvatarManager(AvatarManager* avatarManager); void setEnabled(bool enabled); void setServerDiscoInfo(boost::shared_ptr<DiscoInfo> info); void handleIncomingMessage(boost::shared_ptr<Message> message); void handleChatRequest(const String& contact); void handleJoinMUCRequest(const JID& muc, const String& nick); private: - void handleChatControllerJIDChanged(const JID& from, const JID& to); + void rebindControllerJID(const JID& from, const JID& to); + void handlePresenceChange(boost::shared_ptr<Presence> oldPresence, boost::shared_ptr<Presence> newPresence); ChatController* getChatController(const JID &contact); virtual bool isMUC(const JID& muc) const; std::map<JID, MUCController*> mucControllers_; std::map<JID, ChatController*> chatControllers_; EventController* eventController_; JID jid_; StanzaChannel* stanzaChannel_; IQRouter* iqRouter_;; ChatWindowFactory* chatWindowFactory_; TreeWidgetFactory* treeWidgetFactory_; NickResolver* nickResolver_; PresenceOracle* presenceOracle_; AvatarManager* avatarManager_; PresenceSender* presenceSender_; boost::shared_ptr<DiscoInfo> serverDiscoInfo_; }; } |