Mercurial > pidgin
annotate libpurple/protocols/jabber/buddy.c @ 24693:61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
when bytes in the checksum start with 0 (for example, 430902... would become
4392...). Refs #7734, which has a second patch needing more detailed review.
committer: John Bailey <rekkanoryo@rekkanoryo.org>
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Thu, 11 Dec 2008 08:08:02 +0000 |
parents | 915b1cafa3d1 |
children | 9100b9176a16 c07b0aa88a35 65cfc59858cf |
rev | line source |
---|---|
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1 /* |
15822 | 2 * purple - Jabber Protocol Plugin |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
4 * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
5 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
6 * This program is free software; you can redistribute it and/or modify |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
7 * it under the terms of the GNU General Public License as published by |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
8 * the Free Software Foundation; either version 2 of the License, or |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
9 * (at your option) any later version. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
10 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
11 * This program is distributed in the hope that it will be useful, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
14 * GNU General Public License for more details. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
15 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
16 * You should have received a copy of the GNU General Public License |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
17 * along with this program; if not, write to the Free Software |
19681
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
18257
diff
changeset
|
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
19 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
20 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
21 #include "internal.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
22 #include "debug.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
23 #include "imgstore.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
24 #include "prpl.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
25 #include "notify.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
26 #include "request.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
27 #include "util.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
28 #include "xmlnode.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
29 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
30 #include "buddy.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
31 #include "chat.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
32 #include "jabber.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
33 #include "iq.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
34 #include "presence.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
35 #include "xdata.h" |
17853
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
36 #include "pep.h" |
17882
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
37 #include "adhoccommands.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
38 |
23686
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23358
diff
changeset
|
39 #define MAX_HTTP_BUDDYICON_BYTES (200 * 1024) |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23358
diff
changeset
|
40 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
41 typedef struct { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
42 long idle_seconds; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
43 } JabberBuddyInfoResource; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
44 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
45 typedef struct { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
46 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
47 JabberBuddy *jb; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
48 char *jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
49 GSList *ids; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
50 GHashTable *resources; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
51 int timeout_handle; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
52 GSList *vcard_imgids; |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
53 PurpleNotifyUserInfo *user_info; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
54 } JabberBuddyInfo; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
55 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
56 void jabber_buddy_free(JabberBuddy *jb) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
57 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
58 g_return_if_fail(jb != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
59 |
22794
cc8903c59d6b
Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <mark@kingant.net>
parents:
22780
diff
changeset
|
60 g_free(jb->error_msg); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
61 while(jb->resources) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
62 jabber_buddy_resource_free(jb->resources->data); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
63 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
64 g_free(jb); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
65 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
66 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
67 JabberBuddy *jabber_buddy_find(JabberStream *js, const char *name, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
68 gboolean create) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
69 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
70 JabberBuddy *jb; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
71 const char *realname; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
72 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
73 if (js->buddies == NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
74 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
75 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
76 if(!(realname = jabber_normalize(js->gc->account, name))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
77 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
78 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
79 jb = g_hash_table_lookup(js->buddies, realname); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
80 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
81 if(!jb && create) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
82 jb = g_new0(JabberBuddy, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
83 g_hash_table_insert(js->buddies, g_strdup(realname), jb); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
84 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
85 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
86 return jb; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
87 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
88 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
89 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
90 JabberBuddyResource *jabber_buddy_find_resource(JabberBuddy *jb, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
91 const char *resource) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
92 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
93 JabberBuddyResource *jbr = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
94 GList *l; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
95 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
96 if(!jb) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
97 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
98 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
99 for(l = jb->resources; l; l = l->next) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
100 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
101 if(!jbr && !resource) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
102 jbr = l->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
103 } else if(!resource) { |
22414
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
104 if(((JabberBuddyResource *)l->data)->priority > jbr->priority) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
105 jbr = l->data; |
22414
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
106 else if(((JabberBuddyResource *)l->data)->priority == jbr->priority) { |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
107 /* Determine if this resource is more available than the one we've currently chosen */ |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
108 switch(((JabberBuddyResource *)l->data)->state) { |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
109 case JABBER_BUDDY_STATE_ONLINE: |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
110 case JABBER_BUDDY_STATE_CHAT: |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
111 /* This resource is online/chatty. Prefer to one which isn't either. */ |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
112 if ((jbr->state != JABBER_BUDDY_STATE_ONLINE) && (jbr->state != JABBER_BUDDY_STATE_CHAT)) |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
113 jbr = l->data; |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
114 break; |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
115 case JABBER_BUDDY_STATE_AWAY: |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
116 case JABBER_BUDDY_STATE_DND: |
24562
df9f962aa907
This technically doesn't matter due to behavior elsewhere in the prpl, but
Paul Aurich <paul@darkrain42.org>
parents:
24552
diff
changeset
|
117 /* This resource is away/dnd. Prefer to one which is extended away, unavailable, or unknown. */ |
df9f962aa907
This technically doesn't matter due to behavior elsewhere in the prpl, but
Paul Aurich <paul@darkrain42.org>
parents:
24552
diff
changeset
|
118 if ((jbr->state == JABBER_BUDDY_STATE_XA) || (jbr->state == JABBER_BUDDY_STATE_UNAVAILABLE) || |
22414
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
119 (jbr->state == JABBER_BUDDY_STATE_UNKNOWN) || (jbr->state == JABBER_BUDDY_STATE_ERROR)) |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
120 jbr = l->data; |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
121 break; |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
122 case JABBER_BUDDY_STATE_XA: |
24562
df9f962aa907
This technically doesn't matter due to behavior elsewhere in the prpl, but
Paul Aurich <paul@darkrain42.org>
parents:
24552
diff
changeset
|
123 /* This resource is extended away. That's better than unavailable or unknown. */ |
df9f962aa907
This technically doesn't matter due to behavior elsewhere in the prpl, but
Paul Aurich <paul@darkrain42.org>
parents:
24552
diff
changeset
|
124 if ((jbr->state == JABBER_BUDDY_STATE_UNAVAILABLE) || (jbr->state == JABBER_BUDDY_STATE_UNKNOWN) || (jbr->state == JABBER_BUDDY_STATE_ERROR)) |
df9f962aa907
This technically doesn't matter due to behavior elsewhere in the prpl, but
Paul Aurich <paul@darkrain42.org>
parents:
24552
diff
changeset
|
125 jbr = l->data; |
df9f962aa907
This technically doesn't matter due to behavior elsewhere in the prpl, but
Paul Aurich <paul@darkrain42.org>
parents:
24552
diff
changeset
|
126 break; |
df9f962aa907
This technically doesn't matter due to behavior elsewhere in the prpl, but
Paul Aurich <paul@darkrain42.org>
parents:
24552
diff
changeset
|
127 case JABBER_BUDDY_STATE_UNAVAILABLE: |
df9f962aa907
This technically doesn't matter due to behavior elsewhere in the prpl, but
Paul Aurich <paul@darkrain42.org>
parents:
24552
diff
changeset
|
128 /* This resource is unavailable. That's better than unknown. */ |
22414
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
129 if ((jbr->state == JABBER_BUDDY_STATE_UNKNOWN) || (jbr->state == JABBER_BUDDY_STATE_ERROR)) |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
130 jbr = l->data; |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
131 break; |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
132 case JABBER_BUDDY_STATE_UNKNOWN: |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
133 case JABBER_BUDDY_STATE_ERROR: |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
134 /* These are never preferable. */ |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
135 break; |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
136 } |
67f62f55fc5a
Prefer more available resources to less available ones when priorities are the same. Fixes #5079.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22295
diff
changeset
|
137 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
138 } else if(((JabberBuddyResource *)l->data)->name) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
139 if(!strcmp(((JabberBuddyResource *)l->data)->name, resource)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
140 jbr = l->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
141 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
142 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
143 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
144 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
145 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
146 return jbr; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
147 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
148 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
149 JabberBuddyResource *jabber_buddy_track_resource(JabberBuddy *jb, const char *resource, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
150 int priority, JabberBuddyState state, const char *status) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
151 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
152 JabberBuddyResource *jbr = jabber_buddy_find_resource(jb, resource); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
153 if(!jbr) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
154 jbr = g_new0(JabberBuddyResource, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
155 jbr->jb = jb; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
156 jbr->name = g_strdup(resource); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
157 jbr->capabilities = JABBER_CAP_XHTML; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
158 jb->resources = g_list_append(jb->resources, jbr); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
159 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
160 jbr->priority = priority; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
161 jbr->state = state; |
22780 | 162 g_free(jbr->status); |
163 jbr->status = status != NULL ? g_markup_escape_text(status, -1) : NULL; | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
164 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
165 return jbr; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
166 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
167 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
168 void jabber_buddy_resource_free(JabberBuddyResource *jbr) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
169 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
170 g_return_if_fail(jbr != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
171 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
172 jbr->jb->resources = g_list_remove(jbr->jb->resources, jbr); |
17882
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
173 |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
174 while(jbr->commands) { |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
175 JabberAdHocCommands *cmd = jbr->commands->data; |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
176 g_free(cmd->jid); |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
177 g_free(cmd->node); |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
178 g_free(cmd->name); |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
179 g_free(cmd); |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
180 jbr->commands = g_list_delete_link(jbr->commands, jbr->commands); |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
181 } |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
182 |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
183 jabber_caps_free_clientinfo(jbr->caps); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
184 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
185 g_free(jbr->name); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
186 g_free(jbr->status); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
187 g_free(jbr->thread_id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
188 g_free(jbr->client.name); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
189 g_free(jbr->client.version); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
190 g_free(jbr->client.os); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
191 g_free(jbr); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
192 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
193 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
194 void jabber_buddy_remove_resource(JabberBuddy *jb, const char *resource) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
195 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
196 JabberBuddyResource *jbr = jabber_buddy_find_resource(jb, resource); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
197 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
198 if(!jbr) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
199 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
200 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
201 jabber_buddy_resource_free(jbr); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
202 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
203 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
204 const char *jabber_buddy_get_status_msg(JabberBuddy *jb) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
205 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
206 JabberBuddyResource *jbr; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
207 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
208 if(!jb) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
209 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
210 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
211 jbr = jabber_buddy_find_resource(jb, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
212 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
213 if(!jbr) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
214 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
215 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
216 return jbr->status; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
217 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
218 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
219 /******* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
220 * This is the old vCard stuff taken from the old prpl. vCards, by definition |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
221 * are a temporary thing until jabber can get its act together and come up |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
222 * with a format for user information, hence the namespace of 'vcard-temp' |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
223 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
224 * Since I don't feel like putting that much work into something that's |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
225 * _supposed_ to go away, i'm going to just copy the kludgy old code here, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
226 * and make it purdy when jabber comes up with a standards-track JEP to |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
227 * replace vcard-temp |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
228 * --Nathan |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
229 *******/ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
230 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
231 /*---------------------------------------*/ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
232 /* Jabber "set info" (vCard) support */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
233 /*---------------------------------------*/ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
234 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
235 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
236 * V-Card format: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
237 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
238 * <vCard prodid='' version='' xmlns=''> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
239 * <FN></FN> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
240 * <N> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
241 * <FAMILY/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
242 * <GIVEN/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
243 * </N> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
244 * <NICKNAME/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
245 * <URL/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
246 * <ADR> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
247 * <STREET/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
248 * <EXTADD/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
249 * <LOCALITY/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
250 * <REGION/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
251 * <PCODE/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
252 * <COUNTRY/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
253 * </ADR> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
254 * <TEL/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
255 * <EMAIL/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
256 * <ORG> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
257 * <ORGNAME/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
258 * <ORGUNIT/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
259 * </ORG> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
260 * <TITLE/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
261 * <ROLE/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
262 * <DESC/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
263 * <BDAY/> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
264 * </vCard> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
265 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
266 * See also: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
267 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
268 * http://docs.jabber.org/proto/html/vcard-temp.html |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
269 * http://www.vcard-xml.org/dtd/vCard-XML-v2-20010520.dtd |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
270 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
271 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
272 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
273 * Cross-reference user-friendly V-Card entry labels to vCard XML tags |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
274 * and attributes. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
275 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
276 * Order is (or should be) unimportant. For example: we have no way of |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
277 * knowing in what order real data will arrive. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
278 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
279 * Format: Label, Pre-set text, "visible" flag, "editable" flag, XML tag |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
280 * name, XML tag's parent tag "path" (relative to vCard node). |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
281 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
282 * List is terminated by a NULL label pointer. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
283 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
284 * Entries with no label text, but with XML tag and parent tag |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
285 * entries, are used by V-Card XML construction routines to |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
286 * "automagically" construct the appropriate XML node tree. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
287 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
288 * Thoughts on future direction/expansion |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
289 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
290 * This is a "simple" vCard. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
291 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
292 * It is possible for nodes other than the "vCard" node to have |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
293 * attributes. Should that prove necessary/desirable, add an |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
294 * "attributes" pointer to the vcard_template struct, create the |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
295 * necessary tag_attr structs, and add 'em to the vcard_dflt_data |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
296 * array. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
297 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
298 * The above changes will (obviously) require changes to the vCard |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
299 * construction routines. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
300 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
301 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
302 struct vcard_template { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
303 char *label; /* label text pointer */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
304 char *text; /* entry text pointer */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
305 int visible; /* should entry field be "visible?" */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
306 int editable; /* should entry field be editable? */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
307 char *tag; /* tag text */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
308 char *ptag; /* parent tag "path" text */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
309 char *url; /* vCard display format if URL */ |
21015
787b3897ba9f
Patch from Andrew Gaul to constify a bunch of static variables to reduce
Ka-Hing Cheung <khc@hxbc.us>
parents:
20276
diff
changeset
|
310 } const vcard_template_data[] = { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
311 {N_("Full Name"), NULL, TRUE, TRUE, "FN", NULL, NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
312 {N_("Family Name"), NULL, TRUE, TRUE, "FAMILY", "N", NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
313 {N_("Given Name"), NULL, TRUE, TRUE, "GIVEN", "N", NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
314 {N_("Nickname"), NULL, TRUE, TRUE, "NICKNAME", NULL, NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
315 {N_("URL"), NULL, TRUE, TRUE, "URL", NULL, "<A HREF=\"%s\">%s</A>"}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
316 {N_("Street Address"), NULL, TRUE, TRUE, "STREET", "ADR", NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
317 {N_("Extended Address"), NULL, TRUE, TRUE, "EXTADD", "ADR", NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
318 {N_("Locality"), NULL, TRUE, TRUE, "LOCALITY", "ADR", NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
319 {N_("Region"), NULL, TRUE, TRUE, "REGION", "ADR", NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
320 {N_("Postal Code"), NULL, TRUE, TRUE, "PCODE", "ADR", NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
321 {N_("Country"), NULL, TRUE, TRUE, "CTRY", "ADR", NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
322 {N_("Telephone"), NULL, TRUE, TRUE, "NUMBER", "TEL", NULL}, |
23180
e0bcb8cfda74
Use "email" and "Email" consistently. This is potentially controversial,
Richard Laager <rlaager@wiktel.com>
parents:
22861
diff
changeset
|
323 {N_("Email"), NULL, TRUE, TRUE, "USERID", "EMAIL", "<A HREF=\"mailto:%s\">%s</A>"}, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
324 {N_("Organization Name"), NULL, TRUE, TRUE, "ORGNAME", "ORG", NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
325 {N_("Organization Unit"), NULL, TRUE, TRUE, "ORGUNIT", "ORG", NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
326 {N_("Title"), NULL, TRUE, TRUE, "TITLE", NULL, NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
327 {N_("Role"), NULL, TRUE, TRUE, "ROLE", NULL, NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
328 {N_("Birthday"), NULL, TRUE, TRUE, "BDAY", NULL, NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
329 {N_("Description"), NULL, TRUE, TRUE, "DESC", NULL, NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
330 {"", NULL, TRUE, TRUE, "N", NULL, NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
331 {"", NULL, TRUE, TRUE, "ADR", NULL, NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
332 {"", NULL, TRUE, TRUE, "ORG", NULL, NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
333 {NULL, NULL, 0, 0, NULL, NULL, NULL} |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
334 }; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
335 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
336 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
337 * The "vCard" tag's attribute list... |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
338 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
339 struct tag_attr { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
340 char *attr; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
341 char *value; |
21015
787b3897ba9f
Patch from Andrew Gaul to constify a bunch of static variables to reduce
Ka-Hing Cheung <khc@hxbc.us>
parents:
20276
diff
changeset
|
342 } const vcard_tag_attr_list[] = { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
343 {"prodid", "-//HandGen//NONSGML vGen v1.0//EN"}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
344 {"version", "2.0", }, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
345 {"xmlns", "vcard-temp", }, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
346 {NULL, NULL}, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
347 }; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
348 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
349 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
350 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
351 * Insert a tag node into an xmlnode tree, recursively inserting parent tag |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
352 * nodes as necessary |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
353 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
354 * Returns pointer to inserted node |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
355 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
356 * Note to hackers: this code is designed to be re-entrant (it's recursive--it |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
357 * calls itself), so don't put any "static"s in here! |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
358 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
359 static xmlnode *insert_tag_to_parent_tag(xmlnode *start, const char *parent_tag, const char *new_tag) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
360 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
361 xmlnode *x = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
362 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
363 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
364 * If the parent tag wasn't specified, see if we can get it |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
365 * from the vCard template struct. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
366 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
367 if(parent_tag == NULL) { |
21015
787b3897ba9f
Patch from Andrew Gaul to constify a bunch of static variables to reduce
Ka-Hing Cheung <khc@hxbc.us>
parents:
20276
diff
changeset
|
368 const struct vcard_template *vc_tp = vcard_template_data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
369 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
370 while(vc_tp->label != NULL) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
371 if(strcmp(vc_tp->tag, new_tag) == 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
372 parent_tag = vc_tp->ptag; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
373 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
374 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
375 ++vc_tp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
376 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
377 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
378 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
379 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
380 * If we have a parent tag... |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
381 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
382 if(parent_tag != NULL ) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
383 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
384 * Try to get the parent node for a tag |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
385 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
386 if((x = xmlnode_get_child(start, parent_tag)) == NULL) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
387 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
388 * Descend? |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
389 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
390 char *grand_parent = g_strdup(parent_tag); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
391 char *parent; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
392 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
393 if((parent = strrchr(grand_parent, '/')) != NULL) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
394 *(parent++) = '\0'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
395 x = insert_tag_to_parent_tag(start, grand_parent, parent); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
396 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
397 x = xmlnode_new_child(start, grand_parent); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
398 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
399 g_free(grand_parent); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
400 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
401 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
402 * We found *something* to be the parent node. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
403 * Note: may be the "root" node! |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
404 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
405 xmlnode *y; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
406 if((y = xmlnode_get_child(x, new_tag)) != NULL) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
407 return(y); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
408 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
409 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
410 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
411 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
412 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
413 * insert the new tag into its parent node |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
414 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
415 return(xmlnode_new_child((x == NULL? start : x), new_tag)); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
416 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
417 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
418 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
419 * Send vCard info to Jabber server |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
420 */ |
15822 | 421 void jabber_set_info(PurpleConnection *gc, const char *info) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
422 { |
22295
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
423 PurpleStoredImage *img; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
424 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
425 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
426 xmlnode *vc_node; |
21015
787b3897ba9f
Patch from Andrew Gaul to constify a bunch of static variables to reduce
Ka-Hing Cheung <khc@hxbc.us>
parents:
20276
diff
changeset
|
427 const struct tag_attr *tag_attr; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
428 |
18163
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
429 /* if we have't grabbed the remote vcard yet, we can't |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
430 * assume that what we have here is correct */ |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
431 if(!js->vcard_fetched) |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
432 return; |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
433 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
434 g_free(js->avatar_hash); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
435 js->avatar_hash = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
436 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
437 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
438 * Send only if there's actually any *information* to send |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
439 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
440 vc_node = info ? xmlnode_from_str(info, -1) : NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
441 |
22295
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
442 if (vc_node && (!vc_node->name || |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
443 g_ascii_strncasecmp(vc_node->name, "vCard", 5))) { |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
444 xmlnode_free(vc_node); |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
445 vc_node = NULL; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
446 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
447 |
22295
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
448 if ((img = purple_buddy_icons_find_account_icon(gc->account))) { |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
449 gconstpointer avatar_data; |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
450 gsize avatar_len; |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
451 xmlnode *photo, *binval, *type; |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
452 gchar *enc; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
453 |
22295
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
454 if(!vc_node) { |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
455 vc_node = xmlnode_new("vCard"); |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
456 for(tag_attr = vcard_tag_attr_list; tag_attr->attr != NULL; ++tag_attr) |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
457 xmlnode_set_attrib(vc_node, tag_attr->attr, tag_attr->value); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
458 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
459 |
22295
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
460 avatar_data = purple_imgstore_get_data(img); |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
461 avatar_len = purple_imgstore_get_size(img); |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
462 /* have to get rid of the old PHOTO if it exists */ |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
463 if((photo = xmlnode_get_child(vc_node, "PHOTO"))) { |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
464 xmlnode_free(photo); |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
465 } |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
466 photo = xmlnode_new_child(vc_node, "PHOTO"); |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
467 type = xmlnode_new_child(photo, "TYPE"); |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
468 xmlnode_insert_data(type, "image/png", -1); |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
469 binval = xmlnode_new_child(photo, "BINVAL"); |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
470 enc = purple_base64_encode(avatar_data, avatar_len); |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
471 |
24693
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24692
diff
changeset
|
472 js->avatar_hash = jabber_calculate_data_sha1sum(avatar_data, avatar_len); |
22295
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
473 |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
474 xmlnode_insert_data(binval, enc, -1); |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
475 g_free(enc); |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
476 } |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
477 |
bb124c3e668c
Fix setting vCard buddy icons when we don't have any other user info set.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21842
diff
changeset
|
478 if (vc_node != NULL) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
479 iq = jabber_iq_new(js, JABBER_IQ_SET); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
480 xmlnode_insert_child(iq->node, vc_node); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
481 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
482 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
483 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
484 |
16390
4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@wiktel.com>
parents:
16386
diff
changeset
|
485 void jabber_set_buddy_icon(PurpleConnection *gc, PurpleStoredImage *img) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
486 { |
15822 | 487 PurplePresence *gpresence; |
488 PurpleStatus *status; | |
17853
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
489 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
490 if(((JabberStream*)gc->proto_data)->pep) { |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
491 /* XEP-0084: User Avatars */ |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
492 if(img) { |
22794
cc8903c59d6b
Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <mark@kingant.net>
parents:
22780
diff
changeset
|
493 /* |
cc8903c59d6b
Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <mark@kingant.net>
parents:
22780
diff
changeset
|
494 * TODO: This is pretty gross. The Jabber PRPL really shouldn't |
cc8903c59d6b
Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <mark@kingant.net>
parents:
22780
diff
changeset
|
495 * do voodoo to try to determine the image type, height |
cc8903c59d6b
Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <mark@kingant.net>
parents:
22780
diff
changeset
|
496 * and width. |
cc8903c59d6b
Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <mark@kingant.net>
parents:
22780
diff
changeset
|
497 */ |
17853
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
498 /* A PNG header, including the IHDR, but nothing else */ |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
499 const struct { |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
500 guchar signature[8]; /* must be hex 89 50 4E 47 0D 0A 1A 0A */ |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
501 struct { |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
502 guint32 length; /* must be 0x0d */ |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
503 guchar type[4]; /* must be 'I' 'H' 'D' 'R' */ |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
504 guint32 width; |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
505 guint32 height; |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
506 guchar bitdepth; |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
507 guchar colortype; |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
508 guchar compression; |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
509 guchar filter; |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
510 guchar interlace; |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
511 } ihdr; |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
512 } *png = purple_imgstore_get_data(img); /* ATTN: this is in network byte order! */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
513 |
17853
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
514 /* check if the data is a valid png file (well, at least to some extend) */ |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
515 if(png->signature[0] == 0x89 && |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
516 png->signature[1] == 0x50 && |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
517 png->signature[2] == 0x4e && |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
518 png->signature[3] == 0x47 && |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
519 png->signature[4] == 0x0d && |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
520 png->signature[5] == 0x0a && |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
521 png->signature[6] == 0x1a && |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
522 png->signature[7] == 0x0a && |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
523 ntohl(png->ihdr.length) == 0x0d && |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
524 png->ihdr.type[0] == 'I' && |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
525 png->ihdr.type[1] == 'H' && |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
526 png->ihdr.type[2] == 'D' && |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
527 png->ihdr.type[3] == 'R') { |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
528 /* parse PNG header to get the size of the image (yes, this is required) */ |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
529 guint32 width = ntohl(png->ihdr.width); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
530 guint32 height = ntohl(png->ihdr.height); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
531 xmlnode *publish, *item, *data, *metadata, *info; |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
532 char *lengthstring, *widthstring, *heightstring; |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
533 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
534 /* compute the sha1 hash */ |
24693
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24692
diff
changeset
|
535 char *hash = jabber_calculate_data_sha1sum(purple_imgstore_get_data(img), purple_imgstore_get_size(img)); |
17853
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
536 char *base64avatar; |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
537 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
538 publish = xmlnode_new("publish"); |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
539 xmlnode_set_attrib(publish,"node",AVATARNAMESPACEDATA); |
17853
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
540 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
541 item = xmlnode_new_child(publish, "item"); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
542 xmlnode_set_attrib(item, "id", hash); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
543 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
544 data = xmlnode_new_child(item, "data"); |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
545 xmlnode_set_namespace(data,AVATARNAMESPACEDATA); |
17853
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
546 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
547 base64avatar = purple_base64_encode(purple_imgstore_get_data(img), purple_imgstore_get_size(img)); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
548 xmlnode_insert_data(data,base64avatar,-1); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
549 g_free(base64avatar); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
550 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
551 /* publish the avatar itself */ |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
552 jabber_pep_publish((JabberStream*)gc->proto_data, publish); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
553 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
554 /* next step: publish the metadata */ |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
555 publish = xmlnode_new("publish"); |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
556 xmlnode_set_attrib(publish,"node",AVATARNAMESPACEMETA); |
17853
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
557 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
558 item = xmlnode_new_child(publish, "item"); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
559 xmlnode_set_attrib(item, "id", hash); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
560 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
561 metadata = xmlnode_new_child(item, "metadata"); |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
562 xmlnode_set_namespace(metadata,AVATARNAMESPACEMETA); |
17853
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
563 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
564 info = xmlnode_new_child(metadata, "info"); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
565 xmlnode_set_attrib(info, "id", hash); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
566 xmlnode_set_attrib(info, "type", "image/png"); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
567 lengthstring = g_strdup_printf("%u", (unsigned)purple_imgstore_get_size(img)); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
568 xmlnode_set_attrib(info, "bytes", lengthstring); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
569 g_free(lengthstring); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
570 widthstring = g_strdup_printf("%u", width); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
571 xmlnode_set_attrib(info, "width", widthstring); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
572 g_free(widthstring); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
573 heightstring = g_strdup_printf("%u", height); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
574 xmlnode_set_attrib(info, "height", heightstring); |
21596
637037d3748c
Fix a double-free and a leak at the same time.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21560
diff
changeset
|
575 g_free(heightstring); |
17853
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
576 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
577 /* publish the metadata */ |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
578 jabber_pep_publish((JabberStream*)gc->proto_data, publish); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
579 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
580 g_free(hash); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
581 } else { /* if(img) */ |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
582 /* remove the metadata */ |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
583 xmlnode *metadata, *item; |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
584 xmlnode *publish = xmlnode_new("publish"); |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
585 xmlnode_set_attrib(publish,"node",AVATARNAMESPACEMETA); |
17853
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
586 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
587 item = xmlnode_new_child(publish, "item"); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
588 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
589 metadata = xmlnode_new_child(item, "metadata"); |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
590 xmlnode_set_namespace(metadata,AVATARNAMESPACEMETA); |
17853
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
591 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
592 xmlnode_new_child(metadata, "stop"); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
593 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
594 /* publish the metadata */ |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
595 jabber_pep_publish((JabberStream*)gc->proto_data, publish); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
596 } |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
597 } else { |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
598 purple_debug(PURPLE_DEBUG_ERROR, "jabber", |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
599 "jabber_set_buddy_icon received non-png data"); |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
600 } |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
601 } |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
602 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
603 /* even when the image is not png, we can still publish the vCard, since this |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
604 one doesn't require a specific image type */ |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
605 |
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
606 /* publish vCard for those poor older clients */ |
15822 | 607 jabber_set_info(gc, purple_account_get_user_info(gc->account)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
608 |
15822 | 609 gpresence = purple_account_get_presence(gc->account); |
610 status = purple_presence_get_active_status(gpresence); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
611 jabber_presence_send(gc->account, status); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
612 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
613 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
614 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
615 * This is the callback from the "ok clicked" for "set vCard" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
616 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
617 * Formats GSList data into XML-encoded string and returns a pointer |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
618 * to said string. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
619 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
620 * g_free()'ing the returned string space is the responsibility of |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
621 * the caller. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
622 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
623 static void |
15822 | 624 jabber_format_info(PurpleConnection *gc, PurpleRequestFields *fields) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
625 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
626 xmlnode *vc_node; |
15822 | 627 PurpleRequestField *field; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
628 const char *text; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
629 char *p; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
630 const struct vcard_template *vc_tp; |
21015
787b3897ba9f
Patch from Andrew Gaul to constify a bunch of static variables to reduce
Ka-Hing Cheung <khc@hxbc.us>
parents:
20276
diff
changeset
|
631 const struct tag_attr *tag_attr; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
632 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
633 vc_node = xmlnode_new("vCard"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
634 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
635 for(tag_attr = vcard_tag_attr_list; tag_attr->attr != NULL; ++tag_attr) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
636 xmlnode_set_attrib(vc_node, tag_attr->attr, tag_attr->value); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
637 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
638 for (vc_tp = vcard_template_data; vc_tp->label != NULL; vc_tp++) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
639 if (*vc_tp->label == '\0') |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
640 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
641 |
15822 | 642 field = purple_request_fields_get_field(fields, vc_tp->tag); |
643 text = purple_request_field_string_get_value(field); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
644 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
645 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
646 if (text != NULL && *text != '\0') { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
647 xmlnode *xp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
648 |
15822 | 649 purple_debug(PURPLE_DEBUG_INFO, "jabber", |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
650 "Setting %s to '%s'\n", vc_tp->tag, text); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
651 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
652 if ((xp = insert_tag_to_parent_tag(vc_node, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
653 NULL, vc_tp->tag)) != NULL) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
654 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
655 xmlnode_insert_data(xp, text, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
656 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
657 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
658 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
659 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
660 p = xmlnode_to_str(vc_node, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
661 xmlnode_free(vc_node); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
662 |
15822 | 663 purple_account_set_user_info(purple_connection_get_account(gc), p); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
664 serv_set_info(gc, p); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
665 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
666 g_free(p); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
667 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
668 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
669 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
670 * This gets executed by the proto action |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
671 * |
15822 | 672 * Creates a new PurpleRequestFields struct, gets the XML-formatted user_info |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
673 * string (if any) into GSLists for the (multi-entry) edit dialog and |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
674 * calls the set_vcard dialog. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
675 */ |
15822 | 676 void jabber_setup_set_info(PurplePluginAction *action) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
677 { |
15822 | 678 PurpleConnection *gc = (PurpleConnection *) action->context; |
679 PurpleRequestFields *fields; | |
680 PurpleRequestFieldGroup *group; | |
681 PurpleRequestField *field; | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
682 const struct vcard_template *vc_tp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
683 const char *user_info; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
684 char *cdata = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
685 xmlnode *x_vc_data = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
686 |
15822 | 687 fields = purple_request_fields_new(); |
688 group = purple_request_field_group_new(NULL); | |
689 purple_request_fields_add_group(fields, group); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
690 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
691 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
692 * Get existing, XML-formatted, user info |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
693 */ |
15822 | 694 if((user_info = purple_account_get_user_info(gc->account)) != NULL) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
695 x_vc_data = xmlnode_from_str(user_info, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
696 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
697 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
698 * Set up GSLists for edit with labels from "template," data from user info |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
699 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
700 for(vc_tp = vcard_template_data; vc_tp->label != NULL; ++vc_tp) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
701 xmlnode *data_node; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
702 if((vc_tp->label)[0] == '\0') |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
703 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
704 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
705 if (x_vc_data != NULL) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
706 if(vc_tp->ptag == NULL) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
707 data_node = xmlnode_get_child(x_vc_data, vc_tp->tag); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
708 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
709 gchar *tag = g_strdup_printf("%s/%s", vc_tp->ptag, vc_tp->tag); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
710 data_node = xmlnode_get_child(x_vc_data, tag); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
711 g_free(tag); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
712 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
713 if(data_node) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
714 cdata = xmlnode_get_data(data_node); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
715 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
716 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
717 if(strcmp(vc_tp->tag, "DESC") == 0) { |
15822 | 718 field = purple_request_field_string_new(vc_tp->tag, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
719 _(vc_tp->label), cdata, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
720 TRUE); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
721 } else { |
15822 | 722 field = purple_request_field_string_new(vc_tp->tag, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
723 _(vc_tp->label), cdata, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
724 FALSE); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
725 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
726 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
727 g_free(cdata); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
728 cdata = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
729 |
15822 | 730 purple_request_field_group_add_field(group, field); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
731 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
732 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
733 if(x_vc_data != NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
734 xmlnode_free(x_vc_data); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
735 |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
736 purple_request_fields(gc, _("Edit XMPP vCard"), |
16904
56042b2f8b64
s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents:
16719
diff
changeset
|
737 _("Edit XMPP vCard"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
738 _("All items below are optional. Enter only the " |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
739 "information with which you feel comfortable."), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
740 fields, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
741 _("Save"), G_CALLBACK(jabber_format_info), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
742 _("Cancel"), NULL, |
16439
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
15822
diff
changeset
|
743 purple_connection_get_account(gc), NULL, NULL, |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
744 gc); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
745 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
746 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
747 /*---------------------------------------*/ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
748 /* End Jabber "set info" (vCard) support */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
749 /*---------------------------------------*/ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
750 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
751 /****** |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
752 * end of that ancient crap that needs to die |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
753 ******/ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
754 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
755 static void jabber_buddy_info_destroy(JabberBuddyInfo *jbi) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
756 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
757 /* Remove the timeout, which would otherwise trigger jabber_buddy_get_info_timeout() */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
758 if (jbi->timeout_handle > 0) |
15822 | 759 purple_timeout_remove(jbi->timeout_handle); |
15665
6eda87b08cdf
Don't access the list element after it has been freed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15626
diff
changeset
|
760 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
761 g_free(jbi->jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
762 g_hash_table_destroy(jbi->resources); |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
763 purple_notify_user_info_destroy(jbi->user_info); |
15665
6eda87b08cdf
Don't access the list element after it has been freed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15626
diff
changeset
|
764 g_free(jbi); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
765 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
766 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
767 static void jabber_buddy_info_show_if_ready(JabberBuddyInfo *jbi) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
768 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
769 char *resource_name, *tmp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
770 JabberBuddyResource *jbr; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
771 JabberBuddyInfoResource *jbir = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
772 GList *resources; |
15822 | 773 PurpleNotifyUserInfo *user_info; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
774 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
775 /* not yet */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
776 if(jbi->ids) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
777 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
778 |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
779 user_info = jbi->user_info; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
780 resource_name = jabber_get_resource(jbi->jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
781 |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
782 /* If we have one or more pairs from the vcard, put a section break above it */ |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
783 if (purple_notify_user_info_get_entries(user_info)) |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
784 purple_notify_user_info_prepend_section_break(user_info); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
785 |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
786 /* Prepend the primary buddy info to user_info so that it goes before the vcard. */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
787 if(resource_name) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
788 jbr = jabber_buddy_find_resource(jbi->jb, resource_name); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
789 jbir = g_hash_table_lookup(jbi->resources, resource_name); |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
790 if(jbr && jbr->client.name) { |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
791 tmp = g_strdup_printf("%s%s%s", jbr->client.name, |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
792 (jbr->client.version ? " " : ""), |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
793 (jbr->client.version ? jbr->client.version : "")); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
794 purple_notify_user_info_add_pair(user_info, _("Client"), tmp); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
795 g_free(tmp); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
796 |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
797 if(jbr->client.os) { |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
798 purple_notify_user_info_prepend_pair(user_info, _("Operating System"), jbr->client.os); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
799 } |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
800 } |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
801 if(jbir) { |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
802 if(jbir->idle_seconds > 0) { |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
803 char *idle = purple_str_seconds_to_string(jbir->idle_seconds); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
804 purple_notify_user_info_prepend_pair(user_info, _("Idle"), idle); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
805 g_free(idle); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
806 } |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
807 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
808 if(jbr) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
809 char *purdy = NULL; |
23261
b4ed2512be3b
Remove compile warnings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23251
diff
changeset
|
810 const char *status_name = jabber_buddy_state_get_name(jbr->state); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
811 if(jbr->status) |
15822 | 812 purdy = purple_strdup_withhtml(jbr->status); |
23251
4f49d4b25e24
If the status name and status message are the same for a jabber buddy,
Evan Schoenberg <evan.s@dreskin.net>
parents:
23224
diff
changeset
|
813 if(status_name && purdy && !strcmp(status_name, purdy)) |
4f49d4b25e24
If the status name and status message are the same for a jabber buddy,
Evan Schoenberg <evan.s@dreskin.net>
parents:
23224
diff
changeset
|
814 status_name = NULL; |
4f49d4b25e24
If the status name and status message are the same for a jabber buddy,
Evan Schoenberg <evan.s@dreskin.net>
parents:
23224
diff
changeset
|
815 |
4f49d4b25e24
If the status name and status message are the same for a jabber buddy,
Evan Schoenberg <evan.s@dreskin.net>
parents:
23224
diff
changeset
|
816 tmp = g_strdup_printf("%s%s%s", (status_name ? status_name : ""), |
4f49d4b25e24
If the status name and status message are the same for a jabber buddy,
Evan Schoenberg <evan.s@dreskin.net>
parents:
23224
diff
changeset
|
817 ((status_name && purdy) ? ": " : ""), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
818 (purdy ? purdy : "")); |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
819 purple_notify_user_info_prepend_pair(user_info, _("Status"), tmp); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
820 g_free(tmp); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
821 g_free(purdy); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
822 } else { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
823 purple_notify_user_info_prepend_pair(user_info, _("Status"), _("Unknown")); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
824 } |
19724
36d5d5048b53
Dont spam the buddy info window with esoteric capabilities
Sean Egan <seanegan@gmail.com>
parents:
19697
diff
changeset
|
825 #if 0 |
36d5d5048b53
Dont spam the buddy info window with esoteric capabilities
Sean Egan <seanegan@gmail.com>
parents:
19697
diff
changeset
|
826 /* #if 0 this for now; I think this would be far more useful if we limited this to a particular set of features |
36d5d5048b53
Dont spam the buddy info window with esoteric capabilities
Sean Egan <seanegan@gmail.com>
parents:
19697
diff
changeset
|
827 * of particular interest (-vv jumps out as one). As it is now, I don't picture people getting all excited: "Oh sweet crap! |
36d5d5048b53
Dont spam the buddy info window with esoteric capabilities
Sean Egan <seanegan@gmail.com>
parents:
19697
diff
changeset
|
828 * So-and-so supports 'jabber:x:data' AND 'Collaborative Data Objects'!" |
36d5d5048b53
Dont spam the buddy info window with esoteric capabilities
Sean Egan <seanegan@gmail.com>
parents:
19697
diff
changeset
|
829 */ |
36d5d5048b53
Dont spam the buddy info window with esoteric capabilities
Sean Egan <seanegan@gmail.com>
parents:
19697
diff
changeset
|
830 |
18698
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
831 if(jbr && jbr->caps) { |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
832 GString *tmp = g_string_new(""); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
833 GList *iter; |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
834 for(iter = jbr->caps->features; iter; iter = g_list_next(iter)) { |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
835 const char *feature = iter->data; |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
836 |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
837 if(!strcmp(feature, "jabber:iq:last")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
838 feature = _("Last Activity"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
839 else if(!strcmp(feature, "http://jabber.org/protocol/disco#info")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
840 feature = _("Service Discovery Info"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
841 else if(!strcmp(feature, "http://jabber.org/protocol/disco#items")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
842 feature = _("Service Discovery Items"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
843 else if(!strcmp(feature, "http://jabber.org/protocol/address")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
844 feature = _("Extended Stanza Addressing"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
845 else if(!strcmp(feature, "http://jabber.org/protocol/muc")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
846 feature = _("Multi-User Chat"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
847 else if(!strcmp(feature, "http://jabber.org/protocol/muc#user")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
848 feature = _("Multi-User Chat Extended Presence Information"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
849 else if(!strcmp(feature, "http://jabber.org/protocol/ibb")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
850 feature = _("In-Band Bytestreams"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
851 else if(!strcmp(feature, "http://jabber.org/protocol/commands")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
852 feature = _("Ad-Hoc Commands"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
853 else if(!strcmp(feature, "http://jabber.org/protocol/pubsub")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
854 feature = _("PubSub Service"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
855 else if(!strcmp(feature, "http://jabber.org/protocol/bytestreams")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
856 feature = _("SOCKS5 Bytestreams"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
857 else if(!strcmp(feature, "jabber:x:oob")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
858 feature = _("Out of Band Data"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
859 else if(!strcmp(feature, "http://jabber.org/protocol/xhtml-im")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
860 feature = _("XHTML-IM"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
861 else if(!strcmp(feature, "jabber:iq:register")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
862 feature = _("In-Band Registration"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
863 else if(!strcmp(feature, "http://jabber.org/protocol/geoloc")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
864 feature = _("User Location"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
865 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0084.html")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
866 feature = _("User Avatar"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
867 else if(!strcmp(feature, "http://jabber.org/protocol/chatstates")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
868 feature = _("Chat State Notifications"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
869 else if(!strcmp(feature, "jabber:iq:version")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
870 feature = _("Software Version"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
871 else if(!strcmp(feature, "http://jabber.org/protocol/si")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
872 feature = _("Stream Initiation"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
873 else if(!strcmp(feature, "http://jabber.org/protocol/si/profile/file-transfer")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
874 feature = _("File Transfer"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
875 else if(!strcmp(feature, "http://jabber.org/protocol/mood")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
876 feature = _("User Mood"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
877 else if(!strcmp(feature, "http://jabber.org/protocol/activity")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
878 feature = _("User Activity"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
879 else if(!strcmp(feature, "http://jabber.org/protocol/caps")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
880 feature = _("Entity Capabilities"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
881 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0116.html")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
882 feature = _("Encrypted Session Negotiations"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
883 else if(!strcmp(feature, "http://jabber.org/protocol/tune")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
884 feature = _("User Tune"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
885 else if(!strcmp(feature, "http://jabber.org/protocol/rosterx")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
886 feature = _("Roster Item Exchange"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
887 else if(!strcmp(feature, "http://jabber.org/protocol/reach")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
888 feature = _("Reachability Address"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
889 else if(!strcmp(feature, "http://jabber.org/protocol/profile")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
890 feature = _("User Profile"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
891 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0166.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
892 feature = _("Jingle"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
893 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0167.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
894 feature = _("Jingle Audio"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
895 else if(!strcmp(feature, "http://jabber.org/protocol/nick")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
896 feature = _("User Nickname"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
897 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0176.html#ns-udp")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
898 feature = _("Jingle ICE UDP"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
899 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0176.html#ns-tcp")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
900 feature = _("Jingle ICE TCP"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
901 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0177.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
902 feature = _("Jingle Raw UDP"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
903 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0180.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
904 feature = _("Jingle Video"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
905 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0181.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
906 feature = _("Jingle DTMF"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
907 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0184.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
908 feature = _("Message Receipts"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
909 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0189.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
910 feature = _("Public Key Publishing"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
911 else if(!strcmp(feature, "http://jabber.org/protocol/chatting")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
912 feature = _("User Chatting"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
913 else if(!strcmp(feature, "http://jabber.org/protocol/browsing")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
914 feature = _("User Browsing"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
915 else if(!strcmp(feature, "http://jabber.org/protocol/gaming")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
916 feature = _("User Gaming"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
917 else if(!strcmp(feature, "http://jabber.org/protocol/viewing")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
918 feature = _("User Viewing"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
919 else if(!strcmp(feature, "urn:xmpp:ping") || !strcmp(feature, "http://www.xmpp.org/extensions/xep-0199.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
920 feature = _("Ping"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
921 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0200.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
922 feature = _("Stanza Encryption"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
923 else if(!strcmp(feature, "urn:xmpp:time")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
924 feature = _("Entity Time"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
925 else if(!strcmp(feature, "urn:xmpp:delay")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
926 feature = _("Delayed Delivery"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
927 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0204.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
928 feature = _("Collaborative Data Objects"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
929 else if(!strcmp(feature, "http://jabber.org/protocol/fileshare")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
930 feature = _("File Repository and Sharing"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
931 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0215.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
932 feature = _("STUN Service Discovery for Jingle"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
933 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0116.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
934 feature = _("Simplified Encrypted Session Negotiation"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
935 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0219.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
936 feature = _("Hop Check"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
937 else if(g_str_has_suffix(feature, "+notify")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
938 feature = NULL; |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
939 if(feature) |
19724
36d5d5048b53
Dont spam the buddy info window with esoteric capabilities
Sean Egan <seanegan@gmail.com>
parents:
19697
diff
changeset
|
940 g_string_append_printf(tmp, "%s<br/>", feature); |
18698
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
941 } |
19724
36d5d5048b53
Dont spam the buddy info window with esoteric capabilities
Sean Egan <seanegan@gmail.com>
parents:
19697
diff
changeset
|
942 |
18698
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
943 if(strlen(tmp->str) > 0) |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
944 purple_notify_user_info_prepend_pair(user_info, _("Capabilities"), tmp->str); |
18698
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
945 |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
946 g_string_free(tmp, TRUE); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
947 } |
19724
36d5d5048b53
Dont spam the buddy info window with esoteric capabilities
Sean Egan <seanegan@gmail.com>
parents:
19697
diff
changeset
|
948 #endif |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
949 } else { |
24552
f10aba5592c6
The other day while struct hiding, I noticed a for loop that was checking
Richard Laager <rlaager@wiktel.com>
parents:
24369
diff
changeset
|
950 gboolean multiple_resources = jbi->jb->resources && jbi->jb->resources->next; |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
951 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
952 for(resources = jbi->jb->resources; resources; resources = resources->next) { |
23261
b4ed2512be3b
Remove compile warnings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23251
diff
changeset
|
953 char *purdy = NULL; |
b4ed2512be3b
Remove compile warnings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23251
diff
changeset
|
954 const char *status_name = NULL; |
b4ed2512be3b
Remove compile warnings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23251
diff
changeset
|
955 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
956 jbr = resources->data; |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
957 |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
958 if(jbr->client.name) { |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
959 tmp = g_strdup_printf("%s%s%s", jbr->client.name, |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
960 (jbr->client.version ? " " : ""), |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
961 (jbr->client.version ? jbr->client.version : "")); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
962 purple_notify_user_info_prepend_pair(user_info, |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
963 _("Client"), tmp); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
964 g_free(tmp); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
965 |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
966 if(jbr->client.os) { |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
967 purple_notify_user_info_prepend_pair(user_info, _("Operating System"), jbr->client.os); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
968 } |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
969 } |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
970 |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
971 if(jbr->name && (jbir = g_hash_table_lookup(jbi->resources, jbr->name))) { |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
972 if(jbir->idle_seconds > 0) { |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
973 char *idle = purple_str_seconds_to_string(jbir->idle_seconds); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
974 purple_notify_user_info_prepend_pair(user_info, _("Idle"), idle); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
975 g_free(idle); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
976 } |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
977 } |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
978 |
23251
4f49d4b25e24
If the status name and status message are the same for a jabber buddy,
Evan Schoenberg <evan.s@dreskin.net>
parents:
23224
diff
changeset
|
979 status_name = jabber_buddy_state_get_name(jbr->state); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
980 if(jbr->status) |
15822 | 981 purdy = purple_strdup_withhtml(jbr->status); |
23251
4f49d4b25e24
If the status name and status message are the same for a jabber buddy,
Evan Schoenberg <evan.s@dreskin.net>
parents:
23224
diff
changeset
|
982 if(status_name && purdy && !strcmp(status_name, purdy)) |
4f49d4b25e24
If the status name and status message are the same for a jabber buddy,
Evan Schoenberg <evan.s@dreskin.net>
parents:
23224
diff
changeset
|
983 status_name = NULL; |
4f49d4b25e24
If the status name and status message are the same for a jabber buddy,
Evan Schoenberg <evan.s@dreskin.net>
parents:
23224
diff
changeset
|
984 |
4f49d4b25e24
If the status name and status message are the same for a jabber buddy,
Evan Schoenberg <evan.s@dreskin.net>
parents:
23224
diff
changeset
|
985 tmp = g_strdup_printf("%s%s%s", (status_name ? status_name : ""), |
4f49d4b25e24
If the status name and status message are the same for a jabber buddy,
Evan Schoenberg <evan.s@dreskin.net>
parents:
23224
diff
changeset
|
986 ((status_name && purdy) ? ": " : ""), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
987 (purdy ? purdy : "")); |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
988 purple_notify_user_info_prepend_pair(user_info, _("Status"), tmp); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
989 g_free(tmp); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
990 g_free(purdy); |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
991 |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
992 if(multiple_resources) { |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
993 tmp = g_strdup_printf("%d", jbr->priority); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
994 purple_notify_user_info_prepend_pair(user_info, _("Priority"), tmp); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
995 g_free(tmp); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
996 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
997 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
998 if(jbr->name) |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
999 purple_notify_user_info_prepend_pair(user_info, _("Resource"), jbr->name); |
19724
36d5d5048b53
Dont spam the buddy info window with esoteric capabilities
Sean Egan <seanegan@gmail.com>
parents:
19697
diff
changeset
|
1000 #if 0 |
18698
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1001 if(jbr && jbr->caps) { |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1002 GString *tmp = g_string_new(""); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1003 GList *iter; |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1004 for(iter = jbr->caps->features; iter; iter = g_list_next(iter)) { |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1005 const char *feature = iter->data; |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1006 |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1007 if(!strcmp(feature, "jabber:iq:last")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1008 feature = _("Last Activity"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1009 else if(!strcmp(feature, "http://jabber.org/protocol/disco#info")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1010 feature = _("Service Discovery Info"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1011 else if(!strcmp(feature, "http://jabber.org/protocol/disco#items")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1012 feature = _("Service Discovery Items"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1013 else if(!strcmp(feature, "http://jabber.org/protocol/address")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1014 feature = _("Extended Stanza Addressing"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1015 else if(!strcmp(feature, "http://jabber.org/protocol/muc")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1016 feature = _("Multi-User Chat"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1017 else if(!strcmp(feature, "http://jabber.org/protocol/muc#user")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1018 feature = _("Multi-User Chat Extended Presence Information"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1019 else if(!strcmp(feature, "http://jabber.org/protocol/ibb")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1020 feature = _("In-Band Bytestreams"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1021 else if(!strcmp(feature, "http://jabber.org/protocol/commands")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1022 feature = _("Ad-Hoc Commands"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1023 else if(!strcmp(feature, "http://jabber.org/protocol/pubsub")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1024 feature = _("PubSub Service"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1025 else if(!strcmp(feature, "http://jabber.org/protocol/bytestreams")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1026 feature = _("SOCKS5 Bytestreams"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1027 else if(!strcmp(feature, "jabber:x:oob")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1028 feature = _("Out of Band Data"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1029 else if(!strcmp(feature, "http://jabber.org/protocol/xhtml-im")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1030 feature = _("XHTML-IM"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1031 else if(!strcmp(feature, "jabber:iq:register")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1032 feature = _("In-Band Registration"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1033 else if(!strcmp(feature, "http://jabber.org/protocol/geoloc")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1034 feature = _("User Location"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1035 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0084.html")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1036 feature = _("User Avatar"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1037 else if(!strcmp(feature, "http://jabber.org/protocol/chatstates")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1038 feature = _("Chat State Notifications"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1039 else if(!strcmp(feature, "jabber:iq:version")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1040 feature = _("Software Version"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1041 else if(!strcmp(feature, "http://jabber.org/protocol/si")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1042 feature = _("Stream Initiation"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1043 else if(!strcmp(feature, "http://jabber.org/protocol/si/profile/file-transfer")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1044 feature = _("File Transfer"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1045 else if(!strcmp(feature, "http://jabber.org/protocol/mood")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1046 feature = _("User Mood"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1047 else if(!strcmp(feature, "http://jabber.org/protocol/activity")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1048 feature = _("User Activity"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1049 else if(!strcmp(feature, "http://jabber.org/protocol/caps")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1050 feature = _("Entity Capabilities"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1051 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0116.html")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1052 feature = _("Encrypted Session Negotiations"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1053 else if(!strcmp(feature, "http://jabber.org/protocol/tune")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1054 feature = _("User Tune"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1055 else if(!strcmp(feature, "http://jabber.org/protocol/rosterx")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1056 feature = _("Roster Item Exchange"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1057 else if(!strcmp(feature, "http://jabber.org/protocol/reach")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1058 feature = _("Reachability Address"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1059 else if(!strcmp(feature, "http://jabber.org/protocol/profile")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1060 feature = _("User Profile"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1061 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0166.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1062 feature = _("Jingle"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1063 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0167.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1064 feature = _("Jingle Audio"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1065 else if(!strcmp(feature, "http://jabber.org/protocol/nick")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1066 feature = _("User Nickname"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1067 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0176.html#ns-udp")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1068 feature = _("Jingle ICE UDP"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1069 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0176.html#ns-tcp")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1070 feature = _("Jingle ICE TCP"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1071 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0177.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1072 feature = _("Jingle Raw UDP"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1073 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0180.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1074 feature = _("Jingle Video"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1075 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0181.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1076 feature = _("Jingle DTMF"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1077 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0184.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1078 feature = _("Message Receipts"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1079 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0189.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1080 feature = _("Public Key Publishing"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1081 else if(!strcmp(feature, "http://jabber.org/protocol/chatting")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1082 feature = _("User Chatting"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1083 else if(!strcmp(feature, "http://jabber.org/protocol/browsing")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1084 feature = _("User Browsing"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1085 else if(!strcmp(feature, "http://jabber.org/protocol/gaming")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1086 feature = _("User Gaming"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1087 else if(!strcmp(feature, "http://jabber.org/protocol/viewing")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1088 feature = _("User Viewing"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1089 else if(!strcmp(feature, "urn:xmpp:ping") || !strcmp(feature, "http://www.xmpp.org/extensions/xep-0199.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1090 feature = _("Ping"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1091 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0200.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1092 feature = _("Stanza Encryption"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1093 else if(!strcmp(feature, "urn:xmpp:time")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1094 feature = _("Entity Time"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1095 else if(!strcmp(feature, "urn:xmpp:delay")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1096 feature = _("Delayed Delivery"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1097 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0204.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1098 feature = _("Collaborative Data Objects"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1099 else if(!strcmp(feature, "http://jabber.org/protocol/fileshare")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1100 feature = _("File Repository and Sharing"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1101 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0215.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1102 feature = _("STUN Service Discovery for Jingle"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1103 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0116.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1104 feature = _("Simplified Encrypted Session Negotiation"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1105 else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0219.html#ns")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1106 feature = _("Hop Check"); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1107 else if(g_str_has_suffix(feature, "+notify")) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1108 feature = NULL; |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1109 |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1110 if(feature) |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1111 g_string_append_printf(tmp, "%s\n", feature); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1112 } |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1113 if(strlen(tmp->str) > 0) |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1114 purple_notify_user_info_prepend_pair(user_info, _("Capabilities"), tmp->str); |
18698
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1115 |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1116 g_string_free(tmp, TRUE); |
b5546f8f8c71
Now displaying a contact's client's capabilities in the info text if that client supports the caps extension.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1117 } |
19724
36d5d5048b53
Dont spam the buddy info window with esoteric capabilities
Sean Egan <seanegan@gmail.com>
parents:
19697
diff
changeset
|
1118 #endif |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1119 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1120 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1121 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1122 g_free(resource_name); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1123 |
15822 | 1124 purple_notify_userinfo(jbi->js->gc, jbi->jid, user_info, NULL, NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1125 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1126 while(jbi->vcard_imgids) { |
16375
391a79778f89
Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@wiktel.com>
parents:
15822
diff
changeset
|
1127 purple_imgstore_unref_by_id(GPOINTER_TO_INT(jbi->vcard_imgids->data)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1128 jbi->vcard_imgids = g_slist_delete_link(jbi->vcard_imgids, jbi->vcard_imgids); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1129 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1130 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1131 jbi->js->pending_buddy_info_requests = g_slist_remove(jbi->js->pending_buddy_info_requests, jbi); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1132 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1133 jabber_buddy_info_destroy(jbi); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1134 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1135 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1136 static void jabber_buddy_info_remove_id(JabberBuddyInfo *jbi, const char *id) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1137 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1138 GSList *l = jbi->ids; |
15665
6eda87b08cdf
Don't access the list element after it has been freed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15626
diff
changeset
|
1139 char *comp_id; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1140 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1141 if(!id) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1142 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1143 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1144 while(l) { |
15665
6eda87b08cdf
Don't access the list element after it has been freed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15626
diff
changeset
|
1145 comp_id = l->data; |
6eda87b08cdf
Don't access the list element after it has been freed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15626
diff
changeset
|
1146 if(!strcmp(id, comp_id)) { |
6eda87b08cdf
Don't access the list element after it has been freed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15626
diff
changeset
|
1147 jbi->ids = g_slist_remove(jbi->ids, comp_id); |
6eda87b08cdf
Don't access the list element after it has been freed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15626
diff
changeset
|
1148 g_free(comp_id); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1149 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1150 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1151 l = l->next; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1152 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1153 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1154 |
18163
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1155 static void jabber_vcard_save_mine(JabberStream *js, xmlnode *packet, gpointer data) |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1156 { |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1157 xmlnode *vcard; |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1158 char *txt; |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1159 PurpleStoredImage *img; |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1160 |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1161 if((vcard = xmlnode_get_child(packet, "vCard")) || |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1162 (vcard = xmlnode_get_child_with_namespace(packet, "query", "vcard-temp"))) |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1163 { |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1164 txt = xmlnode_to_str(vcard, NULL); |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1165 purple_account_set_user_info(purple_connection_get_account(js->gc), txt); |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1166 |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1167 g_free(txt); |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1168 } else { |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1169 /* if we have no vCard, then lets not overwrite what we might have locally */ |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1170 } |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1171 |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1172 js->vcard_fetched = TRUE; |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1173 |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1174 if(NULL != (img = purple_buddy_icons_find_account_icon(js->gc->account))) { |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1175 jabber_set_buddy_icon(js->gc, img); |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1176 purple_imgstore_unref(img); |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1177 } |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1178 } |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1179 |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1180 void jabber_vcard_fetch_mine(JabberStream *js) |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1181 { |
21842
ce3d42470adf
Fix XMPP buddy icons. Somehow a 'VCard' element got changed to a query
Sean Egan <seanegan@gmail.com>
parents:
21596
diff
changeset
|
1182 JabberIq *iq = jabber_iq_new(js, JABBER_IQ_GET); |
ce3d42470adf
Fix XMPP buddy icons. Somehow a 'VCard' element got changed to a query
Sean Egan <seanegan@gmail.com>
parents:
21596
diff
changeset
|
1183 |
ce3d42470adf
Fix XMPP buddy icons. Somehow a 'VCard' element got changed to a query
Sean Egan <seanegan@gmail.com>
parents:
21596
diff
changeset
|
1184 xmlnode *vcard = xmlnode_new_child(iq->node, "vCard"); |
ce3d42470adf
Fix XMPP buddy icons. Somehow a 'VCard' element got changed to a query
Sean Egan <seanegan@gmail.com>
parents:
21596
diff
changeset
|
1185 xmlnode_set_namespace(vcard, "vcard-temp"); |
18163
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1186 jabber_iq_set_callback(iq, jabber_vcard_save_mine, NULL); |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1187 |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1188 jabber_iq_send(iq); |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1189 } |
703872bf33c6
server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents:
18124
diff
changeset
|
1190 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1191 static void jabber_vcard_parse(JabberStream *js, xmlnode *packet, gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1192 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1193 const char *id, *from; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1194 char *bare_jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1195 char *text; |
22450
b53bacc6eb6e
If we receive a Full Name and no nickname, use the Full Name as the serverside alias for an XMPP contact. If we receive just a nickname or both a full name and a nickname, prefer the nickname.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22414
diff
changeset
|
1196 char *serverside_alias = NULL; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1197 xmlnode *vcard; |
15822 | 1198 PurpleBuddy *b; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1199 JabberBuddyInfo *jbi = data; |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1200 PurpleNotifyUserInfo *user_info; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1201 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1202 from = xmlnode_get_attrib(packet, "from"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1203 id = xmlnode_get_attrib(packet, "id"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1204 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1205 if(!jbi) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1206 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1207 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1208 jabber_buddy_info_remove_id(jbi, id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1209 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1210 if(!from) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1211 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1212 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1213 if(!jabber_buddy_find(js, from, FALSE)) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1214 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1215 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1216 /* XXX: handle the error case */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1217 |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1218 user_info = jbi->user_info; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1219 bare_jid = jabber_get_bare_jid(from); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1220 |
15822 | 1221 b = purple_find_buddy(js->gc->account, bare_jid); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1222 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1223 if((vcard = xmlnode_get_child(packet, "vCard")) || |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1224 (vcard = xmlnode_get_child_with_namespace(packet, "query", "vcard-temp"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1225 xmlnode *child; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1226 for(child = vcard->child; child; child = child->next) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1227 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1228 xmlnode *child2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1229 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1230 if(child->type != XMLNODE_TYPE_TAG) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1231 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1232 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1233 text = xmlnode_get_data(child); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1234 if(text && !strcmp(child->name, "FN")) { |
22450
b53bacc6eb6e
If we receive a Full Name and no nickname, use the Full Name as the serverside alias for an XMPP contact. If we receive just a nickname or both a full name and a nickname, prefer the nickname.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22414
diff
changeset
|
1235 if (!serverside_alias) |
b53bacc6eb6e
If we receive a Full Name and no nickname, use the Full Name as the serverside alias for an XMPP contact. If we receive just a nickname or both a full name and a nickname, prefer the nickname.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22414
diff
changeset
|
1236 serverside_alias = g_strdup(text); |
b53bacc6eb6e
If we receive a Full Name and no nickname, use the Full Name as the serverside alias for an XMPP contact. If we receive just a nickname or both a full name and a nickname, prefer the nickname.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22414
diff
changeset
|
1237 |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1238 purple_notify_user_info_add_pair(user_info, _("Full Name"), text); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1239 } else if(!strcmp(child->name, "N")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1240 for(child2 = child->child; child2; child2 = child2->next) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1241 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1242 char *text2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1243 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1244 if(child2->type != XMLNODE_TYPE_TAG) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1245 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1246 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1247 text2 = xmlnode_get_data(child2); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1248 if(text2 && !strcmp(child2->name, "FAMILY")) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1249 purple_notify_user_info_add_pair(user_info, _("Family Name"), text2); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1250 } else if(text2 && !strcmp(child2->name, "GIVEN")) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1251 purple_notify_user_info_add_pair(user_info, _("Given Name"), text2); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1252 } else if(text2 && !strcmp(child2->name, "MIDDLE")) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1253 purple_notify_user_info_add_pair(user_info, _("Middle Name"), text2); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1254 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1255 g_free(text2); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1256 } |
22450
b53bacc6eb6e
If we receive a Full Name and no nickname, use the Full Name as the serverside alias for an XMPP contact. If we receive just a nickname or both a full name and a nickname, prefer the nickname.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22414
diff
changeset
|
1257 } else if(text && !strcmp(child->name, "NICKNAME")) { |
24003
32828b3c0d4f
Ignore nicknames which are just the user portion of the JID, as these aren't useful. Instead, prefer the fullname in that situation for serverside alias purposes.
Evan Schoenberg <evan.s@dreskin.net>
parents:
23686
diff
changeset
|
1258 /* Prefer the Nickcname to the Full Name as the serverside alias if it's not just part of the jid. |
32828b3c0d4f
Ignore nicknames which are just the user portion of the JID, as these aren't useful. Instead, prefer the fullname in that situation for serverside alias purposes.
Evan Schoenberg <evan.s@dreskin.net>
parents:
23686
diff
changeset
|
1259 * Ignore it if it's part of the jid. */ |
32828b3c0d4f
Ignore nicknames which are just the user portion of the JID, as these aren't useful. Instead, prefer the fullname in that situation for serverside alias purposes.
Evan Schoenberg <evan.s@dreskin.net>
parents:
23686
diff
changeset
|
1260 if (strstr(bare_jid, text) == NULL) { |
32828b3c0d4f
Ignore nicknames which are just the user portion of the JID, as these aren't useful. Instead, prefer the fullname in that situation for serverside alias purposes.
Evan Schoenberg <evan.s@dreskin.net>
parents:
23686
diff
changeset
|
1261 g_free(serverside_alias); |
32828b3c0d4f
Ignore nicknames which are just the user portion of the JID, as these aren't useful. Instead, prefer the fullname in that situation for serverside alias purposes.
Evan Schoenberg <evan.s@dreskin.net>
parents:
23686
diff
changeset
|
1262 serverside_alias = g_strdup(text); |
32828b3c0d4f
Ignore nicknames which are just the user portion of the JID, as these aren't useful. Instead, prefer the fullname in that situation for serverside alias purposes.
Evan Schoenberg <evan.s@dreskin.net>
parents:
23686
diff
changeset
|
1263 |
32828b3c0d4f
Ignore nicknames which are just the user portion of the JID, as these aren't useful. Instead, prefer the fullname in that situation for serverside alias purposes.
Evan Schoenberg <evan.s@dreskin.net>
parents:
23686
diff
changeset
|
1264 purple_notify_user_info_add_pair(user_info, _("Nickname"), text); |
32828b3c0d4f
Ignore nicknames which are just the user portion of the JID, as these aren't useful. Instead, prefer the fullname in that situation for serverside alias purposes.
Evan Schoenberg <evan.s@dreskin.net>
parents:
23686
diff
changeset
|
1265 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1266 } else if(text && !strcmp(child->name, "BDAY")) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1267 purple_notify_user_info_add_pair(user_info, _("Birthday"), text); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1268 } else if(!strcmp(child->name, "ADR")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1269 gboolean address_line_added = FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1270 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1271 for(child2 = child->child; child2; child2 = child2->next) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1272 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1273 char *text2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1274 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1275 if(child2->type != XMLNODE_TYPE_TAG) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1276 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1277 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1278 text2 = xmlnode_get_data(child2); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1279 if (text2 == NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1280 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1281 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1282 /* We do this here so that it's not added if all the child |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1283 * elements are empty. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1284 if (!address_line_added) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1285 { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1286 purple_notify_user_info_add_section_header(user_info, _("Address")); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1287 address_line_added = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1288 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1289 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1290 if(!strcmp(child2->name, "POBOX")) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1291 purple_notify_user_info_add_pair(user_info, _("P.O. Box"), text2); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1292 } else if(!strcmp(child2->name, "EXTADR")) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1293 purple_notify_user_info_add_pair(user_info, _("Extended Address"), text2); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1294 } else if(!strcmp(child2->name, "STREET")) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1295 purple_notify_user_info_add_pair(user_info, _("Street Address"), text2); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1296 } else if(!strcmp(child2->name, "LOCALITY")) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1297 purple_notify_user_info_add_pair(user_info, _("Locality"), text2); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1298 } else if(!strcmp(child2->name, "REGION")) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1299 purple_notify_user_info_add_pair(user_info, _("Region"), text2); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1300 } else if(!strcmp(child2->name, "PCODE")) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1301 purple_notify_user_info_add_pair(user_info, _("Postal Code"), text2); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1302 } else if(!strcmp(child2->name, "CTRY") |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1303 || !strcmp(child2->name, "COUNTRY")) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1304 purple_notify_user_info_add_pair(user_info, _("Country"), text2); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1305 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1306 g_free(text2); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1307 } |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1308 |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1309 if (address_line_added) |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1310 purple_notify_user_info_add_section_break(user_info); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1311 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1312 } else if(!strcmp(child->name, "TEL")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1313 char *number; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1314 if((child2 = xmlnode_get_child(child, "NUMBER"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1315 /* show what kind of number it is */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1316 number = xmlnode_get_data(child2); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1317 if(number) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1318 purple_notify_user_info_add_pair(user_info, _("Telephone"), number); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1319 g_free(number); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1320 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1321 } else if((number = xmlnode_get_data(child))) { |
15822 | 1322 /* lots of clients (including purple) do this, but it's |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1323 * out of spec */ |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1324 purple_notify_user_info_add_pair(user_info, _("Telephone"), number); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1325 g_free(number); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1326 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1327 } else if(!strcmp(child->name, "EMAIL")) { |
19730
1b8af105614d
Data in vCards is supposed to be plain text, not HTML. So escape
Mark Doliner <mark@kingant.net>
parents:
19724
diff
changeset
|
1328 char *userid, *escaped; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1329 if((child2 = xmlnode_get_child(child, "USERID"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1330 /* show what kind of email it is */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1331 userid = xmlnode_get_data(child2); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1332 if(userid) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1333 char *mailto; |
19730
1b8af105614d
Data in vCards is supposed to be plain text, not HTML. So escape
Mark Doliner <mark@kingant.net>
parents:
19724
diff
changeset
|
1334 escaped = g_markup_escape_text(userid, -1); |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1335 mailto = g_strdup_printf("<a href=\"mailto:%s\">%s</a>", escaped, escaped); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1336 purple_notify_user_info_add_pair(user_info, _("Email"), mailto); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1337 |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1338 g_free(mailto); |
19730
1b8af105614d
Data in vCards is supposed to be plain text, not HTML. So escape
Mark Doliner <mark@kingant.net>
parents:
19724
diff
changeset
|
1339 g_free(escaped); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1340 g_free(userid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1341 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1342 } else if((userid = xmlnode_get_data(child))) { |
15822 | 1343 /* lots of clients (including purple) do this, but it's |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1344 * out of spec */ |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1345 char *mailto; |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1346 |
19730
1b8af105614d
Data in vCards is supposed to be plain text, not HTML. So escape
Mark Doliner <mark@kingant.net>
parents:
19724
diff
changeset
|
1347 escaped = g_markup_escape_text(userid, -1); |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1348 mailto = g_strdup_printf("<a href=\"mailto:%s\">%s</a>", escaped, escaped); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1349 purple_notify_user_info_add_pair(user_info, _("Email"), mailto); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1350 |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1351 g_free(mailto); |
19730
1b8af105614d
Data in vCards is supposed to be plain text, not HTML. So escape
Mark Doliner <mark@kingant.net>
parents:
19724
diff
changeset
|
1352 g_free(escaped); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1353 g_free(userid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1354 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1355 } else if(!strcmp(child->name, "ORG")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1356 for(child2 = child->child; child2; child2 = child2->next) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1357 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1358 char *text2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1359 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1360 if(child2->type != XMLNODE_TYPE_TAG) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1361 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1362 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1363 text2 = xmlnode_get_data(child2); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1364 if(text2 && !strcmp(child2->name, "ORGNAME")) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1365 purple_notify_user_info_add_pair(user_info, _("Organization Name"), text2); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1366 } else if(text2 && !strcmp(child2->name, "ORGUNIT")) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1367 purple_notify_user_info_add_pair(user_info, _("Organization Unit"), text2); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1368 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1369 g_free(text2); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1370 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1371 } else if(text && !strcmp(child->name, "TITLE")) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1372 purple_notify_user_info_add_pair(user_info, _("Title"), text); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1373 } else if(text && !strcmp(child->name, "ROLE")) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1374 purple_notify_user_info_add_pair(user_info, _("Role"), text); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1375 } else if(text && !strcmp(child->name, "DESC")) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1376 purple_notify_user_info_add_pair(user_info, _("Description"), text); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1377 } else if(!strcmp(child->name, "PHOTO") || |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1378 !strcmp(child->name, "LOGO")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1379 char *bintext = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1380 xmlnode *binval; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1381 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1382 if( ((binval = xmlnode_get_child(child, "BINVAL")) && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1383 (bintext = xmlnode_get_data(binval))) || |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1384 (bintext = xmlnode_get_data(child))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1385 gsize size; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1386 guchar *data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1387 gboolean photo = (strcmp(child->name, "PHOTO") == 0); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1388 |
15822 | 1389 data = purple_base64_decode(bintext, &size); |
16507
e340dc515178
disapproval of revision 'a999246dfcbd33c9494afa445d9562aee5e5457c'
Richard Laager <rlaager@wiktel.com>
parents:
16506
diff
changeset
|
1390 if (data) { |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1391 char *img_text; |
24693
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24692
diff
changeset
|
1392 char *hash; |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1393 |
16507
e340dc515178
disapproval of revision 'a999246dfcbd33c9494afa445d9562aee5e5457c'
Richard Laager <rlaager@wiktel.com>
parents:
16506
diff
changeset
|
1394 jbi->vcard_imgids = g_slist_prepend(jbi->vcard_imgids, GINT_TO_POINTER(purple_imgstore_add_with_id(g_memdup(data, size), size, "logo.png"))); |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1395 img_text = g_strdup_printf("<img id='%d'>", GPOINTER_TO_INT(jbi->vcard_imgids->data)); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1396 |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1397 purple_notify_user_info_add_pair(user_info, (photo ? _("Photo") : _("Logo")), img_text); |
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1398 |
24693
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24692
diff
changeset
|
1399 hash = jabber_calculate_data_sha1sum(data, size); |
16507
e340dc515178
disapproval of revision 'a999246dfcbd33c9494afa445d9562aee5e5457c'
Richard Laager <rlaager@wiktel.com>
parents:
16506
diff
changeset
|
1400 purple_buddy_icons_set_for_user(js->gc->account, bare_jid, |
e340dc515178
disapproval of revision 'a999246dfcbd33c9494afa445d9562aee5e5457c'
Richard Laager <rlaager@wiktel.com>
parents:
16506
diff
changeset
|
1401 data, size, hash); |
24693
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24692
diff
changeset
|
1402 g_free(hash); |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1403 g_free(img_text); |
16507
e340dc515178
disapproval of revision 'a999246dfcbd33c9494afa445d9562aee5e5457c'
Richard Laager <rlaager@wiktel.com>
parents:
16506
diff
changeset
|
1404 } |
24693
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24692
diff
changeset
|
1405 g_free(bintext); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1406 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1407 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1408 g_free(text); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1409 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1410 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1411 |
22450
b53bacc6eb6e
If we receive a Full Name and no nickname, use the Full Name as the serverside alias for an XMPP contact. If we receive just a nickname or both a full name and a nickname, prefer the nickname.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22414
diff
changeset
|
1412 if (serverside_alias) { |
b53bacc6eb6e
If we receive a Full Name and no nickname, use the Full Name as the serverside alias for an XMPP contact. If we receive just a nickname or both a full name and a nickname, prefer the nickname.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22414
diff
changeset
|
1413 /* If we found a serverside alias, set it and tell the core */ |
b53bacc6eb6e
If we receive a Full Name and no nickname, use the Full Name as the serverside alias for an XMPP contact. If we receive just a nickname or both a full name and a nickname, prefer the nickname.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22414
diff
changeset
|
1414 serv_got_alias(js->gc, from, serverside_alias); |
b53bacc6eb6e
If we receive a Full Name and no nickname, use the Full Name as the serverside alias for an XMPP contact. If we receive just a nickname or both a full name and a nickname, prefer the nickname.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22414
diff
changeset
|
1415 if (b) { |
b53bacc6eb6e
If we receive a Full Name and no nickname, use the Full Name as the serverside alias for an XMPP contact. If we receive just a nickname or both a full name and a nickname, prefer the nickname.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22414
diff
changeset
|
1416 purple_blist_node_set_string((PurpleBlistNode*)b, "servernick", serverside_alias); |
b53bacc6eb6e
If we receive a Full Name and no nickname, use the Full Name as the serverside alias for an XMPP contact. If we receive just a nickname or both a full name and a nickname, prefer the nickname.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22414
diff
changeset
|
1417 } |
b53bacc6eb6e
If we receive a Full Name and no nickname, use the Full Name as the serverside alias for an XMPP contact. If we receive just a nickname or both a full name and a nickname, prefer the nickname.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22414
diff
changeset
|
1418 |
b53bacc6eb6e
If we receive a Full Name and no nickname, use the Full Name as the serverside alias for an XMPP contact. If we receive just a nickname or both a full name and a nickname, prefer the nickname.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22414
diff
changeset
|
1419 g_free(serverside_alias); |
b53bacc6eb6e
If we receive a Full Name and no nickname, use the Full Name as the serverside alias for an XMPP contact. If we receive just a nickname or both a full name and a nickname, prefer the nickname.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22414
diff
changeset
|
1420 } |
b53bacc6eb6e
If we receive a Full Name and no nickname, use the Full Name as the serverside alias for an XMPP contact. If we receive just a nickname or both a full name and a nickname, prefer the nickname.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22414
diff
changeset
|
1421 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1422 g_free(bare_jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1423 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1424 jabber_buddy_info_show_if_ready(jbi); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1425 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1426 |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1427 typedef struct _JabberBuddyAvatarUpdateURLInfo { |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1428 JabberStream *js; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1429 char *from; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1430 char *id; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1431 } JabberBuddyAvatarUpdateURLInfo; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1432 |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1433 static void do_buddy_avatar_update_fromurl(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message) { |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1434 JabberBuddyAvatarUpdateURLInfo *info = user_data; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1435 if(!url_text) { |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1436 purple_debug(PURPLE_DEBUG_ERROR, "jabber", |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1437 "do_buddy_avatar_update_fromurl got error \"%s\"", error_message); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1438 return; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1439 } |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1440 |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1441 purple_buddy_icons_set_for_user(purple_connection_get_account(info->js->gc), info->from, (void*)url_text, len, info->id); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1442 g_free(info->from); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1443 g_free(info->id); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1444 g_free(info); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1445 } |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1446 |
17855
0f0e98978d66
Turns out the example in XEP-0084 is wrong. Fixed my implementation to not try to work around an issue that isn't one.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17854
diff
changeset
|
1447 static void do_buddy_avatar_update_data(JabberStream *js, const char *from, xmlnode *items) { |
0f0e98978d66
Turns out the example in XEP-0084 is wrong. Fixed my implementation to not try to work around an issue that isn't one.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17854
diff
changeset
|
1448 xmlnode *item, *data; |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1449 const char *checksum; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1450 char *b64data; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1451 void *img; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1452 size_t size; |
17855
0f0e98978d66
Turns out the example in XEP-0084 is wrong. Fixed my implementation to not try to work around an issue that isn't one.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17854
diff
changeset
|
1453 if(!items) |
0f0e98978d66
Turns out the example in XEP-0084 is wrong. Fixed my implementation to not try to work around an issue that isn't one.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17854
diff
changeset
|
1454 return; |
0f0e98978d66
Turns out the example in XEP-0084 is wrong. Fixed my implementation to not try to work around an issue that isn't one.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17854
diff
changeset
|
1455 |
0f0e98978d66
Turns out the example in XEP-0084 is wrong. Fixed my implementation to not try to work around an issue that isn't one.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17854
diff
changeset
|
1456 item = xmlnode_get_child(items, "item"); |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1457 if(!item) |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1458 return; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1459 |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1460 data = xmlnode_get_child_with_namespace(item,"data",AVATARNAMESPACEDATA); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1461 if(!data) |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1462 return; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1463 |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1464 checksum = xmlnode_get_attrib(item,"id"); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1465 if(!checksum) |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1466 return; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1467 |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1468 b64data = xmlnode_get_data(data); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1469 if(!b64data) |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1470 return; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1471 |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1472 img = purple_base64_decode(b64data, &size); |
20058
5103485b4b26
Plug some memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19755
diff
changeset
|
1473 if(!img) { |
5103485b4b26
Plug some memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19755
diff
changeset
|
1474 g_free(b64data); |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1475 return; |
20058
5103485b4b26
Plug some memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19755
diff
changeset
|
1476 } |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1477 |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1478 purple_buddy_icons_set_for_user(purple_connection_get_account(js->gc), from, img, size, checksum); |
20058
5103485b4b26
Plug some memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19755
diff
changeset
|
1479 g_free(b64data); |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1480 } |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1481 |
17853
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
1482 void jabber_buddy_avatar_update_metadata(JabberStream *js, const char *from, xmlnode *items) { |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1483 PurpleBuddy *buddy = purple_find_buddy(purple_connection_get_account(js->gc), from); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1484 const char *checksum; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1485 xmlnode *item, *metadata; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1486 if(!buddy) |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1487 return; |
17853
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
1488 |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1489 checksum = purple_buddy_icons_get_checksum_for_user(buddy); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1490 item = xmlnode_get_child(items,"item"); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1491 metadata = xmlnode_get_child_with_namespace(item, "metadata", AVATARNAMESPACEMETA); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1492 if(!metadata) |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1493 return; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1494 /* check if we have received a stop */ |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1495 if(xmlnode_get_child(metadata, "stop")) { |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1496 purple_buddy_icons_set_for_user(purple_connection_get_account(js->gc), from, NULL, 0, NULL); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1497 } else { |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1498 xmlnode *info, *goodinfo = NULL; |
24692
915b1cafa3d1
Support an empty <metadata/> element to indicate that a user has no XEP-0084
Paul Aurich <paul@darkrain42.org>
parents:
24564
diff
changeset
|
1499 gboolean has_children = FALSE; |
915b1cafa3d1
Support an empty <metadata/> element to indicate that a user has no XEP-0084
Paul Aurich <paul@darkrain42.org>
parents:
24564
diff
changeset
|
1500 |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1501 /* iterate over all info nodes to get one we can use */ |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1502 for(info = metadata->child; info; info = info->next) { |
24692
915b1cafa3d1
Support an empty <metadata/> element to indicate that a user has no XEP-0084
Paul Aurich <paul@darkrain42.org>
parents:
24564
diff
changeset
|
1503 if(info->type == XMLNODE_TYPE_TAG) |
915b1cafa3d1
Support an empty <metadata/> element to indicate that a user has no XEP-0084
Paul Aurich <paul@darkrain42.org>
parents:
24564
diff
changeset
|
1504 has_children = TRUE; |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1505 if(info->type == XMLNODE_TYPE_TAG && !strcmp(info->name,"info")) { |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1506 const char *type = xmlnode_get_attrib(info,"type"); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1507 const char *id = xmlnode_get_attrib(info,"id"); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1508 |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1509 if(checksum && id && !strcmp(id, checksum)) { |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1510 /* we already have that avatar, so we don't have to do anything */ |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1511 goodinfo = NULL; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1512 break; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1513 } |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1514 /* We'll only pick the png one for now. It's a very nice image format anyways. */ |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1515 if(type && id && !goodinfo && !strcmp(type, "image/png")) |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1516 goodinfo = info; |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1517 } |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1518 } |
24692
915b1cafa3d1
Support an empty <metadata/> element to indicate that a user has no XEP-0084
Paul Aurich <paul@darkrain42.org>
parents:
24564
diff
changeset
|
1519 if(has_children == FALSE) { |
915b1cafa3d1
Support an empty <metadata/> element to indicate that a user has no XEP-0084
Paul Aurich <paul@darkrain42.org>
parents:
24564
diff
changeset
|
1520 purple_buddy_icons_set_for_user(purple_connection_get_account(js->gc), from, NULL, 0, NULL); |
915b1cafa3d1
Support an empty <metadata/> element to indicate that a user has no XEP-0084
Paul Aurich <paul@darkrain42.org>
parents:
24564
diff
changeset
|
1521 } else if(goodinfo) { |
23686
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23358
diff
changeset
|
1522 const char *url = xmlnode_get_attrib(goodinfo, "url"); |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1523 const char *id = xmlnode_get_attrib(goodinfo,"id"); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1524 |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1525 /* the avatar might either be stored in a pep node, or on a HTTP/HTTPS URL */ |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1526 if(!url) |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1527 jabber_pep_request_item(js, from, AVATARNAMESPACEDATA, id, do_buddy_avatar_update_data); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1528 else { |
23686
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23358
diff
changeset
|
1529 PurpleUtilFetchUrlData *url_data; |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1530 JabberBuddyAvatarUpdateURLInfo *info = g_new0(JabberBuddyAvatarUpdateURLInfo, 1); |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1531 info->js = js; |
23686
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23358
diff
changeset
|
1532 |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23358
diff
changeset
|
1533 url_data = purple_util_fetch_url_len(url, TRUE, NULL, TRUE, |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23358
diff
changeset
|
1534 MAX_HTTP_BUDDYICON_BYTES, |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23358
diff
changeset
|
1535 do_buddy_avatar_update_fromurl, info); |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23358
diff
changeset
|
1536 if (url_data) { |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23358
diff
changeset
|
1537 info->from = g_strdup(from); |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23358
diff
changeset
|
1538 info->id = g_strdup(id); |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23358
diff
changeset
|
1539 js->url_datas = g_slist_prepend(js->url_datas, url_data); |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23358
diff
changeset
|
1540 } else |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23358
diff
changeset
|
1541 g_free(info); |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23358
diff
changeset
|
1542 |
17854
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1543 } |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1544 } |
5ab3c6bb95b4
Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17853
diff
changeset
|
1545 } |
17853
7754d39d70c5
Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17836
diff
changeset
|
1546 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1547 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1548 static void jabber_buddy_info_resource_free(gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1549 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1550 JabberBuddyInfoResource *jbri = data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1551 g_free(jbri); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1552 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1553 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1554 static void jabber_version_parse(JabberStream *js, xmlnode *packet, gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1555 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1556 JabberBuddyInfo *jbi = data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1557 const char *type, *id, *from; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1558 xmlnode *query; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1559 char *resource_name; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1560 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1561 g_return_if_fail(jbi != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1562 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1563 type = xmlnode_get_attrib(packet, "type"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1564 id = xmlnode_get_attrib(packet, "id"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1565 from = xmlnode_get_attrib(packet, "from"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1566 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1567 jabber_buddy_info_remove_id(jbi, id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1568 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1569 if(!from) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1570 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1571 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1572 resource_name = jabber_get_resource(from); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1573 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1574 if(resource_name) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1575 if(type && !strcmp(type, "result")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1576 if((query = xmlnode_get_child(packet, "query"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1577 JabberBuddyResource *jbr = jabber_buddy_find_resource(jbi->jb, resource_name); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1578 if(jbr) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1579 xmlnode *node; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1580 if((node = xmlnode_get_child(query, "name"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1581 jbr->client.name = xmlnode_get_data(node); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1582 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1583 if((node = xmlnode_get_child(query, "version"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1584 jbr->client.version = xmlnode_get_data(node); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1585 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1586 if((node = xmlnode_get_child(query, "os"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1587 jbr->client.os = xmlnode_get_data(node); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1588 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1589 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1590 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1591 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1592 g_free(resource_name); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1593 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1594 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1595 jabber_buddy_info_show_if_ready(jbi); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1596 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1597 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1598 static void jabber_last_parse(JabberStream *js, xmlnode *packet, gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1599 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1600 JabberBuddyInfo *jbi = data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1601 xmlnode *query; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1602 char *resource_name; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1603 const char *type, *id, *from, *seconds; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1604 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1605 g_return_if_fail(jbi != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1606 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1607 type = xmlnode_get_attrib(packet, "type"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1608 id = xmlnode_get_attrib(packet, "id"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1609 from = xmlnode_get_attrib(packet, "from"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1610 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1611 jabber_buddy_info_remove_id(jbi, id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1612 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1613 if(!from) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1614 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1615 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1616 resource_name = jabber_get_resource(from); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1617 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1618 if(resource_name) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1619 if(type && !strcmp(type, "result")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1620 if((query = xmlnode_get_child(packet, "query"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1621 seconds = xmlnode_get_attrib(query, "seconds"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1622 if(seconds) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1623 char *end = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1624 long sec = strtol(seconds, &end, 10); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1625 if(end != seconds) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1626 JabberBuddyInfoResource *jbir = g_hash_table_lookup(jbi->resources, resource_name); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1627 if(jbir) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1628 jbir->idle_seconds = sec; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1629 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1630 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1631 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1632 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1633 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1634 g_free(resource_name); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1635 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1636 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1637 jabber_buddy_info_show_if_ready(jbi); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1638 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1639 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1640 void jabber_buddy_remove_all_pending_buddy_info_requests(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1641 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1642 if (js->pending_buddy_info_requests) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1643 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1644 JabberBuddyInfo *jbi; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1645 GSList *l = js->pending_buddy_info_requests; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1646 while (l) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1647 jbi = l->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1648 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1649 g_slist_free(jbi->ids); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1650 jabber_buddy_info_destroy(jbi); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1651 |
15665
6eda87b08cdf
Don't access the list element after it has been freed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15626
diff
changeset
|
1652 l = l->next; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1653 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1654 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1655 g_slist_free(js->pending_buddy_info_requests); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1656 js->pending_buddy_info_requests = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1657 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1658 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1659 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1660 static gboolean jabber_buddy_get_info_timeout(gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1661 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1662 JabberBuddyInfo *jbi = data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1663 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1664 /* remove the pending callbacks */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1665 while(jbi->ids) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1666 char *id = jbi->ids->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1667 jabber_iq_remove_callback_by_id(jbi->js, id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1668 jbi->ids = g_slist_remove(jbi->ids, id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1669 g_free(id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1670 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1671 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1672 jbi->js->pending_buddy_info_requests = g_slist_remove(jbi->js->pending_buddy_info_requests, jbi); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1673 jbi->timeout_handle = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1674 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1675 jabber_buddy_info_show_if_ready(jbi); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1676 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1677 return FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1678 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1679 |
16979
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1680 static gboolean _client_is_blacklisted(JabberBuddyResource *jbr, const char *ns) |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1681 { |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1682 /* can't be blacklisted if we don't know what you're running yet */ |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1683 if(!jbr->client.name) |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1684 return FALSE; |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1685 |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1686 if(!strcmp(ns, "jabber:iq:last")) { |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1687 if(!strcmp(jbr->client.name, "Trillian")) { |
20092
ab3c87375b17
another day, another irritating workaround
Nathan Walp <nwalp@pidgin.im>
parents:
20058
diff
changeset
|
1688 /* verified by nwalp 2007/05/09 */ |
ab3c87375b17
another day, another irritating workaround
Nathan Walp <nwalp@pidgin.im>
parents:
20058
diff
changeset
|
1689 if(!strcmp(jbr->client.version, "3.1.0.121") || |
ab3c87375b17
another day, another irritating workaround
Nathan Walp <nwalp@pidgin.im>
parents:
20058
diff
changeset
|
1690 /* verified by nwalp 2007/09/19 */ |
ab3c87375b17
another day, another irritating workaround
Nathan Walp <nwalp@pidgin.im>
parents:
20058
diff
changeset
|
1691 !strcmp(jbr->client.version, "3.1.7.0")) { |
16979
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1692 return TRUE; |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1693 } |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1694 } |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1695 } |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1696 |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1697 return FALSE; |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1698 } |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1699 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1700 static void jabber_buddy_get_info_for_jid(JabberStream *js, const char *jid) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1701 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1702 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1703 xmlnode *vcard; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1704 GList *resources; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1705 JabberBuddy *jb; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1706 JabberBuddyInfo *jbi; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1707 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1708 jb = jabber_buddy_find(js, jid, TRUE); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1709 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1710 /* invalid JID */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1711 if(!jb) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1712 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1713 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1714 jbi = g_new0(JabberBuddyInfo, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1715 jbi->jid = g_strdup(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1716 jbi->js = js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1717 jbi->jb = jb; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1718 jbi->resources = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, jabber_buddy_info_resource_free); |
23206
646e96069fcd
Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents:
23180
diff
changeset
|
1719 jbi->user_info = purple_notify_user_info_new(); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1720 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1721 iq = jabber_iq_new(js, JABBER_IQ_GET); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1722 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1723 xmlnode_set_attrib(iq->node, "to", jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1724 vcard = xmlnode_new_child(iq->node, "vCard"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1725 xmlnode_set_namespace(vcard, "vcard-temp"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1726 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1727 jabber_iq_set_callback(iq, jabber_vcard_parse, jbi); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1728 jbi->ids = g_slist_prepend(jbi->ids, g_strdup(iq->id)); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1729 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1730 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1731 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1732 for(resources = jb->resources; resources; resources = resources->next) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1733 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1734 JabberBuddyResource *jbr = resources->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1735 JabberBuddyInfoResource *jbir; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1736 char *full_jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1737 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1738 if ((strchr(jid, '/') == NULL) && (jbr->name != NULL)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1739 full_jid = g_strdup_printf("%s/%s", jid, jbr->name); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1740 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1741 full_jid = g_strdup(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1742 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1743 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1744 if (jbr->name != NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1745 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1746 jbir = g_new0(JabberBuddyInfoResource, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1747 g_hash_table_insert(jbi->resources, g_strdup(jbr->name), jbir); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1748 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1749 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1750 if(!jbr->client.name) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1751 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:version"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1752 xmlnode_set_attrib(iq->node, "to", full_jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1753 jabber_iq_set_callback(iq, jabber_version_parse, jbi); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1754 jbi->ids = g_slist_prepend(jbi->ids, g_strdup(iq->id)); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1755 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1756 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1757 |
16979
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1758 /* this is to fix the feeling of irritation I get when trying |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1759 * to get info on a friend running Trillian, which doesn't |
16995 | 1760 * respond (with an error or otherwise) to jabber:iq:last |
16979
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1761 * requests. There are a number of Trillian users in my |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1762 * office. */ |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1763 if(!_client_is_blacklisted(jbr, "jabber:iq:last")) { |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1764 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:last"); |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1765 xmlnode_set_attrib(iq->node, "to", full_jid); |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1766 jabber_iq_set_callback(iq, jabber_last_parse, jbi); |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1767 jbi->ids = g_slist_prepend(jbi->ids, g_strdup(iq->id)); |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1768 jabber_iq_send(iq); |
f8d0c9bbb9ae
gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents:
16951
diff
changeset
|
1769 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1770 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1771 g_free(full_jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1772 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1773 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1774 js->pending_buddy_info_requests = g_slist_prepend(js->pending_buddy_info_requests, jbi); |
15822 | 1775 jbi->timeout_handle = purple_timeout_add(30000, jabber_buddy_get_info_timeout, jbi); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1776 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1777 |
15822 | 1778 void jabber_buddy_get_info(PurpleConnection *gc, const char *who) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1779 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1780 JabberStream *js = gc->proto_data; |
24564
5f597914cd01
Don't try to get info for MUC's. Allow getting info for regular JID's and
Paul Aurich <paul@darkrain42.org>
parents:
24562
diff
changeset
|
1781 JabberID *jid = jabber_id_new(who); |
5f597914cd01
Don't try to get info for MUC's. Allow getting info for regular JID's and
Paul Aurich <paul@darkrain42.org>
parents:
24562
diff
changeset
|
1782 |
5f597914cd01
Don't try to get info for MUC's. Allow getting info for regular JID's and
Paul Aurich <paul@darkrain42.org>
parents:
24562
diff
changeset
|
1783 if (!jid) |
5f597914cd01
Don't try to get info for MUC's. Allow getting info for regular JID's and
Paul Aurich <paul@darkrain42.org>
parents:
24562
diff
changeset
|
1784 return; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1785 |
24564
5f597914cd01
Don't try to get info for MUC's. Allow getting info for regular JID's and
Paul Aurich <paul@darkrain42.org>
parents:
24562
diff
changeset
|
1786 if (jabber_chat_find(js, jid->node, jid->domain)) { |
5f597914cd01
Don't try to get info for MUC's. Allow getting info for regular JID's and
Paul Aurich <paul@darkrain42.org>
parents:
24562
diff
changeset
|
1787 /* For a conversation, include the resource (indicates the user). */ |
5f597914cd01
Don't try to get info for MUC's. Allow getting info for regular JID's and
Paul Aurich <paul@darkrain42.org>
parents:
24562
diff
changeset
|
1788 jabber_buddy_get_info_for_jid(js, who); |
5f597914cd01
Don't try to get info for MUC's. Allow getting info for regular JID's and
Paul Aurich <paul@darkrain42.org>
parents:
24562
diff
changeset
|
1789 } else { |
5f597914cd01
Don't try to get info for MUC's. Allow getting info for regular JID's and
Paul Aurich <paul@darkrain42.org>
parents:
24562
diff
changeset
|
1790 char *bare_jid = jabber_get_bare_jid(who); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1791 jabber_buddy_get_info_for_jid(js, bare_jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1792 g_free(bare_jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1793 } |
24564
5f597914cd01
Don't try to get info for MUC's. Allow getting info for regular JID's and
Paul Aurich <paul@darkrain42.org>
parents:
24562
diff
changeset
|
1794 |
5f597914cd01
Don't try to get info for MUC's. Allow getting info for regular JID's and
Paul Aurich <paul@darkrain42.org>
parents:
24562
diff
changeset
|
1795 jabber_id_free(jid); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1796 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1797 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1798 static void jabber_buddy_set_invisibility(JabberStream *js, const char *who, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1799 gboolean invisible) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1800 { |
15822 | 1801 PurplePresence *gpresence; |
1802 PurpleAccount *account; | |
1803 PurpleStatus *status; | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1804 JabberBuddy *jb = jabber_buddy_find(js, who, TRUE); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1805 xmlnode *presence; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1806 JabberBuddyState state; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1807 char *msg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1808 int priority; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1809 |
15822 | 1810 account = purple_connection_get_account(js->gc); |
1811 gpresence = purple_account_get_presence(account); | |
1812 status = purple_presence_get_active_status(gpresence); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1813 |
15822 | 1814 purple_status_to_jabber(status, &state, &msg, &priority); |
17836
95affacf6f82
Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents:
16995
diff
changeset
|
1815 presence = jabber_presence_create_js(js, state, msg, priority); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1816 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1817 g_free(msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1818 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1819 xmlnode_set_attrib(presence, "to", who); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1820 if(invisible) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1821 xmlnode_set_attrib(presence, "type", "invisible"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1822 jb->invisible |= JABBER_INVIS_BUDDY; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1823 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1824 jb->invisible &= ~JABBER_INVIS_BUDDY; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1825 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1826 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1827 jabber_send(js, presence); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1828 xmlnode_free(presence); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1829 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1830 |
15822 | 1831 static void jabber_buddy_make_invisible(PurpleBlistNode *node, gpointer data) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1832 { |
15822 | 1833 PurpleBuddy *buddy; |
1834 PurpleConnection *gc; | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1835 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1836 |
15822 | 1837 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1838 |
15822 | 1839 buddy = (PurpleBuddy *) node; |
1840 gc = purple_account_get_connection(buddy->account); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1841 js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1842 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1843 jabber_buddy_set_invisibility(js, buddy->name, TRUE); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1844 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1845 |
15822 | 1846 static void jabber_buddy_make_visible(PurpleBlistNode *node, gpointer data) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1847 { |
15822 | 1848 PurpleBuddy *buddy; |
1849 PurpleConnection *gc; | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1850 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1851 |
15822 | 1852 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1853 |
15822 | 1854 buddy = (PurpleBuddy *) node; |
1855 gc = purple_account_get_connection(buddy->account); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1856 js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1857 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1858 jabber_buddy_set_invisibility(js, buddy->name, FALSE); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1859 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1860 |
15822 | 1861 static void jabber_buddy_cancel_presence_notification(PurpleBlistNode *node, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1862 gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1863 { |
15822 | 1864 PurpleBuddy *buddy; |
1865 PurpleConnection *gc; | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1866 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1867 |
15822 | 1868 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1869 |
15822 | 1870 buddy = (PurpleBuddy *) node; |
1871 gc = purple_account_get_connection(buddy->account); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1872 js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1873 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1874 /* I wonder if we should prompt the user before doing this */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1875 jabber_presence_subscription_set(js, buddy->name, "unsubscribed"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1876 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1877 |
15822 | 1878 static void jabber_buddy_rerequest_auth(PurpleBlistNode *node, gpointer data) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1879 { |
15822 | 1880 PurpleBuddy *buddy; |
1881 PurpleConnection *gc; | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1882 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1883 |
15822 | 1884 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1885 |
15822 | 1886 buddy = (PurpleBuddy *) node; |
1887 gc = purple_account_get_connection(buddy->account); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1888 js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1889 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1890 jabber_presence_subscription_set(js, buddy->name, "subscribe"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1891 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1892 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1893 |
15822 | 1894 static void jabber_buddy_unsubscribe(PurpleBlistNode *node, gpointer data) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1895 { |
15822 | 1896 PurpleBuddy *buddy; |
1897 PurpleConnection *gc; | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1898 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1899 |
15822 | 1900 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1901 |
15822 | 1902 buddy = (PurpleBuddy *) node; |
1903 gc = purple_account_get_connection(buddy->account); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1904 js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1905 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1906 jabber_presence_subscription_set(js, buddy->name, "unsubscribe"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1907 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1908 |
17874
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1909 static void jabber_buddy_login(PurpleBlistNode *node, gpointer data) { |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1910 if(PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1911 /* simply create a directed presence of the current status */ |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1912 PurpleBuddy *buddy = (PurpleBuddy *) node; |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1913 PurpleConnection *gc = purple_account_get_connection(buddy->account); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1914 JabberStream *js = gc->proto_data; |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1915 PurpleAccount *account = purple_connection_get_account(gc); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1916 PurplePresence *gpresence = purple_account_get_presence(account); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1917 PurpleStatus *status = purple_presence_get_active_status(gpresence); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1918 xmlnode *presence; |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1919 JabberBuddyState state; |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1920 char *msg; |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1921 int priority; |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1922 |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1923 purple_status_to_jabber(status, &state, &msg, &priority); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1924 presence = jabber_presence_create_js(js, state, msg, priority); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1925 |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1926 g_free(msg); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1927 |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1928 xmlnode_set_attrib(presence, "to", buddy->name); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1929 |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1930 jabber_send(js, presence); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1931 xmlnode_free(presence); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1932 } |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1933 } |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1934 |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1935 static void jabber_buddy_logout(PurpleBlistNode *node, gpointer data) { |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1936 if(PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1937 /* simply create a directed unavailable presence */ |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1938 PurpleBuddy *buddy = (PurpleBuddy *) node; |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1939 JabberStream *js = purple_account_get_connection(buddy->account)->proto_data; |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1940 xmlnode *presence; |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1941 |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1942 presence = jabber_presence_create_js(js, JABBER_BUDDY_STATE_UNAVAILABLE, NULL, 0); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1943 |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1944 xmlnode_set_attrib(presence, "to", buddy->name); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1945 |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1946 jabber_send(js, presence); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1947 xmlnode_free(presence); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1948 } |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
1949 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1950 |
15822 | 1951 static GList *jabber_buddy_menu(PurpleBuddy *buddy) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1952 { |
15822 | 1953 PurpleConnection *gc = purple_account_get_connection(buddy->account); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1954 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1955 JabberBuddy *jb = jabber_buddy_find(js, buddy->name, TRUE); |
17882
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
1956 GList *jbrs; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1957 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1958 GList *m = NULL; |
15822 | 1959 PurpleMenuAction *act; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1960 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1961 if(!jb) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1962 return m; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1963 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1964 /* XXX: fix the NOT ME below */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1965 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1966 if(js->protocol_version == JABBER_PROTO_0_9 /* && NOT ME */) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1967 if(jb->invisible & JABBER_INVIS_BUDDY) { |
15822 | 1968 act = purple_menu_action_new(_("Un-hide From"), |
1969 PURPLE_CALLBACK(jabber_buddy_make_visible), | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1970 NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1971 } else { |
15822 | 1972 act = purple_menu_action_new(_("Temporarily Hide From"), |
1973 PURPLE_CALLBACK(jabber_buddy_make_invisible), | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1974 NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1975 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1976 m = g_list_append(m, act); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1977 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1978 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1979 if(jb->subscription & JABBER_SUB_FROM /* && NOT ME */) { |
15822 | 1980 act = purple_menu_action_new(_("Cancel Presence Notification"), |
1981 PURPLE_CALLBACK(jabber_buddy_cancel_presence_notification), | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1982 NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1983 m = g_list_append(m, act); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1984 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1985 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1986 if(!(jb->subscription & JABBER_SUB_TO)) { |
15822 | 1987 act = purple_menu_action_new(_("(Re-)Request authorization"), |
1988 PURPLE_CALLBACK(jabber_buddy_rerequest_auth), | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1989 NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1990 m = g_list_append(m, act); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1991 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1992 } else /* if(NOT ME) */{ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1993 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1994 /* shouldn't this just happen automatically when the buddy is |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1995 removed? */ |
15822 | 1996 act = purple_menu_action_new(_("Unsubscribe"), |
1997 PURPLE_CALLBACK(jabber_buddy_unsubscribe), | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1998 NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1999 m = g_list_append(m, act); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2000 } |
17874
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2001 |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2002 /* |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2003 * This if-condition implements parts of XEP-0100: Gateway Interaction |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2004 * |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2005 * According to stpeter, there is no way to know if a jid on the roster is a gateway without sending a disco#info. |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2006 * However, since the gateway might appear offline to us, we cannot get that information. Therefore, I just assume |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2007 * that gateways on the roster can be identified by having no '@' in their jid. This is a faily safe assumption, since |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2008 * people don't tend to have a server or other service there. |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2009 */ |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2010 if (g_utf8_strchr(buddy->name, -1, '@') == NULL) { |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2011 act = purple_menu_action_new(_("Log In"), |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2012 PURPLE_CALLBACK(jabber_buddy_login), |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2013 NULL, NULL); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2014 m = g_list_append(m, act); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2015 act = purple_menu_action_new(_("Log Out"), |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2016 PURPLE_CALLBACK(jabber_buddy_logout), |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2017 NULL, NULL); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2018 m = g_list_append(m, act); |
906ed2836a04
Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17873
diff
changeset
|
2019 } |
17882
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
2020 |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
2021 /* add all ad hoc commands to the action menu */ |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
2022 for(jbrs = jb->resources; jbrs; jbrs = g_list_next(jbrs)) { |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
2023 JabberBuddyResource *jbr = jbrs->data; |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
2024 GList *commands; |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
2025 if (!jbr->commands) |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
2026 continue; |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
2027 for(commands = jbr->commands; commands; commands = g_list_next(commands)) { |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
2028 JabberAdHocCommands *cmd = commands->data; |
17884
feac55968392
Now all ad-hoc commands have to be sent through jabber_adhoc_execute to be properly executed (including the form steps). This cleans up the code a bit, and avoids DOS attacks by flooding the client with malicious ad-hoc command forms that were not requested.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17882
diff
changeset
|
2029 act = purple_menu_action_new(cmd->name, PURPLE_CALLBACK(jabber_adhoc_execute_action), cmd, NULL); |
17882
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
2030 m = g_list_append(m, act); |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
2031 } |
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17874
diff
changeset
|
2032 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2033 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2034 return m; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2035 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2036 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2037 GList * |
15822 | 2038 jabber_blist_node_menu(PurpleBlistNode *node) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2039 { |
15822 | 2040 if(PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
2041 return jabber_buddy_menu((PurpleBuddy *) node); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2042 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2043 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2044 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2045 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2046 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2047 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2048 const char * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2049 jabber_buddy_state_get_name(JabberBuddyState state) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2050 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2051 switch(state) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2052 case JABBER_BUDDY_STATE_UNKNOWN: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2053 return _("Unknown"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2054 case JABBER_BUDDY_STATE_ERROR: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2055 return _("Error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2056 case JABBER_BUDDY_STATE_UNAVAILABLE: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2057 return _("Offline"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2058 case JABBER_BUDDY_STATE_ONLINE: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2059 return _("Available"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2060 case JABBER_BUDDY_STATE_CHAT: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2061 return _("Chatty"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2062 case JABBER_BUDDY_STATE_AWAY: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2063 return _("Away"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2064 case JABBER_BUDDY_STATE_XA: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2065 return _("Extended Away"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2066 case JABBER_BUDDY_STATE_DND: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2067 return _("Do Not Disturb"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2068 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2069 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2070 return _("Unknown"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2071 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2072 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2073 JabberBuddyState jabber_buddy_status_id_get_state(const char *id) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2074 if(!id) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2075 return JABBER_BUDDY_STATE_UNKNOWN; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2076 if(!strcmp(id, "available")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2077 return JABBER_BUDDY_STATE_ONLINE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2078 if(!strcmp(id, "freeforchat")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2079 return JABBER_BUDDY_STATE_CHAT; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2080 if(!strcmp(id, "away")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2081 return JABBER_BUDDY_STATE_AWAY; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2082 if(!strcmp(id, "extended_away")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2083 return JABBER_BUDDY_STATE_XA; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2084 if(!strcmp(id, "dnd")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2085 return JABBER_BUDDY_STATE_DND; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2086 if(!strcmp(id, "offline")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2087 return JABBER_BUDDY_STATE_UNAVAILABLE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2088 if(!strcmp(id, "error")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2089 return JABBER_BUDDY_STATE_ERROR; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2090 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2091 return JABBER_BUDDY_STATE_UNKNOWN; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2092 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2093 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2094 JabberBuddyState jabber_buddy_show_get_state(const char *id) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2095 if(!id) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2096 return JABBER_BUDDY_STATE_UNKNOWN; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2097 if(!strcmp(id, "available")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2098 return JABBER_BUDDY_STATE_ONLINE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2099 if(!strcmp(id, "chat")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2100 return JABBER_BUDDY_STATE_CHAT; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2101 if(!strcmp(id, "away")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2102 return JABBER_BUDDY_STATE_AWAY; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2103 if(!strcmp(id, "xa")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2104 return JABBER_BUDDY_STATE_XA; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2105 if(!strcmp(id, "dnd")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2106 return JABBER_BUDDY_STATE_DND; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2107 if(!strcmp(id, "offline")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2108 return JABBER_BUDDY_STATE_UNAVAILABLE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2109 if(!strcmp(id, "error")) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2110 return JABBER_BUDDY_STATE_ERROR; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2111 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2112 return JABBER_BUDDY_STATE_UNKNOWN; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2113 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2114 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2115 const char *jabber_buddy_state_get_show(JabberBuddyState state) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2116 switch(state) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2117 case JABBER_BUDDY_STATE_CHAT: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2118 return "chat"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2119 case JABBER_BUDDY_STATE_AWAY: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2120 return "away"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2121 case JABBER_BUDDY_STATE_XA: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2122 return "xa"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2123 case JABBER_BUDDY_STATE_DND: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2124 return "dnd"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2125 case JABBER_BUDDY_STATE_ONLINE: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2126 return "available"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2127 case JABBER_BUDDY_STATE_UNKNOWN: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2128 case JABBER_BUDDY_STATE_ERROR: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2129 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2130 case JABBER_BUDDY_STATE_UNAVAILABLE: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2131 return "offline"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2132 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2133 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2134 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2135 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2136 const char *jabber_buddy_state_get_status_id(JabberBuddyState state) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2137 switch(state) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2138 case JABBER_BUDDY_STATE_CHAT: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2139 return "freeforchat"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2140 case JABBER_BUDDY_STATE_AWAY: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2141 return "away"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2142 case JABBER_BUDDY_STATE_XA: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2143 return "extended_away"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2144 case JABBER_BUDDY_STATE_DND: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2145 return "dnd"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2146 case JABBER_BUDDY_STATE_ONLINE: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2147 return "available"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2148 case JABBER_BUDDY_STATE_UNKNOWN: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2149 return "available"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2150 case JABBER_BUDDY_STATE_ERROR: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2151 return "error"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2152 case JABBER_BUDDY_STATE_UNAVAILABLE: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2153 return "offline"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2154 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2155 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2156 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2157 |
15822 | 2158 static void user_search_result_add_buddy_cb(PurpleConnection *gc, GList *row, void *user_data) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2159 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2160 /* XXX find out the jid */ |
15822 | 2161 purple_blist_request_add_buddy(purple_connection_get_account(gc), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2162 g_list_nth_data(row, 0), NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2163 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2164 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2165 static void user_search_result_cb(JabberStream *js, xmlnode *packet, gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2166 { |
15822 | 2167 PurpleNotifySearchResults *results; |
2168 PurpleNotifySearchColumn *column; | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2169 xmlnode *x, *query, *item, *field; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2170 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2171 /* XXX error checking? */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2172 if(!(query = xmlnode_get_child(packet, "query"))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2173 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2174 |
15822 | 2175 results = purple_notify_searchresults_new(); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2176 if((x = xmlnode_get_child_with_namespace(query, "x", "jabber:x:data"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2177 xmlnode *reported; |
19755
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2178 GSList *column_vars = NULL; |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2179 |
15822 | 2180 purple_debug_info("jabber", "new-skool\n"); |
19755
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2181 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2182 if((reported = xmlnode_get_child(x, "reported"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2183 xmlnode *field = xmlnode_get_child(reported, "field"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2184 while(field) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2185 const char *var = xmlnode_get_attrib(field, "var"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2186 const char *label = xmlnode_get_attrib(field, "label"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2187 if(var) { |
15822 | 2188 column = purple_notify_searchresults_column_new(label ? label : var); |
2189 purple_notify_searchresults_column_add(results, column); | |
19755
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2190 column_vars = g_slist_append(column_vars, (char *)var); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2191 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2192 field = xmlnode_get_next_twin(field); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2193 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2194 } |
19755
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2195 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2196 item = xmlnode_get_child(x, "item"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2197 while(item) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2198 GList *row = NULL; |
19755
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2199 GSList *l; |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2200 xmlnode *valuenode; |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2201 const char *var; |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2202 |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2203 for (l = column_vars; l != NULL; l = l->next) { |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2204 /* |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2205 * Build a row containing the strings that correspond |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2206 * to each column of the search results. |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2207 */ |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2208 for (field = xmlnode_get_child(item, "field"); |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2209 field != NULL; |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2210 field = xmlnode_get_next_twin(field)) |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2211 { |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2212 if ((var = xmlnode_get_attrib(field, "var")) && |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2213 !strcmp(var, l->data) && |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2214 (valuenode = xmlnode_get_child(field, "value"))) |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2215 { |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2216 char *value = xmlnode_get_data(valuenode); |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2217 row = g_list_append(row, value); |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2218 break; |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2219 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2220 } |
19755
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2221 if (field == NULL) |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2222 /* No data for this column */ |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2223 row = g_list_append(row, NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2224 } |
15822 | 2225 purple_notify_searchresults_row_add(results, row); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2226 item = xmlnode_get_next_twin(item); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2227 } |
19755
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2228 |
cd067497cbe0
Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents:
19730
diff
changeset
|
2229 g_slist_free(column_vars); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2230 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2231 /* old skool */ |
15822 | 2232 purple_debug_info("jabber", "old-skool\n"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2233 |
15822 | 2234 column = purple_notify_searchresults_column_new(_("JID")); |
2235 purple_notify_searchresults_column_add(results, column); | |
2236 column = purple_notify_searchresults_column_new(_("First Name")); | |
2237 purple_notify_searchresults_column_add(results, column); | |
2238 column = purple_notify_searchresults_column_new(_("Last Name")); | |
2239 purple_notify_searchresults_column_add(results, column); | |
2240 column = purple_notify_searchresults_column_new(_("Nickname")); | |
2241 purple_notify_searchresults_column_add(results, column); | |
23180
e0bcb8cfda74
Use "email" and "Email" consistently. This is potentially controversial,
Richard Laager <rlaager@wiktel.com>
parents:
22861
diff
changeset
|
2242 column = purple_notify_searchresults_column_new(_("Email")); |
15822 | 2243 purple_notify_searchresults_column_add(results, column); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2244 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2245 for(item = xmlnode_get_child(query, "item"); item; item = xmlnode_get_next_twin(item)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2246 const char *jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2247 xmlnode *node; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2248 GList *row = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2249 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2250 if(!(jid = xmlnode_get_attrib(item, "jid"))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2251 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2252 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2253 row = g_list_append(row, g_strdup(jid)); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2254 node = xmlnode_get_child(item, "first"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2255 row = g_list_append(row, node ? xmlnode_get_data(node) : NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2256 node = xmlnode_get_child(item, "last"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2257 row = g_list_append(row, node ? xmlnode_get_data(node) : NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2258 node = xmlnode_get_child(item, "nick"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2259 row = g_list_append(row, node ? xmlnode_get_data(node) : NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2260 node = xmlnode_get_child(item, "email"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2261 row = g_list_append(row, node ? xmlnode_get_data(node) : NULL); |
22486
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22450
diff
changeset
|
2262 purple_debug_info("jabber", "row=%p\n", row); |
15822 | 2263 purple_notify_searchresults_row_add(results, row); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2264 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2265 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2266 |
15822 | 2267 purple_notify_searchresults_button_add(results, PURPLE_NOTIFY_BUTTON_ADD, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2268 user_search_result_add_buddy_cb); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2269 |
15822 | 2270 purple_notify_searchresults(js->gc, NULL, NULL, _("The following are the results of your search"), results, NULL, NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2271 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2272 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2273 static void user_search_x_data_cb(JabberStream *js, xmlnode *result, gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2274 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2275 xmlnode *query; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2276 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2277 char *dir_server = data; |
21120
0cc12e6909e2
don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents:
21113
diff
changeset
|
2278 const char *type; |
0cc12e6909e2
don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents:
21113
diff
changeset
|
2279 |
0cc12e6909e2
don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents:
21113
diff
changeset
|
2280 /* if they've cancelled the search, we're |
0cc12e6909e2
don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents:
21113
diff
changeset
|
2281 * just going to get an error if we send |
0cc12e6909e2
don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents:
21113
diff
changeset
|
2282 * a cancel, so skip it */ |
0cc12e6909e2
don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents:
21113
diff
changeset
|
2283 type = xmlnode_get_attrib(result, "type"); |
0cc12e6909e2
don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents:
21113
diff
changeset
|
2284 if(type && !strcmp(type, "cancel")) { |
0cc12e6909e2
don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents:
21113
diff
changeset
|
2285 g_free(dir_server); |
0cc12e6909e2
don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents:
21113
diff
changeset
|
2286 return; |
0cc12e6909e2
don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents:
21113
diff
changeset
|
2287 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2288 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2289 iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:search"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2290 query = xmlnode_get_child(iq->node, "query"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2291 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2292 xmlnode_insert_child(query, result); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2293 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2294 jabber_iq_set_callback(iq, user_search_result_cb, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2295 xmlnode_set_attrib(iq->node, "to", dir_server); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2296 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2297 g_free(dir_server); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2298 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2299 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2300 struct user_search_info { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2301 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2302 char *directory_server; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2303 }; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2304 |
15822 | 2305 static void user_search_cancel_cb(struct user_search_info *usi, PurpleRequestFields *fields) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2306 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2307 g_free(usi->directory_server); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2308 g_free(usi); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2309 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2310 |
15822 | 2311 static void user_search_cb(struct user_search_info *usi, PurpleRequestFields *fields) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2312 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2313 JabberStream *js = usi->js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2314 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2315 xmlnode *query; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2316 GList *groups, *flds; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2317 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2318 iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:search"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2319 query = xmlnode_get_child(iq->node, "query"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2320 |
15822 | 2321 for(groups = purple_request_fields_get_groups(fields); groups; groups = groups->next) { |
2322 for(flds = purple_request_field_group_get_fields(groups->data); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2323 flds; flds = flds->next) { |
15822 | 2324 PurpleRequestField *field = flds->data; |
2325 const char *id = purple_request_field_get_id(field); | |
2326 const char *value = purple_request_field_string_get_value(field); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2327 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2328 if(value && (!strcmp(id, "first") || !strcmp(id, "last") || !strcmp(id, "nick") || !strcmp(id, "email"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2329 xmlnode *y = xmlnode_new_child(query, id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2330 xmlnode_insert_data(y, value, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2331 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2332 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2333 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2334 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2335 jabber_iq_set_callback(iq, user_search_result_cb, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2336 xmlnode_set_attrib(iq->node, "to", usi->directory_server); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2337 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2338 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2339 g_free(usi->directory_server); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2340 g_free(usi); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2341 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2342 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2343 #if 0 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2344 /* This is for gettext only -- it will see this even though there's an #if 0. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2345 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2346 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2347 * An incomplete list of server generated original language search |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2348 * comments for Jabber User Directories |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2349 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2350 * See discussion thread "Search comment for Jabber is not translatable" |
15822 | 2351 * in purple-i18n@lists.sourceforge.net (March 2006) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2352 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2353 static const char * jabber_user_dir_comments [] = { |
19489
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18698
diff
changeset
|
2354 /* current comment from Jabber User Directory users.jabber.org */ |
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18698
diff
changeset
|
2355 N_("Find a contact by entering the search criteria in the given fields. " |
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18698
diff
changeset
|
2356 "Note: Each field supports wild card searches (%)"), |
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18698
diff
changeset
|
2357 NULL |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2358 }; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2359 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2360 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2361 static void user_search_fields_result_cb(JabberStream *js, xmlnode *packet, gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2362 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2363 xmlnode *query, *x; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2364 const char *from, *type; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2365 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2366 if(!(from = xmlnode_get_attrib(packet, "from"))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2367 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2368 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2369 if(!(type = xmlnode_get_attrib(packet, "type")) || !strcmp(type, "error")) { |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20092
diff
changeset
|
2370 char *msg = jabber_parse_error(js, packet, NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2371 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2372 if(!msg) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2373 msg = g_strdup(_("Unknown error")); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2374 |
15822 | 2375 purple_notify_error(js->gc, _("Directory Query Failed"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2376 _("Could not query the directory server."), msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2377 g_free(msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2378 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2379 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2380 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2381 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2382 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2383 if(!(query = xmlnode_get_child(packet, "query"))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2384 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2385 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2386 if((x = xmlnode_get_child_with_namespace(query, "x", "jabber:x:data"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2387 jabber_x_data_request(js, x, user_search_x_data_cb, g_strdup(from)); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2388 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2389 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2390 struct user_search_info *usi; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2391 xmlnode *instnode; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2392 char *instructions = NULL; |
15822 | 2393 PurpleRequestFields *fields; |
2394 PurpleRequestFieldGroup *group; | |
2395 PurpleRequestField *field; | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2396 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2397 /* old skool */ |
15822 | 2398 fields = purple_request_fields_new(); |
2399 group = purple_request_field_group_new(NULL); | |
2400 purple_request_fields_add_group(fields, group); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2401 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2402 if((instnode = xmlnode_get_child(query, "instructions"))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2403 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2404 char *tmp = xmlnode_get_data(instnode); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2405 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2406 if(tmp) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2407 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2408 /* Try to translate the message (see static message |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2409 list in jabber_user_dir_comments[]) */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2410 instructions = g_strdup_printf(_("Server Instructions: %s"), _(tmp)); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2411 g_free(tmp); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2412 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2413 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2414 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2415 if(!instructions) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2416 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2417 instructions = g_strdup(_("Fill in one or more fields to search " |
16904
56042b2f8b64
s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents:
16719
diff
changeset
|
2418 "for any matching XMPP users.")); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2419 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2420 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2421 if(xmlnode_get_child(query, "first")) { |
15822 | 2422 field = purple_request_field_string_new("first", _("First Name"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2423 NULL, FALSE); |
15822 | 2424 purple_request_field_group_add_field(group, field); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2425 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2426 if(xmlnode_get_child(query, "last")) { |
15822 | 2427 field = purple_request_field_string_new("last", _("Last Name"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2428 NULL, FALSE); |
15822 | 2429 purple_request_field_group_add_field(group, field); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2430 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2431 if(xmlnode_get_child(query, "nick")) { |
15822 | 2432 field = purple_request_field_string_new("nick", _("Nickname"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2433 NULL, FALSE); |
15822 | 2434 purple_request_field_group_add_field(group, field); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2435 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2436 if(xmlnode_get_child(query, "email")) { |
23180
e0bcb8cfda74
Use "email" and "Email" consistently. This is potentially controversial,
Richard Laager <rlaager@wiktel.com>
parents:
22861
diff
changeset
|
2437 field = purple_request_field_string_new("email", _("Email Address"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2438 NULL, FALSE); |
15822 | 2439 purple_request_field_group_add_field(group, field); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2440 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2441 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2442 usi = g_new0(struct user_search_info, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2443 usi->js = js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2444 usi->directory_server = g_strdup(from); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2445 |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
2446 purple_request_fields(js->gc, _("Search for XMPP users"), |
16904
56042b2f8b64
s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents:
16719
diff
changeset
|
2447 _("Search for XMPP users"), instructions, fields, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2448 _("Search"), G_CALLBACK(user_search_cb), |
16439
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
15822
diff
changeset
|
2449 _("Cancel"), G_CALLBACK(user_search_cancel_cb), |
17864
58a145802f0a
Fixed weird bug that caused not supplying the account when searching for users.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17855
diff
changeset
|
2450 purple_connection_get_account(js->gc), NULL, NULL, |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
2451 usi); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2452 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2453 g_free(instructions); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2454 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2455 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2456 |
17873
3f2b5e2ab5c5
Exposed the user search function, so that directory searches can be performed directly when the jid is known.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17864
diff
changeset
|
2457 void jabber_user_search(JabberStream *js, const char *directory) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2458 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2459 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2460 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2461 /* XXX: should probably better validate the directory we're given */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2462 if(!directory || !*directory) { |
15822 | 2463 purple_notify_error(js->gc, _("Invalid Directory"), _("Invalid Directory"), NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2464 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2465 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2466 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2467 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:search"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2468 xmlnode_set_attrib(iq->node, "to", directory); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2469 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2470 jabber_iq_set_callback(iq, user_search_fields_result_cb, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2471 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2472 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2473 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2474 |
15822 | 2475 void jabber_user_search_begin(PurplePluginAction *action) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2476 { |
15822 | 2477 PurpleConnection *gc = (PurpleConnection *) action->context; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2478 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2479 |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
2480 purple_request_input(gc, _("Enter a User Directory"), _("Enter a User Directory"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2481 _("Select a user directory to search"), |
16951
88444e60ea95
Removes 'jabber.org' defaults from XMPP. I think we had agreed this was a good idea.
Sean Egan <seanegan@gmail.com>
parents:
16904
diff
changeset
|
2482 js->user_directories ? js->user_directories->data : NULL, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2483 FALSE, FALSE, NULL, |
17873
3f2b5e2ab5c5
Exposed the user search function, so that directory searches can be performed directly when the jid is known.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17864
diff
changeset
|
2484 _("Search Directory"), PURPLE_CALLBACK(jabber_user_search), |
16439
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
15822
diff
changeset
|
2485 _("Cancel"), NULL, |
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
15822
diff
changeset
|
2486 NULL, NULL, NULL, |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
2487 js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2488 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2489 |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2490 gboolean |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2491 jabber_resource_has_capability(const JabberBuddyResource *jbr, const gchar *cap) |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2492 { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2493 const GList *iter = NULL; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2494 |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2495 if (!jbr->caps) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2496 purple_debug_error("jabber", |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2497 "Unable to find caps: nothing known about buddy\n"); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2498 return FALSE; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2499 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2500 |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2501 for (iter = jbr->caps->features ; iter ; iter = g_list_next(iter)) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2502 if (strcmp(iter->data, cap) == 0) { |
24369
f4cb55854e87
Make jabber_resource_have_capability polute the log a little less...
Marcus Lundblad <ml@update.uu.se>
parents:
24056
diff
changeset
|
2503 purple_debug_info("jabber", "Found cap: %s\n", (char *)iter->data); |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2504 return TRUE; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2505 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2506 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2507 |
24369
f4cb55854e87
Make jabber_resource_have_capability polute the log a little less...
Marcus Lundblad <ml@update.uu.se>
parents:
24056
diff
changeset
|
2508 purple_debug_info("jabber", "Cap %s not found\n", cap); |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2509 return FALSE; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2510 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2511 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2512 gboolean |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2513 jabber_buddy_has_capability(const JabberBuddy *jb, const gchar *cap) |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2514 { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2515 JabberBuddyResource *jbr = jabber_buddy_find_resource((JabberBuddy*)jb, NULL); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2516 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2517 if (!jbr) { |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2518 purple_debug_error("jabber", |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2519 "Unable to find caps: buddy might be offline\n"); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2520 return FALSE; |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2521 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2522 |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2523 return jabber_resource_has_capability(jbr, cap); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2524 } |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23251
diff
changeset
|
2525 |