/* * Copyright (c) 2012 Mateusz Piękos * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #pragma once #include #include #include #include #include #include #include namespace Swift { class WhiteboardSessionManager; class ChatListWindowFactory; class ChatListWindow; class NickResolver; class AvatarManager; class WhiteboardManager { public: WhiteboardManager(WhiteboardWindowFactory* whiteboardWindowFactory, ChatListWindowFactory* chatListWindowFactory, UIEventStream* uiEventStream, NickResolver* nickResolver, AvatarManager* avatarManager, WhiteboardSessionManager* whiteboardSessionManager); ~WhiteboardManager(); WhiteboardWindow* createNewWhiteboardWindow(const JID& contact, WhiteboardSession::ref session); private: void handleUIEvent(boost::shared_ptr event); void handleSessionAccepted(const JID& from); void handleSessionTerminated(const JID& from); void acceptSession(const JID& from); void cancelSession(const JID& from); WhiteboardWindow* findWhiteboardWindow(const JID& contact); void activateWindow(const JID& jid); private: std::map whiteboardWindows_; WhiteboardWindowFactory* whiteboardWindowFactory_; ChatListWindow* chatListWindow_; UIEventStream* uiEventStream_; NickResolver* nickResolver_; AvatarManager* avatarManager_; boost::bsignals::scoped_connection uiEventConnection_; WhiteboardSessionManager* whiteboardSessionManager_; }; }