diff options
| author | Kevin Smith <git@kismith.co.uk> | 2010-12-23 19:36:00 (GMT) | 
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2010-12-23 19:36:00 (GMT) | 
| commit | 506d1621530a40d3e59f50f693587c3c4fd724f5 (patch) | |
| tree | dfdd52d7b17ccfb372226192366bcb26d6bb6c0b /Swift/Controllers/Chat | |
| parent | 135f55589ef230ab009e3b961895a6d3b12cdc87 (diff) | |
| download | swift-contrib-506d1621530a40d3e59f50f693587c3c4fd724f5.zip swift-contrib-506d1621530a40d3e59f50f693587c3c4fd724f5.tar.bz2  | |
Turn the 'Find other users' into seperate add/chat menu items with a wizard.
Diffstat (limited to 'Swift/Controllers/Chat')
| -rw-r--r-- | Swift/Controllers/Chat/UserSearchController.cpp | 18 | ||||
| -rw-r--r-- | Swift/Controllers/Chat/UserSearchController.h | 4 | 
2 files changed, 16 insertions, 6 deletions
diff --git a/Swift/Controllers/Chat/UserSearchController.cpp b/Swift/Controllers/Chat/UserSearchController.cpp index c3e40c8..886aa47 100644 --- a/Swift/Controllers/Chat/UserSearchController.cpp +++ b/Swift/Controllers/Chat/UserSearchController.cpp @@ -14,12 +14,13 @@  #include <Swift/Controllers/DiscoServiceWalker.h>  #include <Swift/Controllers/UIEvents/UIEventStream.h> -#include <Swift/Controllers/UIEvents/RequestUserSearchUIEvent.h> +#include <Swift/Controllers/UIEvents/RequestChatWithUserDialogUIEvent.h> +#include <Swift/Controllers/UIEvents/RequestAddUserDialogUIEvent.h>  #include <Swift/Controllers/UIInterfaces/UserSearchWindow.h>  #include <Swift/Controllers/UIInterfaces/UserSearchWindowFactory.h>  namespace Swift { -UserSearchController::UserSearchController(const JID& jid, UIEventStream* uiEventStream, UserSearchWindowFactory* factory, IQRouter* iqRouter) : jid_(jid) { +UserSearchController::UserSearchController(Type type, const JID& jid, UIEventStream* uiEventStream, UserSearchWindowFactory* factory, IQRouter* iqRouter) : type_(type), jid_(jid) {  	iqRouter_ = iqRouter;  	uiEventStream_ = uiEventStream;  	uiEventConnection_ = uiEventStream_->onUIEvent.connect(boost::bind(&UserSearchController::handleUIEvent, this, _1)); @@ -34,10 +35,17 @@ UserSearchController::~UserSearchController() {  }  void UserSearchController::handleUIEvent(boost::shared_ptr<UIEvent> event) { -	boost::shared_ptr<RequestUserSearchUIEvent> searchEvent = boost::dynamic_pointer_cast<RequestUserSearchUIEvent>(event); -	if (searchEvent) { +	bool handle = false; +	if (type_ == AddContact) { +		boost::shared_ptr<RequestAddUserDialogUIEvent> searchEvent = boost::dynamic_pointer_cast<RequestAddUserDialogUIEvent>(event); +		if (searchEvent) handle = true; +	} else { +		boost::shared_ptr<RequestChatWithUserDialogUIEvent> searchEvent = boost::dynamic_pointer_cast<RequestChatWithUserDialogUIEvent>(event); +		if (searchEvent) handle = true; +	} +	if (handle) {  		if (!window_) { -			window_ = factory_->createUserSearchWindow(uiEventStream_); +			window_ = factory_->createUserSearchWindow(type_ == AddContact ? UserSearchWindow::AddContact : UserSearchWindow::ChatToContact, uiEventStream_);  			window_->onFormRequested.connect(boost::bind(&UserSearchController::handleFormRequested, this, _1));  			window_->onSearchRequested.connect(boost::bind(&UserSearchController::handleSearch, this, _1, _2));  			window_->setSelectedService(JID(jid_.getDomain())); diff --git a/Swift/Controllers/Chat/UserSearchController.h b/Swift/Controllers/Chat/UserSearchController.h index 3ba3352..c54b8d5 100644 --- a/Swift/Controllers/Chat/UserSearchController.h +++ b/Swift/Controllers/Chat/UserSearchController.h @@ -38,7 +38,8 @@ namespace Swift {  	class UserSearchController {  		public: -			UserSearchController(const JID& jid, UIEventStream* uiEventStream, UserSearchWindowFactory* userSearchWindowFactory, IQRouter* iqRouter); +			enum Type {AddContact, StartChat}; +			UserSearchController(Type type, const JID& jid, UIEventStream* uiEventStream, UserSearchWindowFactory* userSearchWindowFactory, IQRouter* iqRouter);  			~UserSearchController();  		private:  			void handleUIEvent(boost::shared_ptr<UIEvent> event); @@ -48,6 +49,7 @@ namespace Swift {  			void handleFormResponse(boost::shared_ptr<SearchPayload> items, ErrorPayload::ref error, const JID& jid);  			void handleSearch(boost::shared_ptr<SearchPayload> fields, const JID& jid);  			void handleSearchResponse(boost::shared_ptr<SearchPayload> results, ErrorPayload::ref error, const JID& jid); +			Type type_;  			UIEventStream* uiEventStream_;  			UserSearchWindow* window_;  			UserSearchWindowFactory* factory_;  | 
 Swift