/* * 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 #include namespace Swift { class WhiteboardSessionManager; class NickResolver; class WhiteboardManager { public: WhiteboardManager(WhiteboardWindowFactory* whiteboardWindowFactory, UIEventStream* uiEventStream, NickResolver* nickResolver, WhiteboardSessionManager* whiteboardSessionManager); ~WhiteboardManager(); WhiteboardWindow* createNewWhiteboardWindow(const JID& contact, WhiteboardSession::ref session); public: boost::signal< void (const JID&, bool senderIsSelf)> onSessionRequest; boost::signal< void (const JID&)> onSessionTerminate; boost::signal< void (const JID&)> onRequestAccepted; boost::signal< void (const JID&)> onRequestRejected; private: void handleUIEvent(boost::shared_ptr event); void handleSessionTerminate(const JID& contact); void handleSessionCancel(const JID& contact); void handleSessionAccept(const JID& contact); void handleRequestReject(const JID& contact); void handleIncomingSession(IncomingWhiteboardSession::ref session); void acceptSession(const JID& from); void requestSession(const JID& contact); void cancelSession(const JID& from); WhiteboardWindow* findWhiteboardWindow(const JID& contact); private: std::map whiteboardWindows_; WhiteboardWindowFactory* whiteboardWindowFactory_; UIEventStream* uiEventStream_; NickResolver* nickResolver_; boost::bsignals::scoped_connection uiEventConnection_; WhiteboardSessionManager* whiteboardSessionManager_; }; }