diff options
| author | Kevin Smith <git@kismith.co.uk> | 2010-09-12 20:36:48 (GMT) | 
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2010-09-12 20:36:48 (GMT) | 
| commit | 0da93507bea788cf6bd8f327478caddf3ea679e5 (patch) | |
| tree | 1e0e0609eea3a594b78fdad401282354db640fa6 /Swift/Controllers/Chat/ChatsManager.cpp | |
| parent | 536df08ad0646a95ab1352fb9e2b49b00aaaaf2b (diff) | |
| download | swift-contrib-0da93507bea788cf6bd8f327478caddf3ea679e5.zip swift-contrib-0da93507bea788cf6bd8f327478caddf3ea679e5.tar.bz2 | |
Block MUC bookmarks until the server has responded.
Else there could be bookmarks overwritten in an infeasibly unlikely race condition.
Resolves: #340
Diffstat (limited to 'Swift/Controllers/Chat/ChatsManager.cpp')
| -rw-r--r-- | Swift/Controllers/Chat/ChatsManager.cpp | 10 | 
1 files changed, 10 insertions, 0 deletions
| diff --git a/Swift/Controllers/Chat/ChatsManager.cpp b/Swift/Controllers/Chat/ChatsManager.cpp index acc5e1d..e1a53b4 100644 --- a/Swift/Controllers/Chat/ChatsManager.cpp +++ b/Swift/Controllers/Chat/ChatsManager.cpp @@ -39,11 +39,15 @@ ChatsManager::ChatsManager(JID jid, StanzaChannel* stanzaChannel, IQRouter* iqRo  	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));  	presenceOracle_->onPresenceChange.connect(boost::bind(&ChatsManager::handlePresenceChange, this, _1, _2));  	uiEventConnection_ = uiEventStream_->onUIEvent.connect(boost::bind(&ChatsManager::handleUIEvent, this, _1));  	chatListWindow_ = chatListWindowFactory->createWindow(uiEventStream_); +	if (chatListWindow_) { +		chatListWindow_->setBookmarksEnabled(false); +	}  }  ChatsManager::~ChatsManager() { @@ -56,6 +60,12 @@ ChatsManager::~ChatsManager() {  	delete mucBookmarkManager_;  } +void ChatsManager::handleBookmarksReady() { +	if (chatListWindow_) { +		chatListWindow_->setBookmarksEnabled(true); +	} +} +  void ChatsManager::handleMUCBookmarkAdded(const MUCBookmark& bookmark) {  	std::map<JID, MUCController*>::iterator it = mucControllers_.find(bookmark.getRoom());  	if (it == mucControllers_.end() && bookmark.getAutojoin()) { | 
 Swift
 Swift