Mercurial > pidgin.yaz
diff libpurple/protocols/oscar/oscar.c @ 20300:96a6a9eef15b
applied changes from 2ab75e32c52e94c674d0b5a396d224da7e9d509e
through 3829f989342d787500e9abe363c89909db102f4b
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Fri, 19 Oct 2007 16:27:50 +0000 |
parents | d00e53fd9e88 |
children | 233c423d40d3 |
line wrap: on
line diff
--- a/libpurple/protocols/oscar/oscar.c Fri Oct 19 16:22:50 2007 +0000 +++ b/libpurple/protocols/oscar/oscar.c Fri Oct 19 16:27:50 2007 +0000 @@ -2184,12 +2184,14 @@ { PurpleConnection *gc; OscarData *od; + PurpleAccount *account; PurpleBuddy *buddy; PurpleGroup *group; gc = data->gc; od = gc->proto_data; - buddy = purple_find_buddy(purple_connection_get_account(gc), data->name); + account = purple_connection_get_account(gc); + buddy = purple_find_buddy(account, data->name); if (buddy != NULL) group = purple_buddy_get_group(buddy); else @@ -2201,7 +2203,19 @@ buddy->name, group->name); aim_ssi_sendauthrequest(od, data->name, msg ? msg : _("Please authorize me so I can add you to my buddy list.")); if (!aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY)) + { aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, TRUE); + + /* Mobile users should always be online */ + if (buddy->name[0] == '+') { + purple_prpl_got_user_status(account, + purple_buddy_get_name(buddy), + OSCAR_STATUS_ID_AVAILABLE, NULL); + purple_prpl_got_user_status(account, + purple_buddy_get_name(buddy), + OSCAR_STATUS_ID_MOBILE, NULL); + } + } } } @@ -4621,12 +4635,16 @@ void oscar_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od; + PurpleAccount *account; + + od = (OscarData *)gc->proto_data; + account = purple_connection_get_account(gc); if (!aim_snvalid(buddy->name)) { gchar *buf; buf = g_strdup_printf(_("Could not add the buddy %s because the screen name is invalid. Screen names must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."), buddy->name); - if (!purple_conv_present_error(buddy->name, purple_connection_get_account(gc), buf)) + if (!purple_conv_present_error(buddy->name, account, buf)) purple_notify_error(gc, NULL, _("Unable To Add"), buf); g_free(buf); @@ -4640,6 +4658,16 @@ purple_debug_info("oscar", "ssi: adding buddy %s to group %s\n", buddy->name, group->name); aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, 0); + + /* Mobile users should always be online */ + if (buddy->name[0] == '+') { + purple_prpl_got_user_status(account, + purple_buddy_get_name(buddy), + OSCAR_STATUS_ID_AVAILABLE, NULL); + purple_prpl_got_user_status(account, + purple_buddy_get_name(buddy), + OSCAR_STATUS_ID_MOBILE, NULL); + } } /* XXX - Should this be done from AIM accounts, as well? */ @@ -4955,6 +4983,17 @@ g_free(comment); } } + + /* Mobile users should always be online */ + if (b->name[0] == '+') { + purple_prpl_got_user_status(account, + purple_buddy_get_name(b), + OSCAR_STATUS_ID_AVAILABLE, NULL); + purple_prpl_got_user_status(account, + purple_buddy_get_name(b), + OSCAR_STATUS_ID_MOBILE, NULL); + } + g_free(gname_utf8); g_free(alias_utf8); } @@ -5145,6 +5184,17 @@ purple_debug_info("oscar", "ssi: adding buddy %s to group %s to local list\n", name, gname_utf8 ? gname_utf8 : _("Orphans")); purple_blist_add_buddy(b, NULL, g, NULL); + + /* Mobile users should always be online */ + if (b->name[0] == '+') { + purple_prpl_got_user_status(account, + purple_buddy_get_name(b), + OSCAR_STATUS_ID_AVAILABLE, NULL); + purple_prpl_got_user_status(account, + purple_buddy_get_name(b), + OSCAR_STATUS_ID_MOBILE, NULL); + } + } g_free(gname_utf8);