diff options
| author | Kevin Smith <git@kismith.co.uk> | 2010-11-15 13:15:15 (GMT) | 
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2010-11-15 13:15:15 (GMT) | 
| commit | 0c6c79df29c58ff8790941ea40d40f84fae773c6 (patch) | |
| tree | 0e7c99f5a8ad8ec286e89f1a69630d6de468ec30 /Swift/Controllers/Chat/ChatsManager.cpp | |
| parent | 004677623739ef53ae9f565d3ffd4d2b02a65d5a (diff) | |
| download | swift-contrib-0c6c79df29c58ff8790941ea40d40f84fae773c6.zip swift-contrib-0c6c79df29c58ff8790941ea40d40f84fae773c6.tar.bz2 | |
Clean MUC joins slightly.
In an attempt to catch errors, this doesn't
Resolves: #691
but does add an assert that may help.
It also fixes an error with created rooms not receiving updates presences.
Release-Notes: Newly-created rooms will now receive your presence updates, consistent with existing rooms.
Diffstat (limited to 'Swift/Controllers/Chat/ChatsManager.cpp')
| -rw-r--r-- | Swift/Controllers/Chat/ChatsManager.cpp | 32 | 
1 files changed, 24 insertions, 8 deletions
| diff --git a/Swift/Controllers/Chat/ChatsManager.cpp b/Swift/Controllers/Chat/ChatsManager.cpp index e1a9adc..2fc5a43 100644 --- a/Swift/Controllers/Chat/ChatsManager.cpp +++ b/Swift/Controllers/Chat/ChatsManager.cpp @@ -39,16 +39,11 @@ ChatsManager::ChatsManager(JID jid, StanzaChannel* stanzaChannel, IQRouter* iqRo  	serverDiscoInfo_ = boost::shared_ptr<DiscoInfo>(new DiscoInfo());  	presenceSender_ = presenceSender;  	uiEventStream_ = uiEventStream; -	mucBookmarkManager_ = new MUCBookmarkManager(iqRouter); -	mucBookmarkManager_->onBookmarksReady.connect(boost::bind(&ChatsManager::handleBookmarksReady, this)); -	mucBookmarkManager_->onBookmarkAdded.connect(boost::bind(&ChatsManager::handleMUCBookmarkAdded, this, _1)); -	mucBookmarkManager_->onBookmarkRemoved.connect(boost::bind(&ChatsManager::handleMUCBookmarkRemoved, this, _1)); +	mucBookmarkManager_ = NULL;  	presenceOracle_->onPresenceChange.connect(boost::bind(&ChatsManager::handlePresenceChange, this, _1));  	uiEventConnection_ = uiEventStream_->onUIEvent.connect(boost::bind(&ChatsManager::handleUIEvent, this, _1));  	chatListWindow_ = chatListWindowFactory->createWindow(uiEventStream_); -	if (chatListWindow_) { -		chatListWindow_->setBookmarksEnabled(false); -	} +	setupBookmarks();  }  ChatsManager::~ChatsManager() { @@ -61,6 +56,20 @@ ChatsManager::~ChatsManager() {  	delete mucBookmarkManager_;  } +void ChatsManager::setupBookmarks() { +	if (!mucBookmarkManager_) { +		mucBookmarkManager_ = new MUCBookmarkManager(iqRouter_); +		mucBookmarkManager_->onBookmarksReady.connect(boost::bind(&ChatsManager::handleBookmarksReady, this)); +		mucBookmarkManager_->onBookmarkAdded.connect(boost::bind(&ChatsManager::handleMUCBookmarkAdded, this, _1)); +		mucBookmarkManager_->onBookmarkRemoved.connect(boost::bind(&ChatsManager::handleMUCBookmarkRemoved, this, _1)); + +		if (chatListWindow_) { +			chatListWindow_->setBookmarksEnabled(false); +			chatListWindow_->clear(); +		} +	} +} +  void ChatsManager::handleBookmarksReady() {  	if (chatListWindow_) {  		chatListWindow_->setBookmarksEnabled(true); @@ -161,7 +170,14 @@ void ChatsManager::setOnline(bool enabled) {  			controllerPair.second->rejoin();  		}  	} -	chatListWindow_->setBookmarksEnabled(enabled); +	if (!enabled) { +		delete mucBookmarkManager_; +		mucBookmarkManager_ = NULL; +		chatListWindow_->setBookmarksEnabled(false); +	} else { +		setupBookmarks(); +	} +  }  void ChatsManager::handleChatRequest(const String &contact) { | 
 Swift
 Swift