bool LM::Presentity::populate_menu (Ekiga::MenuBuilder& builder) { const gchar* subscription = lm_message_node_get_attribute (item, "subscription"); const gchar* ask = lm_message_node_get_attribute (item, "ask"); if ( !has_chat) { builder.add_action ("im-message-new", _("Start chat"), boost::ref (chat_requested)); } else { builder.add_action ("im-message-new", _("Continue chat"), boost::ref (chat_requested)); } builder.add_separator (); builder.add_action ("edit", _("_Edit"), boost::bind (&LM::Presentity::edit_presentity, this)); if (g_strcmp0 (subscription, "none") == 0) { builder.add_action ("ask", _("Ask him/her to see his/her status"), boost::bind (&LM::Presentity::ask_to, this)); } if (g_strcmp0 (subscription, "from") == 0) { builder.add_action ("stop", _("Forbid him/her to see my status"), boost::bind (&LM::Presentity::revoke_from, this)); if (ask == NULL) builder.add_action ("ask", _("Ask him/her to see his/her status"), boost::bind (&LM::Presentity::ask_to, this)); else builder.add_ghost ("ask", _("Ask him/her to see his/her status (pending)")); } if (g_strcmp0 (subscription, "to") == 0) { builder.add_action ("stop", _("Stop getting his/her status"), boost::bind (&LM::Presentity::stop_to, this)); } if (g_strcmp0 (subscription, "both") == 0) { builder.add_action ("stop", _("Forbid him/her to see my status"), boost::bind (&LM::Presentity::revoke_from, this)); builder.add_action ("stop", _("Stop getting his/her status"), boost::bind (&LM::Presentity::stop_to, this)); } builder.add_action ("remove", _("_Remove"), boost::bind (&LM::Presentity::remove_presentity, this)); return true; }
bool OPENLDAP::Contact::populate_menu (Ekiga::MenuBuilder &builder) { boost::shared_ptr<Ekiga::ContactCore> contact_core = core.get<Ekiga::ContactCore> ("contact-core"); /* FIXME: add here the specific actions we want to allow * (before or after the uri-specific actions) */ Ekiga::TemporaryMenuBuilder tmp_builder; bool result = false; for (std::map<std::string, std::string>::const_iterator iter = uris.begin (); iter != uris.end (); iter++) { if (contact_core->populate_contact_menu (ContactPtr(this, null_deleter ()), iter->second, tmp_builder)) { builder.add_ghost ("", iter->first); tmp_builder.populate_menu (builder); result = true; } } return result; }
bool populate_menu (Ekiga::MenuBuilder& builder) { builder.add_ghost (icon, label); return false; }