Exemplo n.º 1
0
static void
conversation_created_cb (PurpleConversation *conv, gpointer data)
{
    gchar *str;
    const gchar *tmp_user, *friendly_name;
    MsnSession *session = data;
    struct pn_contact *contact;

    tmp_user = purple_conversation_get_name (conv);
    contact = pn_contactlist_find_contact (session->contactlist, tmp_user);
    if (contact)
        friendly_name = pn_contact_get_friendly_name (contact);
    else
        friendly_name = tmp_user;
    if (!friendly_name)
        friendly_name = tmp_user;

    if (contact && !(contact->list_op & (1 << MSN_LIST_RL)))
    {
        str = g_strdup_printf (_("You are not in %s's contact list."), friendly_name);

        purple_conversation_write (conv, NULL, str, PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NOTIFY, time (NULL));

        g_free (str);
    }
}
Exemplo n.º 2
0
static void
conversation_created_cb (PurpleConversation *conv, gpointer data)
{
    const gchar *tmp_user, *friendly_name;
    MsnSession *session = data;
    struct pn_contact *contact;

    tmp_user = purple_conversation_get_name (conv);
    contact = pn_contactlist_find_contact (session->contactlist, tmp_user);
    if (contact)
        friendly_name = pn_contact_get_friendly_name (contact);
    else
        friendly_name = tmp_user;
    if (!friendly_name)
        friendly_name = tmp_user;
}
Exemplo n.º 3
0
/* stupid libpurple's local contact list, we don't need you! */
static void
sync_users (MsnSession *session)
{
    PurpleAccount *account;
    GSList *buddies;
    GList *to_remove = NULL;

    account = msn_session_get_user_data(session);

    for (buddies = purple_find_buddies(account, NULL); buddies;
         buddies = g_slist_delete_link(buddies, buddies))
    {
        PurpleBuddy *buddy = buddies->data;
        const gchar *buddy_name = purple_buddy_get_name(buddy);
        const gchar *group_name = purple_group_get_name(purple_buddy_get_group(buddy));
        struct pn_contact *contact;
        gboolean found = FALSE;

        contact = pn_contactlist_find_contact(session->contactlist, buddy_name);

        if (contact && contact->list_op & MSN_LIST_FL_OP) {
            struct pn_group *group;

            group = pn_contactlist_find_group_with_name(session->contactlist,
                                                        group_name);

            found = pn_contact_is_in_group(contact, group);
        }

        if (!found) {
            pn_warning("synchronization issue; buddy %s not found in group %s: removing",
                       purple_buddy_get_name(buddy), group_name);
            to_remove = g_list_prepend(to_remove, buddy);
        }
    }
    if (to_remove) {
        g_list_foreach(to_remove, (GFunc) purple_blist_remove_buddy, NULL);
        g_list_free(to_remove);
    }
}