diff options
author | Mateusz Piekos <mateuszpiekos@gmail.com> | 2012-08-07 17:52:36 (GMT) |
---|---|---|
committer | Mateusz Piekos <mateuszpiekos@gmail.com> | 2012-08-07 17:52:36 (GMT) |
commit | a7a2f6124fd733926a0effe486cffee03bf9fde0 (patch) | |
tree | d028d9613b72f4fbaca031b33b718eb5ca6666e9 /Swift/Controllers/WhiteboardManager.cpp | |
parent | 4239fd83f1774cbcae15a501a4aa8d9fa4925181 (diff) | |
download | swift-contrib-a7a2f6124fd733926a0effe486cffee03bf9fde0.zip swift-contrib-a7a2f6124fd733926a0effe486cffee03bf9fde0.tar.bz2 |
"Chats" tab shows opened whiteboard sessions
Diffstat (limited to 'Swift/Controllers/WhiteboardManager.cpp')
-rw-r--r-- | Swift/Controllers/WhiteboardManager.cpp | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/Swift/Controllers/WhiteboardManager.cpp b/Swift/Controllers/WhiteboardManager.cpp index 1aa238e..bb73ae3 100644 --- a/Swift/Controllers/WhiteboardManager.cpp +++ b/Swift/Controllers/WhiteboardManager.cpp @@ -13,14 +13,20 @@ #include <Swift/Controllers/UIEvents/AcceptWhiteboardSessionUIEvent.h> #include <Swift/Controllers/UIEvents/CancelWhiteboardSessionUIEvent.h> #include <Swift/Controllers/UIEvents/ShowWhiteboardUIEvent.h> +#include <Swift/Controllers/UIInterfaces/ChatListWindowFactory.h> #include "Swiften/Client/NickResolver.h" #include <Swiften/Client/StanzaChannel.h> +#include <Swiften/Avatars/AvatarManager.h> #include <Swiften/Whiteboard/WhiteboardSessionManager.h> namespace Swift { typedef std::pair<JID, WhiteboardWindow*> JIDWhiteboardWindowPair; - WhiteboardManager::WhiteboardManager(WhiteboardWindowFactory* whiteboardWindowFactory, UIEventStream* uiEventStream, NickResolver* nickResolver, WhiteboardSessionManager* whiteboardSessionManager) : whiteboardWindowFactory_(whiteboardWindowFactory), uiEventStream_(uiEventStream), nickResolver_(nickResolver), whiteboardSessionManager_(whiteboardSessionManager) { + WhiteboardManager::WhiteboardManager(WhiteboardWindowFactory* whiteboardWindowFactory, ChatListWindowFactory* chatListWindowFactory, UIEventStream* uiEventStream, NickResolver* nickResolver, AvatarManager* avatarManager, WhiteboardSessionManager* whiteboardSessionManager) : whiteboardWindowFactory_(whiteboardWindowFactory), uiEventStream_(uiEventStream), nickResolver_(nickResolver), avatarManager_(avatarManager), whiteboardSessionManager_(whiteboardSessionManager) { + chatListWindow_ = chatListWindowFactory->createChatListWindow(uiEventStream_); + chatListWindow_->onWhiteboardActivated.connect(boost::bind(&WhiteboardManager::activateWindow, this, _1)); + whiteboardSessionManager_->onRequestAccepted.connect(boost::bind(&WhiteboardManager::handleSessionAccepted, this, _1)); + whiteboardSessionManager_->onSessionTerminate.connect(boost::bind(&WhiteboardManager::handleSessionTerminated, this, _1)); uiEventConnection_ = uiEventStream_->onUIEvent.connect(boost::bind(&WhiteboardManager::handleUIEvent, this, _1)); } @@ -66,10 +72,7 @@ namespace Swift { } boost::shared_ptr<ShowWhiteboardUIEvent> showWindowEvent = boost::dynamic_pointer_cast<ShowWhiteboardUIEvent>(event); if (showWindowEvent) { - WhiteboardWindow* window = findWhiteboardWindow(showWindowEvent->getContact()); - if (window != NULL) { - window->activateWindow(); - } + activateWindow(showWindowEvent->getContact()); } } @@ -93,4 +96,25 @@ namespace Swift { session->cancel(); } } + + void WhiteboardManager::handleSessionAccepted(const JID& from) { + boost::filesystem::path path; + JID bareJID = from.toBare(); + if (avatarManager_) { + path = avatarManager_->getAvatarPath(bareJID); + } + ChatListWindow::Chat chat(bareJID, nickResolver_->jidToNick(bareJID), "", 0, StatusShow::None, path, false); + chatListWindow_->addWhiteboardSession(chat); + } + + void WhiteboardManager::handleSessionTerminated(const JID& from) { + chatListWindow_->removeWhiteboardSession(from.toBare()); + } + + void WhiteboardManager::activateWindow(const JID& jid) { + WhiteboardWindow* window = findWhiteboardWindow(jid); + if (window != NULL) { + window->activateWindow(); + } + } } |