diff options
Diffstat (limited to 'Swift/Controllers/Chat')
| -rw-r--r-- | Swift/Controllers/Chat/ChatController.cpp | 4 | ||||
| -rw-r--r-- | Swift/Controllers/Chat/ChatController.h | 2 | ||||
| -rw-r--r-- | Swift/Controllers/Chat/ChatControllerBase.cpp | 4 | ||||
| -rw-r--r-- | Swift/Controllers/Chat/ChatControllerBase.h | 3 | ||||
| -rw-r--r-- | Swift/Controllers/Chat/ChatsManager.cpp | 7 | ||||
| -rw-r--r-- | Swift/Controllers/Chat/ChatsManager.h | 6 | ||||
| -rw-r--r-- | Swift/Controllers/Chat/MUCController.cpp | 23 | ||||
| -rw-r--r-- | Swift/Controllers/Chat/MUCController.h | 6 | ||||
| -rw-r--r-- | Swift/Controllers/Chat/UnitTest/ChatsManagerTest.cpp | 39 | 
9 files changed, 36 insertions, 58 deletions
diff --git a/Swift/Controllers/Chat/ChatController.cpp b/Swift/Controllers/Chat/ChatController.cpp index 6056fc5..2e1b1c8 100644 --- a/Swift/Controllers/Chat/ChatController.cpp +++ b/Swift/Controllers/Chat/ChatController.cpp @@ -21,8 +21,8 @@ namespace Swift {  /**   * The controller does not gain ownership of the stanzaChannel, nor the factory.   */ -ChatController::ChatController(const JID& self, StanzaChannel* stanzaChannel, IQRouter* iqRouter, ChatWindowFactory* chatWindowFactory, const JID &contact, NickResolver* nickResolver, PresenceOracle* presenceOracle, AvatarManager* avatarManager, bool isInMUC, bool useDelayForLatency) -	: ChatControllerBase(self, stanzaChannel, iqRouter, chatWindowFactory, contact, presenceOracle, avatarManager, useDelayForLatency) { +ChatController::ChatController(const JID& self, StanzaChannel* stanzaChannel, IQRouter* iqRouter, ChatWindowFactory* chatWindowFactory, const JID &contact, NickResolver* nickResolver, PresenceOracle* presenceOracle, AvatarManager* avatarManager, bool isInMUC, bool useDelayForLatency, UIEventStream* eventStream) +	: ChatControllerBase(self, stanzaChannel, iqRouter, chatWindowFactory, contact, presenceOracle, avatarManager, useDelayForLatency, eventStream) {  	isInMUC_ = isInMUC;  	chatStateNotifier_ = new ChatStateNotifier();  	chatStateMessageSender_ = new ChatStateMessageSender(chatStateNotifier_, stanzaChannel, contact); diff --git a/Swift/Controllers/Chat/ChatController.h b/Swift/Controllers/Chat/ChatController.h index 3821a6e..7d2072d 100644 --- a/Swift/Controllers/Chat/ChatController.h +++ b/Swift/Controllers/Chat/ChatController.h @@ -17,7 +17,7 @@ namespace Swift {  	class NickResolver;  	class ChatController : public ChatControllerBase {  		public: -			ChatController(const JID& self, StanzaChannel* stanzaChannel, IQRouter* iqRouter, ChatWindowFactory* chatWindowFactory, const JID &contact, NickResolver* nickResolver, PresenceOracle* presenceOracle, AvatarManager* avatarManager, bool isInMUC, bool useDelayForLatency); +			ChatController(const JID& self, StanzaChannel* stanzaChannel, IQRouter* iqRouter, ChatWindowFactory* chatWindowFactory, const JID &contact, NickResolver* nickResolver, PresenceOracle* presenceOracle, AvatarManager* avatarManager, bool isInMUC, bool useDelayForLatency, UIEventStream* eventStream);  			virtual void setToJID(const JID& jid);  		private: diff --git a/Swift/Controllers/Chat/ChatControllerBase.cpp b/Swift/Controllers/Chat/ChatControllerBase.cpp index f3e6bbe..5f27efb 100644 --- a/Swift/Controllers/Chat/ChatControllerBase.cpp +++ b/Swift/Controllers/Chat/ChatControllerBase.cpp @@ -22,8 +22,8 @@  namespace Swift { -ChatControllerBase::ChatControllerBase(const JID& self, StanzaChannel* stanzaChannel, IQRouter* iqRouter, ChatWindowFactory* chatWindowFactory, const JID &toJID, PresenceOracle* presenceOracle, AvatarManager* avatarManager, bool useDelayForLatency) : selfJID_(self), stanzaChannel_(stanzaChannel), iqRouter_(iqRouter), chatWindowFactory_(chatWindowFactory), toJID_(toJID), labelsEnabled_(false), presenceOracle_(presenceOracle), avatarManager_(avatarManager), useDelayForLatency_(useDelayForLatency)  { -	chatWindow_ = chatWindowFactory_->createChatWindow(toJID); +ChatControllerBase::ChatControllerBase(const JID& self, StanzaChannel* stanzaChannel, IQRouter* iqRouter, ChatWindowFactory* chatWindowFactory, const JID &toJID, PresenceOracle* presenceOracle, AvatarManager* avatarManager, bool useDelayForLatency, UIEventStream* eventStream) : selfJID_(self), stanzaChannel_(stanzaChannel), iqRouter_(iqRouter), chatWindowFactory_(chatWindowFactory), toJID_(toJID), labelsEnabled_(false), presenceOracle_(presenceOracle), avatarManager_(avatarManager), useDelayForLatency_(useDelayForLatency)  { +	chatWindow_ = chatWindowFactory_->createChatWindow(toJID, eventStream);  	chatWindow_->onAllMessagesRead.connect(boost::bind(&ChatControllerBase::handleAllMessagesRead, this));  	chatWindow_->onSendMessageRequest.connect(boost::bind(&ChatControllerBase::handleSendMessageRequest, this, _1));  	setEnabled(stanzaChannel->isAvailable() && iqRouter->isAvailable()); diff --git a/Swift/Controllers/Chat/ChatControllerBase.h b/Swift/Controllers/Chat/ChatControllerBase.h index 8317da8..f7cf087 100644 --- a/Swift/Controllers/Chat/ChatControllerBase.h +++ b/Swift/Controllers/Chat/ChatControllerBase.h @@ -28,6 +28,7 @@ namespace Swift {  	class ChatWindow;  	class ChatWindowFactory;  	class AvatarManager; +	class UIEventStream;  	class ChatControllerBase  {  		public: @@ -40,7 +41,7 @@ namespace Swift {  			void setEnabled(bool enabled);  			virtual void setToJID(const JID& jid) {toJID_ = jid;};  		protected: -			ChatControllerBase(const JID& self, StanzaChannel* stanzaChannel, IQRouter* iqRouter, ChatWindowFactory* chatWindowFactory, const JID &toJID, PresenceOracle* presenceOracle, AvatarManager* avatarManager, bool useDelayForLatency); +			ChatControllerBase(const JID& self, StanzaChannel* stanzaChannel, IQRouter* iqRouter, ChatWindowFactory* chatWindowFactory, const JID &toJID, PresenceOracle* presenceOracle, AvatarManager* avatarManager, bool useDelayForLatency, UIEventStream* eventStream);  			virtual void postSendMessage(const String&) {};  			virtual String senderDisplayNameFromMessage(const JID& from) = 0; diff --git a/Swift/Controllers/Chat/ChatsManager.cpp b/Swift/Controllers/Chat/ChatsManager.cpp index d0b4716..312af76 100644 --- a/Swift/Controllers/Chat/ChatsManager.cpp +++ b/Swift/Controllers/Chat/ChatsManager.cpp @@ -28,12 +28,11 @@ namespace Swift {  typedef std::pair<JID, ChatController*> JIDChatControllerPair;  typedef std::pair<JID, MUCController*> JIDMUCControllerPair; -ChatsManager::ChatsManager(JID jid, StanzaChannel* stanzaChannel, IQRouter* iqRouter, EventController* eventController, ChatWindowFactory* chatWindowFactory, TreeWidgetFactory* treeWidgetFactory, NickResolver* nickResolver, PresenceOracle* presenceOracle, boost::shared_ptr<DiscoInfo> serverDiscoInfo, PresenceSender* presenceSender, UIEventStream* uiEventStream, ChatListWindowFactory* chatListWindowFactory, bool useDelayForLatency) : jid_(jid), useDelayForLatency_(useDelayForLatency) { +ChatsManager::ChatsManager(JID jid, StanzaChannel* stanzaChannel, IQRouter* iqRouter, EventController* eventController, ChatWindowFactory* chatWindowFactory, NickResolver* nickResolver, PresenceOracle* presenceOracle, boost::shared_ptr<DiscoInfo> serverDiscoInfo, PresenceSender* presenceSender, UIEventStream* uiEventStream, ChatListWindowFactory* chatListWindowFactory, bool useDelayForLatency) : jid_(jid), useDelayForLatency_(useDelayForLatency) {  	eventController_ = eventController;  	stanzaChannel_ = stanzaChannel;  	iqRouter_ = iqRouter;  	chatWindowFactory_ = chatWindowFactory; -	treeWidgetFactory_ = treeWidgetFactory;  	nickResolver_ = nickResolver;  	presenceOracle_ = presenceOracle;  	avatarManager_ = NULL; @@ -185,7 +184,7 @@ ChatController* ChatsManager::getChatControllerOrFindAnother(const JID &contact)  }  ChatController* ChatsManager::createNewChatController(const JID& contact) { -	ChatController* controller = new ChatController(jid_, stanzaChannel_, iqRouter_, chatWindowFactory_, contact, nickResolver_, presenceOracle_, avatarManager_, isMUC(contact.toBare()), useDelayForLatency_); +	ChatController* controller = new ChatController(jid_, stanzaChannel_, iqRouter_, chatWindowFactory_, contact, nickResolver_, presenceOracle_, avatarManager_, isMUC(contact.toBare()), useDelayForLatency_, uiEventStream_);  	chatControllers_[contact] = controller;  	controller->setAvailableServerFeatures(serverDiscoInfo_);  	return controller; @@ -221,7 +220,7 @@ void ChatsManager::handleJoinMUCRequest(const JID &muc, const boost::optional<St  		//FIXME: What's correct behaviour here?  	} else {  		String nick = nickMaybe ? nickMaybe.get() : "Swift user"; -		MUCController* controller = new MUCController(jid_, muc, nick, stanzaChannel_, presenceSender_, iqRouter_, chatWindowFactory_, treeWidgetFactory_, presenceOracle_, avatarManager_, uiEventStream_, false); +		MUCController* controller = new MUCController(jid_, muc, nick, stanzaChannel_, presenceSender_, iqRouter_, chatWindowFactory_, presenceOracle_, avatarManager_, uiEventStream_, false);  		mucControllers_[muc] = controller;  		controller->setAvailableServerFeatures(serverDiscoInfo_);  		controller->onUserLeft.connect(boost::bind(&ChatsManager::handleUserLeftMUC, this, controller)); diff --git a/Swift/Controllers/Chat/ChatsManager.h b/Swift/Controllers/Chat/ChatsManager.h index d45d81d..59d4ec3 100644 --- a/Swift/Controllers/Chat/ChatsManager.h +++ b/Swift/Controllers/Chat/ChatsManager.h @@ -24,7 +24,6 @@ namespace Swift {  	class ChatController;  	class MUCController;  	class ChatWindowFactory; -	class TreeWidgetFactory;  	class NickResolver;  	class PresenceOracle;  	class AvatarManager; @@ -37,14 +36,14 @@ namespace Swift {  	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, UIEventStream* uiEventStream, ChatListWindowFactory* chatListWindowFactory, bool useDelayForLatency); +			ChatsManager(JID jid, StanzaChannel* stanzaChannel, IQRouter* iqRouter, EventController* eventController, ChatWindowFactory* chatWindowFactory, NickResolver* nickResolver, PresenceOracle* presenceOracle, boost::shared_ptr<DiscoInfo> serverDiscoInfo, PresenceSender* presenceSender, UIEventStream* uiEventStream, ChatListWindowFactory* chatListWindowFactory, bool useDelayForLatency);  			~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);  		private: +			void handleChatRequest(const String& contact);  			void handleJoinMUCRequest(const JID& muc, const boost::optional<String>& nick);  			void rebindControllerJID(const JID& from, const JID& to);  			void handlePresenceChange(boost::shared_ptr<Presence> newPresence, boost::shared_ptr<Presence> lastPresence); @@ -65,7 +64,6 @@ namespace Swift {  			StanzaChannel* stanzaChannel_;  			IQRouter* iqRouter_;;  			ChatWindowFactory* chatWindowFactory_; -			TreeWidgetFactory* treeWidgetFactory_;  			NickResolver* nickResolver_;  			PresenceOracle* presenceOracle_;  			AvatarManager* avatarManager_; diff --git a/Swift/Controllers/Chat/MUCController.cpp b/Swift/Controllers/Chat/MUCController.cpp index 737ad82..7e9a9ea 100644 --- a/Swift/Controllers/Chat/MUCController.cpp +++ b/Swift/Controllers/Chat/MUCController.cpp @@ -17,10 +17,8 @@  #include "Swiften/MUC/MUC.h"  #include "Swiften/Client/StanzaChannel.h"  #include "Swiften/Roster/Roster.h" -#include "Swiften/Roster/OpenChatRosterAction.h"  #include "Swiften/Roster/SetAvatar.h"  #include "Swiften/Roster/SetPresence.h" -#include "Swiften/Roster/TreeWidgetFactory.h"  namespace Swift { @@ -35,19 +33,17 @@ MUCController::MUCController (  		PresenceSender* presenceSender,  		IQRouter* iqRouter,   		ChatWindowFactory* chatWindowFactory,  -		TreeWidgetFactory *treeWidgetFactory,  		PresenceOracle* presenceOracle,  		AvatarManager* avatarManager,  		UIEventStream* uiEventStream,  		bool useDelayForLatency) : -	ChatControllerBase(self, stanzaChannel, iqRouter, chatWindowFactory, muc, presenceOracle, avatarManager, useDelayForLatency), +	ChatControllerBase(self, stanzaChannel, iqRouter, chatWindowFactory, muc, presenceOracle, avatarManager, useDelayForLatency, uiEventStream),  			muc_(new MUC(stanzaChannel, presenceSender, muc)),  -			nick_(nick),  -			treeWidgetFactory_(treeWidgetFactory) {  +			nick_(nick) {   	parting_ = false;  	events_ = uiEventStream; -	roster_ = new Roster(chatWindow_->getTreeWidget(), treeWidgetFactory_); -	roster_->onUserAction.connect(boost::bind(&MUCController::handleUserAction, this, _1)); +	roster_ = new Roster(); +	chatWindow_->setRosterModel(roster_);  	chatWindow_->onClosed.connect(boost::bind(&MUCController::handleWindowClosed, this));  	muc_->joinAs(nick);  	muc_->onOccupantJoined.connect(boost::bind(&MUCController::handleOccupantJoined, this, _1)); @@ -61,19 +57,10 @@ MUCController::MUCController (  MUCController::~MUCController() {  	delete muc_; +	chatWindow_->setRosterModel(NULL);  	delete roster_;  } -void MUCController::handleUserAction(boost::shared_ptr<UserRosterAction> action) { -	boost::shared_ptr<OpenChatRosterAction> chatAction = boost::dynamic_pointer_cast<OpenChatRosterAction>(action); -	if (chatAction.get() != NULL) { -		ContactRosterItem *contactItem = dynamic_cast<ContactRosterItem*>(chatAction->getRosterItem()); -		assert(contactItem); -		events_->send(boost::shared_ptr<RequestChatUIEvent>(new RequestChatUIEvent(contactItem->getJID()))); -		return; -	} -} -  void MUCController::handleAvatarChanged(const JID& jid, const String&) {  	if (parting_) {  		return; diff --git a/Swift/Controllers/Chat/MUCController.h b/Swift/Controllers/Chat/MUCController.h index 2252357..8e6e01b 100644 --- a/Swift/Controllers/Chat/MUCController.h +++ b/Swift/Controllers/Chat/MUCController.h @@ -15,7 +15,6 @@  #include "Swift/Controllers/Chat/ChatControllerBase.h"  #include "Swiften/Elements/Message.h"  #include "Swiften/Elements/DiscoInfo.h" -#include "Swiften/Roster/UserRosterAction.h"  #include "Swiften/JID/JID.h"  #include "Swiften/MUC/MUC.h"  #include "Swiften/MUC/MUCOccupant.h" @@ -26,13 +25,12 @@ namespace Swift {  	class ChatWindow;  	class ChatWindowFactory;  	class Roster; -	class TreeWidgetFactory;  	class AvatarManager;  	class UIEventStream;  	class MUCController : public ChatControllerBase {  		public: -			MUCController(const JID& self, const JID &muc, const String &nick, StanzaChannel* stanzaChannel, PresenceSender* presenceSender, IQRouter* iqRouter, ChatWindowFactory* chatWindowFactory, TreeWidgetFactory *treeWidgetFactory, PresenceOracle* presenceOracle, AvatarManager* avatarManager, UIEventStream* events, bool useDelayForLatency); +			MUCController(const JID& self, const JID &muc, const String &nick, StanzaChannel* stanzaChannel, PresenceSender* presenceSender, IQRouter* iqRouter, ChatWindowFactory* chatWindowFactory, PresenceOracle* presenceOracle, AvatarManager* avatarManager, UIEventStream* events, bool useDelayForLatency);  			~MUCController();  			boost::signal<void ()> onUserLeft; @@ -47,13 +45,11 @@ namespace Swift {  			void handleOccupantJoined(const MUCOccupant& occupant);  			void handleOccupantLeft(const MUCOccupant& occupant, MUC::LeavingType type, const String& reason);  			void handleOccupantPresenceChange(boost::shared_ptr<Presence> presence); -			void handleUserAction(boost::shared_ptr<UserRosterAction> action);  		private:  			MUC* muc_;  			UIEventStream* events_;  			String nick_; -			TreeWidgetFactory* treeWidgetFactory_;  			Roster* roster_;  			bool parting_;  			boost::bsignals::scoped_connection avatarChangedConnection_; diff --git a/Swift/Controllers/Chat/UnitTest/ChatsManagerTest.cpp b/Swift/Controllers/Chat/UnitTest/ChatsManagerTest.cpp index 5caedab..f671fb1 100644 --- a/Swift/Controllers/Chat/UnitTest/ChatsManagerTest.cpp +++ b/Swift/Controllers/Chat/UnitTest/ChatsManagerTest.cpp @@ -13,7 +13,6 @@  #include "Swift/Controllers/UIInterfaces/ChatWindow.h"  #include "Swift/Controllers/UIInterfaces/ChatWindowFactory.h"  #include "Swift/Controllers/UIInterfaces/ChatListWindowFactory.h" -#include "Swiften/Roster/TreeWidgetFactory.h"  #include "Swiften/Client/Client.h"  #include "Swift/Controllers/Chat/ChatController.h"  #include "Swift/Controllers/EventController.h" @@ -26,6 +25,7 @@  #include "Swiften/Client/DummyStanzaChannel.h"  #include "Swiften/Queries/DummyIQChannel.h"  #include "Swiften/Presence/PresenceOracle.h" +#include "Swift/Controllers/UIEvents/RequestChatUIEvent.h"  #include "Swift/Controllers/UIEvents/UIEventStream.h" @@ -54,7 +54,6 @@ public:  		iqRouter_ = new IQRouter(iqChannel_);  		eventController_ = new EventController();  		chatWindowFactory_ = mocks_->InterfaceMock<ChatWindowFactory>(); -		treeWidgetFactory_ = NULL;  		xmppRoster_ = boost::shared_ptr<XMPPRoster>(new XMPPRoster());  		nickResolver_ = new NickResolver(xmppRoster_);  		presenceOracle_ = new PresenceOracle(stanzaChannel_); @@ -63,7 +62,7 @@ public:  		uiEventStream_ = new UIEventStream();  		chatListWindowFactory_ = mocks_->InterfaceMock<ChatListWindowFactory>();  		mocks_->ExpectCall(chatListWindowFactory_, ChatListWindowFactory::createWindow).With(uiEventStream_).Return(NULL); -		manager_ = new ChatsManager(jid_, stanzaChannel_, iqRouter_, eventController_, chatWindowFactory_, treeWidgetFactory_, nickResolver_, presenceOracle_, serverDiscoInfo_, presenceSender_, uiEventStream_, chatListWindowFactory_, true); +		manager_ = new ChatsManager(jid_, stanzaChannel_, iqRouter_, eventController_, chatWindowFactory_, nickResolver_, presenceOracle_, serverDiscoInfo_, presenceSender_, uiEventStream_, chatListWindowFactory_, true);  		avatarManager_ = new MockAvatarManager();  		manager_->setAvatarManager(avatarManager_);  	}; @@ -74,7 +73,6 @@ public:  		delete presenceSender_;  		delete presenceOracle_;  		delete nickResolver_; -		delete treeWidgetFactory_;  		delete stanzaChannel_;  		delete eventController_;  		delete iqChannel_; @@ -87,7 +85,7 @@ public:  		JID messageJID("testling@test.com/resource1");  		MockChatWindow* window = new MockChatWindow();//mocks_->InterfaceMock<ChatWindow>(); -		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(messageJID).Return(window); +		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(messageJID, uiEventStream_).Return(window);  		boost::shared_ptr<Message> message(new Message());  		message->setFrom(messageJID); @@ -101,7 +99,7 @@ public:  		JID messageJID1("testling@test.com/resource1");  		MockChatWindow* window1 = new MockChatWindow();//mocks_->InterfaceMock<ChatWindow>(); -		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(messageJID1).Return(window1); +		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(messageJID1, uiEventStream_).Return(window1);  		boost::shared_ptr<Message> message1(new Message());  		message1->setFrom(messageJID1); @@ -113,7 +111,7 @@ public:  		JID messageJID2("testling@test.com/resource2");  		MockChatWindow* window2 = new MockChatWindow();//mocks_->InterfaceMock<ChatWindow>(); -		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(messageJID2).Return(window2); +		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(messageJID2, uiEventStream_).Return(window2);  		boost::shared_ptr<Message> message2(new Message());  		message2->setFrom(messageJID2); @@ -127,9 +125,9 @@ public:  		String messageJIDString("testling@test.com");  		ChatWindow* window = new MockChatWindow();//mocks_->InterfaceMock<ChatWindow>(); -		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(JID(messageJIDString)).Return(window); - -		manager_->handleChatRequest(messageJIDString); +		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(JID(messageJIDString), uiEventStream_).Return(window); +		 +		uiEventStream_->send(boost::shared_ptr<UIEvent>(new RequestChatUIEvent(JID(messageJIDString))));  	} @@ -138,8 +136,8 @@ public:  		String fullJIDString("testling@test.com/resource1");  		MockChatWindow* window = new MockChatWindow();//mocks_->InterfaceMock<ChatWindow>(); -		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(JID(bareJIDString)).Return(window); -		manager_->handleChatRequest(bareJIDString); +		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(JID(bareJIDString), uiEventStream_).Return(window); +		uiEventStream_->send(boost::shared_ptr<UIEvent>(new RequestChatUIEvent(JID(bareJIDString))));  		boost::shared_ptr<Message> message(new Message());  		message->setFrom(JID(fullJIDString)); @@ -152,14 +150,14 @@ public:  	void testSecondWindow() {  		String messageJIDString1("testling1@test.com");  		ChatWindow* window1 = new MockChatWindow();//mocks_->InterfaceMock<ChatWindow>(); -		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(JID(messageJIDString1)).Return(window1); -		manager_->handleChatRequest(messageJIDString1); +		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(JID(messageJIDString1), uiEventStream_).Return(window1); +		uiEventStream_->send(boost::shared_ptr<UIEvent>(new RequestChatUIEvent(JID(messageJIDString1))));  		String messageJIDString2("testling2@test.com");  		ChatWindow* window2 = new MockChatWindow();//mocks_->InterfaceMock<ChatWindow>(); -		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(JID(messageJIDString2)).Return(window2); +		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(JID(messageJIDString2), uiEventStream_).Return(window2); -		manager_->handleChatRequest(messageJIDString2); +		uiEventStream_->send(boost::shared_ptr<UIEvent>(new RequestChatUIEvent(JID(messageJIDString2))));  	}  	/** Complete cycle. @@ -174,8 +172,8 @@ public:  		String fullJIDString2("testling@test.com/resource2");  		MockChatWindow* window = new MockChatWindow();//mocks_->InterfaceMock<ChatWindow>(); -		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(JID(bareJIDString)).Return(window); -		manager_->handleChatRequest(bareJIDString); +		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(JID(bareJIDString), uiEventStream_).Return(window); +		uiEventStream_->send(boost::shared_ptr<UIEvent>(new RequestChatUIEvent(JID(bareJIDString))));  		boost::shared_ptr<Message> message1(new Message());  		message1->setFrom(JID(fullJIDString1)); @@ -212,7 +210,7 @@ public:  		JID messageJID1("testling@test.com/resource1");  		MockChatWindow* window1 = new MockChatWindow();//mocks_->InterfaceMock<ChatWindow>(); -		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(messageJID1).Return(window1); +		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(messageJID1, uiEventStream_).Return(window1);  		boost::shared_ptr<Message> message1(new Message());  		message1->setFrom(messageJID1); @@ -222,7 +220,7 @@ public:  		JID messageJID2("testling@test.com/resource2");  		MockChatWindow* window2 = new MockChatWindow();//mocks_->InterfaceMock<ChatWindow>(); -		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(messageJID2).Return(window2); +		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(messageJID2, uiEventStream_).Return(window2);  		boost::shared_ptr<Message> message2(new Message());  		message2->setFrom(messageJID2); @@ -268,7 +266,6 @@ private:  	IQRouter* iqRouter_;  	EventController* eventController_;  	ChatWindowFactory* chatWindowFactory_; -	TreeWidgetFactory* treeWidgetFactory_;  	NickResolver* nickResolver_;  	PresenceOracle* presenceOracle_;  	AvatarManager* avatarManager_;  | 
 Swift