void LM::Presentity::edit_presentity_form_submitted (bool submitted, Ekiga::Form& result) { if (!submitted) return; const std::string name = result.text ("name"); const std::set<std::string> groups = result.editable_set ("groups"); LmMessage* message = lm_message_new_with_sub_type (NULL, LM_MESSAGE_TYPE_IQ, LM_MESSAGE_SUB_TYPE_SET); LmMessageNode* query = lm_message_node_add_child (lm_message_get_node (message), "query", NULL); lm_message_node_set_attribute (query, "xmlns", "jabber:iq:roster"); LmMessageNode* node = lm_message_node_add_child (query, "item", NULL); { gchar* escaped = g_markup_escape_text (name.c_str (), -1); lm_message_node_set_attributes (node, "jid", get_jid ().c_str (), "name", escaped, NULL); g_free (escaped); } for (std::set<std::string>::const_iterator iter = groups.begin (); iter != groups.end (); ++iter) { gchar* escaped = g_markup_escape_text (iter->c_str (), -1); lm_message_node_add_child (node, "group", escaped); g_free (escaped); } lm_connection_send_with_reply (connection, message, build_message_handler (boost::bind(&LM::Presentity::handle_edit_reply, this, _1, _2)), NULL); lm_message_unref (message); }
void LM::HeapRoster::handle_up (LmConnection* connection_, const std::string name_) { connection = connection_; name = name_; { // populate the roster LmMessage* roster_request = lm_message_new_with_sub_type (NULL, LM_MESSAGE_TYPE_IQ, LM_MESSAGE_SUB_TYPE_GET); LmMessageNode* node = lm_message_node_add_child (lm_message_get_node (roster_request), "query", NULL); lm_message_node_set_attributes (node, "xmlns", "jabber:iq:roster", NULL); lm_connection_send_with_reply (connection, roster_request, build_message_handler (boost::bind (&LM::HeapRoster::handle_initial_roster_reply, this, _1, _2)), NULL); lm_message_unref (roster_request); } { // initial presence push LmMessage* presence_push = lm_message_new (NULL, LM_MESSAGE_TYPE_PRESENCE); lm_connection_send (connection, presence_push, NULL); lm_message_unref (presence_push); } on_personal_details_updated (); // fake, but if we start as dnd, we want it known updated (); }