Пример #1
0
void
pn_update_status (MsnSession *session)
{
    MsnCmdProc *cmdproc;
    struct pn_contact *user;
    const gchar *state_text;
    int client_id;
    int caps;

    g_return_if_fail (session);

    if (!session->logged_in)
        return;

    user = msn_session_get_contact (session);
    cmdproc = session->notification->cmdproc;
    state_text = util_type_to_str (util_status_from_session (session));

    caps = PN_CLIENT_CAP_BASE;
#if defined(PECAN_CVR)
    caps |= PN_CLIENT_CAP_INK_GIF;
#if defined(PECAN_LIBSIREN)
    caps |= PN_CLIENT_CAP_VOICE_CLIP;
#endif
#if defined(PECAN_LIBMSPACK)
    caps |= PN_CLIENT_CAP_WINKS;
#endif
#endif

    client_id = caps | (PN_CLIENT_VER_7_5 << 24);

#if defined(PECAN_CVR)
    {
        struct pn_msnobj *obj;

        obj = pn_contact_get_object (user);

        if (obj)
        {
            gchar *msnobj_str;

            msnobj_str = pn_msnobj_to_string (obj);

            msn_cmdproc_send (cmdproc, "CHG", "%s %d %s", state_text,
                              client_id, purple_url_encode (msnobj_str));

            g_free (msnobj_str);
        }
        else
        {
            msn_cmdproc_send (cmdproc, "CHG", "%s %d", state_text,
                              client_id);
        }
    }
#else
    msn_cmdproc_send (cmdproc, "CHG", "%s %d", state_text,
                      client_id);
#endif /* defined(PECAN_CVR) */
}
Пример #2
0
void
pn_update_status (MsnSession *session)
{
    MsnCmdProc *cmdproc;
    struct pn_contact *user;
    const gchar *state_text;

    g_return_if_fail (session);

    if (!session->logged_in)
        return;

    user = msn_session_get_contact (session);
    cmdproc = session->notification->cmdproc;
    state_text = util_type_to_str (util_status_from_session (session));

#if defined(PECAN_CVR)
    {
        struct pn_msnobj *obj;

        obj = pn_contact_get_object (user);

        if (obj)
        {
            gchar *msnobj_str;

            msnobj_str = pn_msnobj_to_string (obj);

            msn_cmdproc_send (cmdproc, "CHG", "%s %ld %s", state_text,
                              session->client_id, purple_url_encode (msnobj_str));

            g_free (msnobj_str);
        }
        else
        {
            msn_cmdproc_send (cmdproc, "CHG", "%s %ld", state_text,
                              session->client_id);
        }
    }
#else
    msn_cmdproc_send (cmdproc, "CHG", "%s %ld", state_text,
                      session->client_id);
#endif /* defined(PECAN_CVR) */

    pn_send_login_uux (session);
}