diff options
Diffstat (limited to 'Swift/Controllers')
| -rw-r--r-- | Swift/Controllers/Chat/ChatsManager.cpp | 2 | ||||
| -rw-r--r-- | Swift/Controllers/Chat/MUCController.cpp | 14 | ||||
| -rw-r--r-- | Swift/Controllers/Chat/MUCController.h | 4 | ||||
| -rw-r--r-- | Swift/Controllers/Chat/UnitTest/MUCControllerTest.cpp | 2 | ||||
| -rw-r--r-- | Swift/Controllers/UIInterfaces/InviteToChatWindow.h | 4 | 
5 files changed, 21 insertions, 5 deletions
| diff --git a/Swift/Controllers/Chat/ChatsManager.cpp b/Swift/Controllers/Chat/ChatsManager.cpp index da96603..4fc3752 100644 --- a/Swift/Controllers/Chat/ChatsManager.cpp +++ b/Swift/Controllers/Chat/ChatsManager.cpp @@ -585,7 +585,7 @@ void ChatsManager::handleJoinMUCRequest(const JID &mucJID, const boost::optional  		if (createAsReservedIfNew) {  			muc->setCreateAsReservedIfNew();  		} -		MUCController* controller = new MUCController(jid_, muc, password, nick, stanzaChannel_, iqRouter_, chatWindowFactory_, presenceOracle_, avatarManager_, uiEventStream_, false, timerFactory_, eventController_, entityCapsProvider_); +		MUCController* controller = new MUCController(jid_, muc, password, nick, stanzaChannel_, iqRouter_, chatWindowFactory_, presenceOracle_, avatarManager_, uiEventStream_, false, timerFactory_, eventController_, entityCapsProvider_, roster_);  		mucControllers_[mucJID] = controller;  		controller->setAvailableServerFeatures(serverDiscoInfo_);  		controller->onUserLeft.connect(boost::bind(&ChatsManager::handleUserLeftMUC, this, controller)); diff --git a/Swift/Controllers/Chat/MUCController.cpp b/Swift/Controllers/Chat/MUCController.cpp index 3d04b34..94fd142 100644 --- a/Swift/Controllers/Chat/MUCController.cpp +++ b/Swift/Controllers/Chat/MUCController.cpp @@ -34,6 +34,7 @@  #include <Swift/Controllers/Roster/SetAvatar.h>  #include <Swift/Controllers/Roster/SetPresence.h>  #include <Swiften/Disco/EntityCapsProvider.h> +#include <Swiften/Roster/XMPPRoster.h>  #define MUC_JOIN_WARNING_TIMEOUT_MILLISECONDS 60000 @@ -57,7 +58,8 @@ MUCController::MUCController (  		bool useDelayForLatency,  		TimerFactory* timerFactory,  		EventController* eventController, -		EntityCapsProvider* entityCapsProvider) : +		EntityCapsProvider* entityCapsProvider, +		XMPPRoster* roster) :  			ChatControllerBase(self, stanzaChannel, iqRouter, chatWindowFactory, muc->getJID(), presenceOracle, avatarManager, useDelayForLatency, uiEventStream, eventController, timerFactory, entityCapsProvider), muc_(muc), nick_(nick), desiredNick_(nick), password_(password) {  	parting_ = true;  	joined_ = false; @@ -66,6 +68,7 @@ MUCController::MUCController (  	doneGettingHistory_ = false;  	events_ = uiEventStream;  	inviteWindow_ = NULL; +	xmppRoster_ = roster;  	roster_ = new Roster(false, true);  	completer_ = new TabComplete(); @@ -727,6 +730,15 @@ void MUCController::handleInvitePersonToThisMUCRequest() {  		inviteWindow_->onCompleted.connect(boost::bind(&MUCController::handleInviteToMUCWindowCompleted, this));  		inviteWindow_->onDismissed.connect(boost::bind(&MUCController::handleInviteToMUCWindowDismissed, this));  	} +	std::vector<std::pair<JID, std::string> > autoCompletes; +	foreach (XMPPRosterItem item, xmppRoster_->getItems()) { +		std::pair<JID, std::string> jidName; +		jidName.first = item.getJID(); +		jidName.second = item.getName(); +		autoCompletes.push_back(jidName); +		std::cerr << "MUCController adding " << item.getJID().toString() << std::endl; +	} +	inviteWindow_->setAutoCompletions(autoCompletes);  }  void MUCController::handleInviteToMUCWindowDismissed() { diff --git a/Swift/Controllers/Chat/MUCController.h b/Swift/Controllers/Chat/MUCController.h index 8b43dcf..6bf056b 100644 --- a/Swift/Controllers/Chat/MUCController.h +++ b/Swift/Controllers/Chat/MUCController.h @@ -32,6 +32,7 @@ namespace Swift {  	class TimerFactory;  	class TabComplete;  	class InviteToChatWindow; +	class XMPPRoster;  	enum JoinPart {Join, Part, JoinThenPart, PartThenJoin}; @@ -43,7 +44,7 @@ namespace Swift {  	class MUCController : public ChatControllerBase {  		public: -			MUCController(const JID& self, MUC::ref muc, const boost::optional<std::string>& password, const std::string &nick, StanzaChannel* stanzaChannel, IQRouter* iqRouter, ChatWindowFactory* chatWindowFactory, PresenceOracle* presenceOracle, AvatarManager* avatarManager, UIEventStream* events, bool useDelayForLatency, TimerFactory* timerFactory, EventController* eventController, EntityCapsProvider* entityCapsProvider); +			MUCController(const JID& self, MUC::ref muc, const boost::optional<std::string>& password, const std::string &nick, StanzaChannel* stanzaChannel, IQRouter* iqRouter, ChatWindowFactory* chatWindowFactory, PresenceOracle* presenceOracle, AvatarManager* avatarManager, UIEventStream* events, bool useDelayForLatency, TimerFactory* timerFactory, EventController* eventController, EntityCapsProvider* entityCapsProvider, XMPPRoster* roster);  			~MUCController();  			boost::signal<void ()> onUserLeft;  			boost::signal<void ()> onUserJoined; @@ -124,6 +125,7 @@ namespace Swift {  			boost::posix_time::ptime lastActivity_;  			boost::optional<std::string> password_;  			InviteToChatWindow* inviteWindow_; +			XMPPRoster* xmppRoster_;  	};  } diff --git a/Swift/Controllers/Chat/UnitTest/MUCControllerTest.cpp b/Swift/Controllers/Chat/UnitTest/MUCControllerTest.cpp index d4fbcfd..04fc2f7 100644 --- a/Swift/Controllers/Chat/UnitTest/MUCControllerTest.cpp +++ b/Swift/Controllers/Chat/UnitTest/MUCControllerTest.cpp @@ -63,7 +63,7 @@ public:  		entityCapsProvider_ = new DummyEntityCapsProvider();  		muc_ = boost::make_shared<MUC>(stanzaChannel_, iqRouter_, directedPresenceSender_, mucJID_, mucRegistry_);  		mocks_->ExpectCall(chatWindowFactory_, ChatWindowFactory::createChatWindow).With(muc_->getJID(), uiEventStream_).Return(window_); -		controller_ = new MUCController (self_, muc_, boost::optional<std::string>(), nick_, stanzaChannel_, iqRouter_, chatWindowFactory_, presenceOracle_, avatarManager_, uiEventStream_, false, timerFactory, eventController_, entityCapsProvider_); +		controller_ = new MUCController (self_, muc_, boost::optional<std::string>(), nick_, stanzaChannel_, iqRouter_, chatWindowFactory_, presenceOracle_, avatarManager_, uiEventStream_, false, timerFactory, eventController_, entityCapsProvider_, NULL);  	};  	void tearDown() { diff --git a/Swift/Controllers/UIInterfaces/InviteToChatWindow.h b/Swift/Controllers/UIInterfaces/InviteToChatWindow.h index f34a485..4070e01 100644 --- a/Swift/Controllers/UIInterfaces/InviteToChatWindow.h +++ b/Swift/Controllers/UIInterfaces/InviteToChatWindow.h @@ -7,7 +7,7 @@  #pragma once  #include <vector> - +#include <utility>  #include <string>  #include <Swiften/Base/boost_bsignals.h>  #include <Swiften/JID/JID.h> @@ -17,6 +17,8 @@ namespace Swift {  		public:  			virtual ~InviteToChatWindow() {}; +			virtual void setAutoCompletions(std::vector<std::pair<JID, std::string> > completions) = 0; +  			virtual std::string getReason() const = 0;  			virtual std::vector<JID> getJIDs() const = 0; | 
 Swift
 Swift