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_; |