comparison src/protocols/jabber/jabber.c @ 8194:22b3974dc1af

[gaim-migrate @ 8916] a bunch of tweaks to jabber roster handling, and a fix for a segfault when you delete the priority buddy in a contact committer: Tailor Script <tailor@pidgin.im>
author Nathan Walp <nwalp@pidgin.im>
date Sun, 01 Feb 2004 01:06:10 +0000
parents e0a70b763872
children f24172f53650
comparison
equal deleted inserted replaced
8193:e0a70b763872 8194:22b3974dc1af
915 915
916 static char *jabber_tooltip_text(GaimBuddy *b) 916 static char *jabber_tooltip_text(GaimBuddy *b)
917 { 917 {
918 JabberBuddy *jb = jabber_buddy_find(b->account->gc->proto_data, b->name, 918 JabberBuddy *jb = jabber_buddy_find(b->account->gc->proto_data, b->name,
919 FALSE); 919 FALSE);
920 JabberBuddyResource *jbr = jabber_buddy_find_resource(jb, NULL); 920 GString *ret = g_string_new("");
921 char *ret = NULL; 921 char *r = NULL;
922 922
923 if(jbr) { 923 if(jb) {
924 char *text = NULL; 924 JabberBuddyResource *jbr = jabber_buddy_find_resource(jb, NULL);
925 if(jbr->status) { 925 const char *sub;
926 char *stripped; 926 if(jb->subscription & JABBER_SUB_FROM) {
927 stripped = gaim_markup_strip_html(jbr->status); 927 if(jb->subscription & JABBER_SUB_TO)
928 text = g_markup_escape_text(stripped, -1); 928 sub = _("Both");
929 g_free(stripped); 929 else if(jb->subscription & JABBER_SUB_PENDING)
930 } 930 sub = _("From (To pending)");
931 931 else
932 ret = g_strdup_printf("<b>%s:</b> %s%s%s", 932 sub = _("From");
933 _("Status"), 933 } else {
934 jabber_get_state_string(jbr->state), 934 if(jb->subscription & JABBER_SUB_TO)
935 text ? ": " : "", 935 sub = _("To");
936 text ? text : ""); 936 else if(jb->subscription & JABBER_SUB_PENDING)
937 if(text) 937 sub = _("None (To pending)");
938 g_free(text); 938 else
939 } else if(jb && !GAIM_BUDDY_IS_ONLINE(b) && jb->error_msg) { 939 sub = _("None");
940 ret = g_strdup_printf("<b>%s:</b> %s", 940 }
941 _("Error"), jb->error_msg); 941 g_string_append_printf(ret, "<b>%s:</b> %s\n", _("Subscription"), sub);
942 } else if(jb && !GAIM_BUDDY_IS_ONLINE(b) && 942
943 (jb->subscription & JABBER_SUB_PENDING || 943 if(jbr) {
944 !(jb->subscription & JABBER_SUB_TO))) { 944 char *text = NULL;
945 ret = g_strdup_printf("<b>%s:</b> %s", 945 if(jbr->status) {
946 _("Status"), _("Not Authorized")); 946 char *stripped;
947 } 947 stripped = gaim_markup_strip_html(jbr->status);
948 948 text = g_markup_escape_text(stripped, -1);
949 return ret; 949 g_free(stripped);
950 }
951
952 g_string_append_printf(ret, "<b>%s:</b> %s%s%s\n",
953 _("Status"),
954 jabber_get_state_string(jbr->state),
955 text ? ": " : "",
956 text ? text : "");
957 if(text)
958 g_free(text);
959 } else if(!GAIM_BUDDY_IS_ONLINE(b) && jb->error_msg) {
960 g_string_append_printf(ret, "<b>%s:</b> %s\n",
961 _("Error"), jb->error_msg);
962 }
963 }
964
965 if(ret->len > 0) {
966 g_string_truncate(ret, ret->len-1);
967 r = ret->str;
968 g_string_free(ret, FALSE);
969 } else {
970 g_string_free(ret, TRUE);
971 }
972
973 return r;
950 } 974 }
951 975
952 static GList *jabber_away_states(GaimConnection *gc) 976 static GList *jabber_away_states(GaimConnection *gc)
953 { 977 {
954 JabberStream *js = gc->proto_data; 978 JabberStream *js = gc->proto_data;