X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjabber_whiteboard%2Fsession-manager.cpp;h=a04ab05f00e39fa1f424141140e37e0e72260670;hb=96d7f74ab56c7ce6cf9df0108ce925f59bcf0035;hp=7ca4902121fc08fe3d8cd3ac0710d3dd8856a09c;hpb=4b5f0fbb80d1f807a63d2e28ab9e2ff076b35f6b;p=inkscape.git diff --git a/src/jabber_whiteboard/session-manager.cpp b/src/jabber_whiteboard/session-manager.cpp index 7ca490212..a04ab05f0 100644 --- a/src/jabber_whiteboard/session-manager.cpp +++ b/src/jabber_whiteboard/session-manager.cpp @@ -85,62 +85,6 @@ SessionManager::~SessionManager() getClient().disconnect(); } -void -SessionManager::processXmppEvent(const Pedro::XmppEvent &event) -{ - int type = event.getType(); - - switch (type) { - case Pedro::XmppEvent::EVENT_STATUS: - { - break; - } - case Pedro::XmppEvent::EVENT_ERROR: - { - break; - } - case Pedro::XmppEvent::EVENT_CONNECTED: - { - break; - } - case Pedro::XmppEvent::EVENT_DISCONNECTED: - { - break; - } - case Pedro::XmppEvent::EVENT_MUC_MESSAGE: - case Pedro::XmppEvent::EVENT_MESSAGE: - { - g_warning("## SM message:%s\n", event.getFrom().c_str()); - Pedro::Element *root = event.getDOM(); - - if (root && root->getTagAttribute("wb", "xmlns") == Vars::INKBOARD_XMLNS) - processWhiteboardEvent(event); - - break; - } - case Pedro::XmppEvent::EVENT_PRESENCE: - { - break; - } - case Pedro::XmppEvent::EVENT_MUC_JOIN: - { - break; - } - case Pedro::XmppEvent::EVENT_MUC_LEAVE: - { - break; - } - case Pedro::XmppEvent::EVENT_MUC_PRESENCE: - { - break; - } - default: - { - break; - } - } -} - /** * Initiates a shared session with a user or conference room. * @@ -177,6 +121,7 @@ SessionManager::initialiseSession(Glib::ustring const& to, State::SessionType ty inkdoc->setSessionId(sessionId); + makeInkboardDesktop(doc); addSession(WhiteboardRecord(sessionId, inkdoc)); inkdoc->startSessionNegotiation(); @@ -217,6 +162,60 @@ SessionManager::getInkboardSession(Glib::ustring const& sessionId) return NULL; } +void +SessionManager::processXmppEvent(const Pedro::XmppEvent &event) +{ + int type = event.getType(); + + switch (type) { + case Pedro::XmppEvent::EVENT_STATUS: + { + break; + } + case Pedro::XmppEvent::EVENT_ERROR: + { + break; + } + case Pedro::XmppEvent::EVENT_CONNECTED: + { + break; + } + case Pedro::XmppEvent::EVENT_DISCONNECTED: + { + break; + } + case Pedro::XmppEvent::EVENT_MUC_MESSAGE: + case Pedro::XmppEvent::EVENT_MESSAGE: + { + Pedro::Element *root = event.getDOM(); + + if (root && root->getTagAttribute("wb", "xmlns") == Vars::INKBOARD_XMLNS) + processWhiteboardEvent(event); + + break; + } + case Pedro::XmppEvent::EVENT_PRESENCE: + { + break; + } + case Pedro::XmppEvent::EVENT_MUC_JOIN: + { + break; + } + case Pedro::XmppEvent::EVENT_MUC_LEAVE: + { + break; + } + case Pedro::XmppEvent::EVENT_MUC_PRESENCE: + { + break; + } + default: + { + break; + } + } +} /** * Handles all incoming messages from pedro within a valid namespace, CONNECT_REQUEST messages @@ -235,6 +234,7 @@ SessionManager::processWhiteboardEvent(Pedro::XmppEvent const& event) } Pedro::DOMString session = root->getTagAttribute("wb", "session"); + Pedro::DOMString type = root->getTagAttribute("message", "type"); Pedro::DOMString domwrapper = root->getFirstChild()->getFirstChild()->getFirstChild()->getName(); if (session.empty()) { @@ -242,14 +242,17 @@ SessionManager::processWhiteboardEvent(Pedro::XmppEvent const& event) return; } - if(root->exists(Message::CONNECT_REQUEST)) + if(root->exists(Message::CONNECT_REQUEST) && type == State::WHITEBOARD_PEER) + { handleIncomingInvitation(Invitation(event.getFrom(),session)); - else + }else { - Message::Wrapper wrapper = domwrapper.c_str(); + Message::Wrapper wrapper = static_cast< Message::Wrapper >(domwrapper); InkboardDocument* doc = getInkboardSession(session); - doc->processInkboardEvent(wrapper, event.getData()); + + if(doc != NULL) + doc->recieve(wrapper, root->getFirstChild()); } } @@ -326,12 +329,12 @@ SessionManager::checkInvitationQueue() switch (reply) { case Dialog::ACCEPT_INVITATION:{ - inkdoc->sendProtocol(from, Message::PROTOCOL,Message::ACCEPT_INVITATION); + inkdoc->send(from, Message::PROTOCOL,Message::ACCEPT_INVITATION); makeInkboardDesktop(doc); break; } case Dialog::DECLINE_INVITATION: default: { - inkdoc->sendProtocol(from, Message::PROTOCOL,Message::DECLINE_INVITATION); + inkdoc->send(from, Message::PROTOCOL,Message::DECLINE_INVITATION); terminateSession(sessionId); break; } } @@ -355,11 +358,11 @@ makeInkboardDocument(int code, gchar const* rootname, State::SessionType type, G InkboardDocument* rdoc = new InkboardDocument(g_quark_from_static_string("xml"), type, to); rdoc->setAttribute("version", "1.0"); rdoc->setAttribute("standalone", "no"); - XML::Node *comment = sp_repr_new_comment(" Created with Inkscape (http://www.inkscape.org/) "); + XML::Node *comment = rdoc->createComment(" Created with Inkscape (http://www.inkscape.org/) "); rdoc->appendChild(comment); GC::release(comment); - XML::Node* root = sp_repr_new(rootname); + XML::Node* root = rdoc->createElement(rootname); rdoc->appendChild(root); GC::release(root); @@ -395,6 +398,7 @@ makeInkboardDesktop(SPDocument* doc) sp_create_window(dtw, TRUE); dt = static_cast(dtw->view); sp_namedview_window_from_document(dt); + sp_namedview_update_layers_from_document(dt); } return dt;