diff options
author | Kevin Smith <git@kismith.co.uk> | 2010-07-23 14:47:48 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2010-07-23 15:01:33 (GMT) |
commit | 4cc96003c6702168da2faa955e3c771272211e32 (patch) | |
tree | b15355b09676583b2fb468f616f3dd284c52eac9 /Swift/Controllers/Chat/ChatsManager.cpp | |
parent | e00480d2f4326decd23ff7665fcb1af5e752c8ec (diff) | |
download | swift-contrib-4cc96003c6702168da2faa955e3c771272211e32.zip swift-contrib-4cc96003c6702168da2faa955e3c771272211e32.tar.bz2 |
Recognise when leaving a MUC (disconnect or kick).
Also cleans up some outstanding MUC issues.
Resolves: #288
Resolves: #392
Resolves: #279
Resolves: #114
Diffstat (limited to 'Swift/Controllers/Chat/ChatsManager.cpp')
-rw-r--r-- | Swift/Controllers/Chat/ChatsManager.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/Swift/Controllers/Chat/ChatsManager.cpp b/Swift/Controllers/Chat/ChatsManager.cpp index 2ed7051..921cc6f 100644 --- a/Swift/Controllers/Chat/ChatsManager.cpp +++ b/Swift/Controllers/Chat/ChatsManager.cpp @@ -139,12 +139,18 @@ void ChatsManager::setServerDiscoInfo(boost::shared_ptr<DiscoInfo> info) { } } +/** + * This is to be called on connect/disconnect. + */ void ChatsManager::setEnabled(bool enabled) { foreach (JIDChatControllerPair controllerPair, chatControllers_) { controllerPair.second->setEnabled(enabled); } foreach (JIDMUCControllerPair controllerPair, mucControllers_) { controllerPair.second->setEnabled(enabled); + if (enabled) { + controllerPair.second->rejoin(); + } } } @@ -201,9 +207,9 @@ void ChatsManager::rebindControllerJID(const JID& from, const JID& to) { void ChatsManager::handleJoinMUCRequest(const JID &muc, const boost::optional<String>& nickMaybe) { std::map<JID, MUCController*>::iterator it = mucControllers_.find(muc); if (it != mucControllers_.end()) { - //FIXME: What's correct behaviour here? + it->second->rejoin(); } else { - String nick = nickMaybe ? nickMaybe.get() : "Swift user"; + String nick = nickMaybe ? nickMaybe.get() : jid_.getNode(); MUCController* controller = new MUCController(jid_, muc, nick, stanzaChannel_, presenceSender_, iqRouter_, chatWindowFactory_, presenceOracle_, avatarManager_, uiEventStream_, false, timerFactory_, eventController_); mucControllers_[muc] = controller; controller->setAvailableServerFeatures(serverDiscoInfo_); |