annotate libpurple/protocols/jabber/buddy.c @ 29143:516e53916962

Tighter scoping and slightly less memory usage.
author Paul Aurich <paul@darkrain42.org>
date Sun, 06 Dec 2009 01:01:20 +0000
parents cfcf5076b73f
children b8d47ed6ceb1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1 /*
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2 * purple - Jabber Protocol Plugin
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3 *
28398
c585572e80dd Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents: 28382
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
c585572e80dd Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents: 28382
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
c585572e80dd Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents: 28382
diff changeset
6 * source distribution.
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
7 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
8 * 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
9 * 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
10 * 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
11 * (at your option) any later version.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
12 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
13 * 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
14 * 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
15 * 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
16 * GNU General Public License for more details.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
17 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
18 * 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
19 * along with this program; if not, write to the Free Software
19680
44b4e8bd759b The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 18257
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
21 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
22 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
23 #include "internal.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
24 #include "debug.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
25 #include "imgstore.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
26 #include "prpl.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
27 #include "notify.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
28 #include "request.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
29 #include "util.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
30 #include "xmlnode.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
31
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
32 #include "buddy.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
33 #include "chat.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
34 #include "jabber.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
35 #include "iq.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
36 #include "presence.h"
25815
5dd25c58b65e Migrate the XMPP User Avatar (XEP-0084) code to its own file
Paul Aurich <paul@darkrain42.org>
parents: 24920
diff changeset
37 #include "useravatar.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
38 #include "xdata.h"
17580
7754d39d70c5 Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17563
diff changeset
39 #include "pep.h"
17609
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: 17601
diff changeset
40 #include "adhoccommands.h"
28740
51d507e6c8f3 jabber: Add an "Initiate Chat" blist context menu option for GTalk accounts.
eion@robbmob.com
parents: 28682
diff changeset
41 #include "google.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
42
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
43 typedef struct {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
44 long idle_seconds;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
45 } JabberBuddyInfoResource;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
46
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
47 typedef struct {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
48 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
49 JabberBuddy *jb;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
50 char *jid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
51 GSList *ids;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
52 GHashTable *resources;
27152
d570d1e10382 Use guint for a timeout handle here, too.
Paul Aurich <paul@darkrain42.org>
parents: 27149
diff changeset
53 guint timeout_handle;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
54 GSList *vcard_imgids;
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
55 PurpleNotifyUserInfo *user_info;
26925
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
56 long last_seconds;
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
57 gchar *last_message;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
58 } JabberBuddyInfo;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
59
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
60 void jabber_buddy_free(JabberBuddy *jb)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
61 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
62 g_return_if_fail(jb != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
63
22770
cc8903c59d6b Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <mark@kingant.net>
parents: 22756
diff changeset
64 g_free(jb->error_msg);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
65 while(jb->resources)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
66 jabber_buddy_resource_free(jb->resources->data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
67
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
68 g_free(jb);
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
71 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
72 gboolean create)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
73 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
74 JabberBuddy *jb;
27149
01c91af62ab3 Plug a leak from changing this to use jabber_get_bare_jid instead of normalize.
Paul Aurich <paul@darkrain42.org>
parents: 27067
diff changeset
75 char *realname;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
76
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
77 if (js->buddies == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
78 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
79
26956
eeee4309d3d8 Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents: 26936
diff changeset
80 if(!(realname = jabber_get_bare_jid(name)))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
81 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
82
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
83 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
84
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
85 if(!jb && create) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
86 jb = g_new0(JabberBuddy, 1);
27149
01c91af62ab3 Plug a leak from changing this to use jabber_get_bare_jid instead of normalize.
Paul Aurich <paul@darkrain42.org>
parents: 27067
diff changeset
87 g_hash_table_insert(js->buddies, realname, jb);
01c91af62ab3 Plug a leak from changing this to use jabber_get_bare_jid instead of normalize.
Paul Aurich <paul@darkrain42.org>
parents: 27067
diff changeset
88 } else
01c91af62ab3 Plug a leak from changing this to use jabber_get_bare_jid instead of normalize.
Paul Aurich <paul@darkrain42.org>
parents: 27067
diff changeset
89 g_free(realname);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
90
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
91 return jb;
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
28031
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
94 static gint resource_compare_cb(gconstpointer a, gconstpointer b)
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
95 {
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
96 const JabberBuddyResource *jbra = a;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
97 const JabberBuddyResource *jbrb = b;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
98 JabberBuddyState state_a, state_b;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
99
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
100 if (jbra->priority != jbrb->priority)
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
101 return jbra->priority > jbrb->priority ? 1 : -1;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
102
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
103 /* Fold the states for easier comparison */
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
104 switch (jbra->state) {
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
105 case JABBER_BUDDY_STATE_ONLINE:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
106 case JABBER_BUDDY_STATE_CHAT:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
107 state_a = JABBER_BUDDY_STATE_ONLINE;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
108 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
109 case JABBER_BUDDY_STATE_AWAY:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
110 case JABBER_BUDDY_STATE_DND:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
111 state_a = JABBER_BUDDY_STATE_AWAY;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
112 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
113 case JABBER_BUDDY_STATE_XA:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
114 state_a = JABBER_BUDDY_STATE_XA;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
115 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
116 case JABBER_BUDDY_STATE_UNAVAILABLE:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
117 state_a = JABBER_BUDDY_STATE_UNAVAILABLE;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
118 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
119 default:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
120 state_a = JABBER_BUDDY_STATE_UNKNOWN;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
121 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
122 }
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
123
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
124 switch (jbrb->state) {
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
125 case JABBER_BUDDY_STATE_ONLINE:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
126 case JABBER_BUDDY_STATE_CHAT:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
127 state_b = JABBER_BUDDY_STATE_ONLINE;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
128 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
129 case JABBER_BUDDY_STATE_AWAY:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
130 case JABBER_BUDDY_STATE_DND:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
131 state_b = JABBER_BUDDY_STATE_AWAY;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
132 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
133 case JABBER_BUDDY_STATE_XA:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
134 state_b = JABBER_BUDDY_STATE_XA;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
135 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
136 case JABBER_BUDDY_STATE_UNAVAILABLE:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
137 state_b = JABBER_BUDDY_STATE_UNAVAILABLE;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
138 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
139 default:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
140 state_b = JABBER_BUDDY_STATE_UNKNOWN;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
141 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
142 }
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
143
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
144 if (state_a == state_b) {
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
145 if (jbra->idle == jbrb->idle)
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
146 return 0;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
147 else if ((jbra->idle && !jbrb->idle) ||
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
148 (jbra->idle && jbrb->idle && jbra->idle < jbrb->idle))
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
149 return -1;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
150 else
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
151 return 1;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
152 }
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
153
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
154 if (state_a == JABBER_BUDDY_STATE_ONLINE)
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
155 return 1;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
156 else if (state_a == JABBER_BUDDY_STATE_AWAY &&
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
157 (state_b == JABBER_BUDDY_STATE_XA ||
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
158 state_b == JABBER_BUDDY_STATE_UNAVAILABLE ||
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
159 state_b == JABBER_BUDDY_STATE_UNKNOWN))
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
160 return 1;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
161 else if (state_a == JABBER_BUDDY_STATE_XA &&
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
162 (state_b == JABBER_BUDDY_STATE_UNAVAILABLE ||
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
163 state_b == JABBER_BUDDY_STATE_UNKNOWN))
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
164 return 1;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
165 else if (state_a == JABBER_BUDDY_STATE_UNAVAILABLE &&
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
166 state_b == JABBER_BUDDY_STATE_UNKNOWN)
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
167 return 1;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
168
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
169 return -1;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
170 }
15374
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 JabberBuddyResource *jabber_buddy_find_resource(JabberBuddy *jb,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
173 const char *resource)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
174 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
175 JabberBuddyResource *jbr = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
176 GList *l;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
177
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
178 if(!jb)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
179 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
180
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
181 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
182 {
25802
e3bb0bbfa388 Fix merge
Marcus Lundblad <ml@update.uu.se>
parents: 25801
diff changeset
183 JabberBuddyResource *tmp = (JabberBuddyResource *) l->data;
e3bb0bbfa388 Fix merge
Marcus Lundblad <ml@update.uu.se>
parents: 25801
diff changeset
184 if (!jbr && !resource) {
e3bb0bbfa388 Fix merge
Marcus Lundblad <ml@update.uu.se>
parents: 25801
diff changeset
185 jbr = tmp;
e3bb0bbfa388 Fix merge
Marcus Lundblad <ml@update.uu.se>
parents: 25801
diff changeset
186 } else if (!resource) {
28031
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
187 if (resource_compare_cb(tmp, jbr) > 0)
25802
e3bb0bbfa388 Fix merge
Marcus Lundblad <ml@update.uu.se>
parents: 25801
diff changeset
188 jbr = tmp;
e3bb0bbfa388 Fix merge
Marcus Lundblad <ml@update.uu.se>
parents: 25801
diff changeset
189 } else if(tmp->name) {
e3bb0bbfa388 Fix merge
Marcus Lundblad <ml@update.uu.se>
parents: 25801
diff changeset
190 if(!strcmp(tmp->name, resource)) {
e3bb0bbfa388 Fix merge
Marcus Lundblad <ml@update.uu.se>
parents: 25801
diff changeset
191 jbr = tmp;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
192 break;
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 }
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
197 return jbr;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
198 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
199
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
200 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
201 int priority, JabberBuddyState state, const char *status)
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 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
204 if(!jbr) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
205 jbr = g_new0(JabberBuddyResource, 1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
206 jbr->jb = jb;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
207 jbr->name = g_strdup(resource);
27584
95c56191d26c For contacts who advertise Entity Caps, check for XHTML-IM support. Refs #4650.
Paul Aurich <paul@darkrain42.org>
parents: 27513
diff changeset
208 jbr->capabilities = JABBER_CAP_NONE;
25938
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
209 jbr->tz_off = PURPLE_NO_TZ_OFF;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
210 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
211 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
212 jbr->priority = priority;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
213 jbr->state = state;
22756
46ab2e2171b8 Simplify
Mark Doliner <mark@kingant.net>
parents: 22475
diff changeset
214 g_free(jbr->status);
27563
7a2891487a00 Don't pre-escape jbr->status. Almost every place required it in unescaped
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27513
diff changeset
215 jbr->status = g_strdup(status);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
216
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
217 return jbr;
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 void jabber_buddy_resource_free(JabberBuddyResource *jbr)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
221 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
222 g_return_if_fail(jbr != NULL);
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 jbr->jb->resources = g_list_remove(jbr->jb->resources, jbr);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
225
17609
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: 17601
diff changeset
226 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: 17601
diff changeset
227 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: 17601
diff changeset
228 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: 17601
diff changeset
229 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: 17601
diff changeset
230 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: 17601
diff changeset
231 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: 17601
diff changeset
232 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: 17601
diff changeset
233 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
234
25784
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
235 if (jbr->caps.exts) {
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
236 g_list_foreach(jbr->caps.exts, (GFunc)g_free, NULL);
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
237 g_list_free(jbr->caps.exts);
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
238 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
239 g_free(jbr->name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
240 g_free(jbr->status);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
241 g_free(jbr->thread_id);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
242 g_free(jbr->client.name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
243 g_free(jbr->client.version);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
244 g_free(jbr->client.os);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
245 g_free(jbr);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
246 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
247
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
248 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
249 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
250 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
251
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
252 if(!jbr)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
253 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
254
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
255 jabber_buddy_resource_free(jbr);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
256 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
257
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
258 /*******
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
259 * 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
260 * 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
261 * 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
262 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
263 * 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
264 * _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
265 * 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
266 * replace vcard-temp
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
267 * --Nathan
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
268 *******/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
269
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 /* Jabber "set info" (vCard) support */
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
274 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
275 * V-Card format:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
276 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
277 * <vCard prodid='' version='' xmlns=''>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
278 * <FN></FN>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
279 * <N>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
280 * <FAMILY/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
281 * <GIVEN/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
282 * </N>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
283 * <NICKNAME/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
284 * <URL/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
285 * <ADR>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
286 * <STREET/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
287 * <EXTADD/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
288 * <LOCALITY/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
289 * <REGION/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
290 * <PCODE/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
291 * <COUNTRY/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
292 * </ADR>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
293 * <TEL/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
294 * <EMAIL/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
295 * <ORG>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
296 * <ORGNAME/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
297 * <ORGUNIT/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
298 * </ORG>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
299 * <TITLE/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
300 * <ROLE/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
301 * <DESC/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
302 * <BDAY/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
303 * </vCard>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
304 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
305 * See also:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
306 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
307 * 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
308 * 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
309 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
310
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
311 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
312 * 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
313 * and attributes.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
314 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
315 * 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
316 * 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
317 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
318 * 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
319 * 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
320 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
321 * 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
322 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
323 * 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
324 * 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
325 * "automagically" construct the appropriate XML node tree.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
326 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
327 * Thoughts on future direction/expansion
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
328 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
329 * This is a "simple" vCard.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
330 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
331 * 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
332 * 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
333 * "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
334 * 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
335 * array.
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 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
338 * construction routines.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
339 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
340
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
341 struct vcard_template {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
342 char *label; /* label text pointer */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
343 char *tag; /* tag text */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
344 char *ptag; /* parent tag "path" text */
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
345 } const vcard_template_data[] = {
26308
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
346 {N_("Full Name"), "FN", NULL},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
347 {N_("Family Name"), "FAMILY", "N"},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
348 {N_("Given Name"), "GIVEN", "N"},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
349 {N_("Nickname"), "NICKNAME", NULL},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
350 {N_("URL"), "URL", NULL},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
351 {N_("Street Address"), "STREET", "ADR"},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
352 {N_("Extended Address"), "EXTADD", "ADR"},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
353 {N_("Locality"), "LOCALITY", "ADR"},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
354 {N_("Region"), "REGION", "ADR"},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
355 {N_("Postal Code"), "PCODE", "ADR"},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
356 {N_("Country"), "CTRY", "ADR"},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
357 {N_("Telephone"), "NUMBER", "TEL"},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
358 {N_("Email"), "USERID", "EMAIL"},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
359 {N_("Organization Name"), "ORGNAME", "ORG"},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
360 {N_("Organization Unit"), "ORGUNIT", "ORG"},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
361 {N_("Title"), "TITLE", NULL},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
362 {N_("Role"), "ROLE", NULL},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
363 {N_("Birthday"), "BDAY", NULL},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
364 {N_("Description"), "DESC", NULL},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
365 {"", "N", NULL},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
366 {"", "ADR", NULL},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
367 {"", "ORG", NULL},
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
368 {NULL, NULL, NULL}
15374
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
371 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
372 * The "vCard" tag's attribute list...
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
373 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
374 struct tag_attr {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
375 char *attr;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
376 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
377 } const vcard_tag_attr_list[] = {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
378 {"prodid", "-//HandGen//NONSGML vGen v1.0//EN"},
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
379 {"version", "2.0", },
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
380 {"xmlns", "vcard-temp", },
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
381 {NULL, NULL},
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
382 };
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
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 * 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
387 * nodes as necessary
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
388 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
389 * Returns pointer to inserted node
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
390 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
391 * 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
392 * 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
393 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
394 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
395 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
396 xmlnode *x = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
397
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 * 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
400 * from the vCard template struct.
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 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
403 const struct vcard_template *vc_tp = vcard_template_data;
15374
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 while(vc_tp->label != NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
406 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
407 parent_tag = vc_tp->ptag;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
408 break;
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 ++vc_tp;
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
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 * If we have a parent 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 if(parent_tag != NULL ) {
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 * 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
420 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
421 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
422 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
423 * Descend?
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
424 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
425 char *grand_parent = g_strdup(parent_tag);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
426 char *parent;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
427
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
428 if((parent = strrchr(grand_parent, '/')) != NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
429 *(parent++) = '\0';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
430 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
431 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
432 x = xmlnode_new_child(start, grand_parent);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
433 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
434 g_free(grand_parent);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
435 } else {
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 * 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
438 * Note: may be the "root" node!
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 xmlnode *y;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
441 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
442 return(y);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
443 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
444 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
445 }
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 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
448 * 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
449 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
450 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
451 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
452
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
453 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
454 * Send vCard info to Jabber server
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
455 */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
456 void jabber_set_info(PurpleConnection *gc, const char *info)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
457 {
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
458 PurpleStoredImage *img;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
459 JabberIq *iq;
25286
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
460 JabberStream *js = purple_connection_get_protocol_data(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
461 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
462 const struct tag_attr *tag_attr;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
463
18163
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
464 /* 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
465 * 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
466 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
467 return;
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
468
28112
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
469 if (js->vcard_timer) {
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
470 purple_timeout_remove(js->vcard_timer);
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
471 js->vcard_timer = 0;
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
472 }
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
473
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
474 g_free(js->avatar_hash);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
475 js->avatar_hash = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
476
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
477 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
478 * 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
479 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
480 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
481
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
482 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
483 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
484 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
485 vc_node = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
486 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
487
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
488 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
489 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
490 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
491 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
492 gchar *enc;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
493
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
494 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
495 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
496 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
497 xmlnode_set_attrib(vc_node, tag_attr->attr, tag_attr->value);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
498 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
499
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
500 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
501 avatar_len = purple_imgstore_get_size(img);
24915
1e121a3eceeb Allow us to remove vCard avatars when the PurpleAccount doesn't have one
Paul Aurich <paul@darkrain42.org>
parents: 24914
diff changeset
502 /* Get rid of an old PHOTO if one exists.
1e121a3eceeb Allow us to remove vCard avatars when the PurpleAccount doesn't have one
Paul Aurich <paul@darkrain42.org>
parents: 24914
diff changeset
503 * TODO: This may want to be modified to remove all old PHOTO
1e121a3eceeb Allow us to remove vCard avatars when the PurpleAccount doesn't have one
Paul Aurich <paul@darkrain42.org>
parents: 24914
diff changeset
504 * children, at the moment some people have managed to get
1e121a3eceeb Allow us to remove vCard avatars when the PurpleAccount doesn't have one
Paul Aurich <paul@darkrain42.org>
parents: 24914
diff changeset
505 * multiple PHOTO entries in their vCard. */
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
506 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
507 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
508 }
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
509 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
510 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
511 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
512 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
513 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
514
24641
61e0924de04a Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents: 24640
diff changeset
515 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
516
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
517 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
518 g_free(enc);
28217
5a38fab8c199 This was a memory leak, right?
Mark Doliner <mark@kingant.net>
parents: 28182
diff changeset
519 purple_imgstore_unref(img);
24915
1e121a3eceeb Allow us to remove vCard avatars when the PurpleAccount doesn't have one
Paul Aurich <paul@darkrain42.org>
parents: 24914
diff changeset
520 } else if (vc_node) {
1e121a3eceeb Allow us to remove vCard avatars when the PurpleAccount doesn't have one
Paul Aurich <paul@darkrain42.org>
parents: 24914
diff changeset
521 xmlnode *photo;
1e121a3eceeb Allow us to remove vCard avatars when the PurpleAccount doesn't have one
Paul Aurich <paul@darkrain42.org>
parents: 24914
diff changeset
522 /* TODO: Remove all PHOTO children? (see above note) */
1e121a3eceeb Allow us to remove vCard avatars when the PurpleAccount doesn't have one
Paul Aurich <paul@darkrain42.org>
parents: 24914
diff changeset
523 if ((photo = xmlnode_get_child(vc_node, "PHOTO"))) {
1e121a3eceeb Allow us to remove vCard avatars when the PurpleAccount doesn't have one
Paul Aurich <paul@darkrain42.org>
parents: 24914
diff changeset
524 xmlnode_free(photo);
1e121a3eceeb Allow us to remove vCard avatars when the PurpleAccount doesn't have one
Paul Aurich <paul@darkrain42.org>
parents: 24914
diff changeset
525 }
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
526 }
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
527
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
528 if (vc_node != NULL) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
529 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
530 xmlnode_insert_child(iq->node, vc_node);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
531 jabber_iq_send(iq);
25818
370d8eba2ce0 Send presence updates from jabber_set_info, not jabber_set_buddy_icon.
Paul Aurich <paul@darkrain42.org>
parents: 25817
diff changeset
532
370d8eba2ce0 Send presence updates from jabber_set_info, not jabber_set_buddy_icon.
Paul Aurich <paul@darkrain42.org>
parents: 25817
diff changeset
533 /* Send presence to update vcard-temp:x:update */
26817
3912f55a1633 propagate from branch 'im.pidgin.pidgin' (head fbb4fe5da444943eecc76bdcd6c8ba967790b6c8)
Paul Aurich <paul@darkrain42.org>
parents: 26670 26791
diff changeset
534 jabber_presence_send(js, FALSE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
535 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
536 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
537
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
538 void jabber_set_buddy_icon(PurpleConnection *gc, PurpleStoredImage *img)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
539 {
25832
2d92bbe6807b Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents: 25822
diff changeset
540 PurpleAccount *account = purple_connection_get_account(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
541
26791
80437c891f92 Publish only 'new' xmlns of avatars and delete old.
Paul Aurich <paul@darkrain42.org>
parents: 26788
diff changeset
542 /* Publish the avatar as specified in XEP-0084 */
80437c891f92 Publish only 'new' xmlns of avatars and delete old.
Paul Aurich <paul@darkrain42.org>
parents: 26788
diff changeset
543 jabber_avatar_set(gc->proto_data, img);
80437c891f92 Publish only 'new' xmlns of avatars and delete old.
Paul Aurich <paul@darkrain42.org>
parents: 26788
diff changeset
544 /* Set the image in our vCard */
25832
2d92bbe6807b Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents: 25822
diff changeset
545 jabber_set_info(gc, purple_account_get_user_info(account));
24914
c07b0aa88a35 Paul noticed that the conditional blocks here were backwards. I'm surprised no
Paul Aurich <paul@darkrain42.org>
parents: 24641
diff changeset
546
25832
2d92bbe6807b Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents: 25822
diff changeset
547 /* TODO: Fake image to ourselves, since a number of servers do not echo
2d92bbe6807b Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents: 25822
diff changeset
548 * back our presence to us. To do this without uselessly copying the data
2d92bbe6807b Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents: 25822
diff changeset
549 * of the image, we need purple_buddy_icons_set_for_user_image (i.e. takes
2d92bbe6807b Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents: 25822
diff changeset
550 * an existing icon/stored image). */
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
551 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
552
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
553 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
554 * 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
555 *
24920
ca4ccf646993 Correct a comment, I don't imagine anyone will actually need this but better
Etan Reisner <pidgin@unreliablesource.net>
parents: 24915
diff changeset
556 * Sets the vCard with data from PurpleRequestFields.
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
557 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
558 static void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
559 jabber_format_info(PurpleConnection *gc, PurpleRequestFields *fields)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
560 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
561 xmlnode *vc_node;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
562 PurpleRequestField *field;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
563 const char *text;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
564 char *p;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
565 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
566 const struct tag_attr *tag_attr;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
567
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
568 vc_node = xmlnode_new("vCard");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
569
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
570 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
571 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
572
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
573 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
574 if (*vc_tp->label == '\0')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
575 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
576
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
577 field = purple_request_fields_get_field(fields, vc_tp->tag);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
578 text = purple_request_field_string_get_value(field);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
579
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
580
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
581 if (text != NULL && *text != '\0') {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
582 xmlnode *xp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
583
28889
fa7f3426ed13 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents: 28740
diff changeset
584 purple_debug_info("jabber", "Setting %s to '%s'\n", vc_tp->tag, text);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
585
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
586 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
587 NULL, vc_tp->tag)) != NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
588
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
589 xmlnode_insert_data(xp, text, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
590 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
591 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
592 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
593
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
594 p = xmlnode_to_str(vc_node, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
595 xmlnode_free(vc_node);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
596
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
597 purple_account_set_user_info(purple_connection_get_account(gc), p);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
598 serv_set_info(gc, p);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
599
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
600 g_free(p);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
601 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
602
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
603 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
604 * This gets executed by the proto action
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
605 *
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
606 * Creates a new PurpleRequestFields struct, gets the XML-formatted user_info
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
607 * 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
608 * calls the set_vcard dialog.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
609 */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
610 void jabber_setup_set_info(PurplePluginAction *action)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
611 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
612 PurpleConnection *gc = (PurpleConnection *) action->context;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
613 PurpleRequestFields *fields;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
614 PurpleRequestFieldGroup *group;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
615 PurpleRequestField *field;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
616 const struct vcard_template *vc_tp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
617 const char *user_info;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
618 char *cdata = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
619 xmlnode *x_vc_data = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
620
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
621 fields = purple_request_fields_new();
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
622 group = purple_request_field_group_new(NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
623 purple_request_fields_add_group(fields, group);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
624
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 * Get existing, XML-formatted, user info
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
627 */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
628 if((user_info = purple_account_get_user_info(gc->account)) != NULL)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
629 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
630
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
631 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
632 * 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
633 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
634 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
635 xmlnode *data_node;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
636 if((vc_tp->label)[0] == '\0')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
637 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
638
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
639 if (x_vc_data != NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
640 if(vc_tp->ptag == NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
641 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
642 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
643 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
644 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
645 g_free(tag);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
646 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
647 if(data_node)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
648 cdata = xmlnode_get_data(data_node);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
649 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
650
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
651 if(strcmp(vc_tp->tag, "DESC") == 0) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
652 field = purple_request_field_string_new(vc_tp->tag,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
653 _(vc_tp->label), cdata,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
654 TRUE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
655 } else {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
656 field = purple_request_field_string_new(vc_tp->tag,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
657 _(vc_tp->label), cdata,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
658 FALSE);
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
661 g_free(cdata);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
662 cdata = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
663
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
664 purple_request_field_group_add_field(group, field);
15374
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
667 if(x_vc_data != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
668 xmlnode_free(x_vc_data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
669
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
670 purple_request_fields(gc, _("Edit XMPP vCard"),
16915
56042b2f8b64 s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents: 16728
diff changeset
671 _("Edit XMPP vCard"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
672 _("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
673 "information with which you feel comfortable."),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
674 fields,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
675 _("Save"), G_CALLBACK(jabber_format_info),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
676 _("Cancel"), NULL,
16442
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: 15823
diff changeset
677 purple_connection_get_account(gc), NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
678 gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
679 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
680
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
681 /*---------------------------------------*/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
682 /* End Jabber "set info" (vCard) support */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
683 /*---------------------------------------*/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
684
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
685 /******
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
686 * 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
687 ******/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
688
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
689 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
690 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
691 /* 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
692 if (jbi->timeout_handle > 0)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
693 purple_timeout_remove(jbi->timeout_handle);
15666
6eda87b08cdf Don't access the list element after it has been freed.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15627
diff changeset
694
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
695 g_free(jbi->jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
696 g_hash_table_destroy(jbi->resources);
26925
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
697 g_free(jbi->last_message);
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
698 purple_notify_user_info_destroy(jbi->user_info);
15666
6eda87b08cdf Don't access the list element after it has been freed.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15627
diff changeset
699 g_free(jbi);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
700 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
701
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
702 static void
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
703 add_jbr_info(JabberBuddyInfo *jbi, const char *resource,
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
704 JabberBuddyResource *jbr)
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
705 {
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
706 JabberBuddyInfoResource *jbir;
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
707 PurpleNotifyUserInfo *user_info;
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
708
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
709 jbir = g_hash_table_lookup(jbi->resources, resource);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
710 user_info = jbi->user_info;
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
711
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
712 if (jbr && jbr->client.name) {
27407
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
713 char *tmp =
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
714 g_strdup_printf("%s%s%s", jbr->client.name,
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
715 (jbr->client.version ? " " : ""),
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
716 (jbr->client.version ? jbr->client.version : ""));
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
717 purple_notify_user_info_prepend_pair(user_info, _("Client"), tmp);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
718 g_free(tmp);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
719
27407
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
720 if (jbr->client.os)
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
721 purple_notify_user_info_prepend_pair(user_info, _("Operating System"), jbr->client.os);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
722 }
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
723
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
724 if (jbr && jbr->tz_off != PURPLE_NO_TZ_OFF) {
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
725 time_t now_t;
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
726 struct tm *now;
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
727 char *timestamp;
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
728 time(&now_t);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
729 now_t += jbr->tz_off;
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
730 now = gmtime(&now_t);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
731
27407
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
732 timestamp =
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
733 g_strdup_printf("%s %c%02d%02d", purple_time_format(now),
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
734 jbr->tz_off < 0 ? '-' : '+',
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
735 abs(jbr->tz_off / (60*60)),
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
736 abs((jbr->tz_off % (60*60)) / 60));
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
737 purple_notify_user_info_prepend_pair(user_info, _("Local Time"), timestamp);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
738 g_free(timestamp);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
739 }
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
740
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
741 if (jbir && jbir->idle_seconds > 0) {
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
742 char *idle = purple_str_seconds_to_string(jbir->idle_seconds);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
743 purple_notify_user_info_prepend_pair(user_info, _("Idle"), idle);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
744 g_free(idle);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
745 }
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
746
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
747 if (jbr) {
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
748 char *purdy = NULL;
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
749 char *tmp;
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
750 char priority[12];
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
751 const char *status_name = jabber_buddy_state_get_name(jbr->state);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
752
27407
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
753 if (jbr->status) {
28360
cc70e2bc4de5 jabber: Escape status messages with a '<' or '>' in the Get Info dialog.
Paul Aurich <paul@darkrain42.org>
parents: 28349
diff changeset
754 tmp = purple_markup_escape_text(jbr->status, -1);
cc70e2bc4de5 jabber: Escape status messages with a '<' or '>' in the Get Info dialog.
Paul Aurich <paul@darkrain42.org>
parents: 28349
diff changeset
755 purdy = purple_strdup_withhtml(tmp);
cc70e2bc4de5 jabber: Escape status messages with a '<' or '>' in the Get Info dialog.
Paul Aurich <paul@darkrain42.org>
parents: 28349
diff changeset
756 g_free(tmp);
27407
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
757
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
758 if (purple_strequal(status_name, purdy))
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
759 status_name = NULL;
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
760 }
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
761
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
762 tmp = g_strdup_printf("%s%s%s", (status_name ? status_name : ""),
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
763 ((status_name && purdy) ? ": " : ""),
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
764 (purdy ? purdy : ""));
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
765 purple_notify_user_info_prepend_pair(user_info, _("Status"), tmp);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
766
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
767 g_snprintf(priority, sizeof(priority), "%d", jbr->priority);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
768 purple_notify_user_info_prepend_pair(user_info, _("Priority"), priority);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
769
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
770 g_free(tmp);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
771 g_free(purdy);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
772 } else {
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
773 purple_notify_user_info_prepend_pair(user_info, _("Status"), _("Unknown"));
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
774 }
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
775 }
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
776
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
777 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
778 {
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
779 char *resource_name;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
780 JabberBuddyResource *jbr;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
781 GList *resources;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
782 PurpleNotifyUserInfo *user_info;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
783
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
784 /* not yet */
27407
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
785 if (jbi->ids)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
786 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
787
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
788 user_info = jbi->user_info;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
789 resource_name = jabber_get_resource(jbi->jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
790
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
791 /* 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: 23182
diff changeset
792 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: 23182
diff changeset
793 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: 23182
diff changeset
794
27407
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
795 /* Add the information about the user's resource(s) */
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
796 if (resource_name) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
797 jbr = jabber_buddy_find_resource(jbi->jb, resource_name);
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
798 add_jbr_info(jbi, resource_name, jbr);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
799 } else {
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
800 for (resources = jbi->jb->resources; resources; resources = resources->next) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
801 jbr = resources->data;
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
802
26912
6028712210ca Add a section break between resources in "Get info"
Marcus Lundblad <ml@update.uu.se>
parents: 26817
diff changeset
803 /* put a section break between resources, this is not needed if
6028712210ca Add a section break between resources in "Get info"
Marcus Lundblad <ml@update.uu.se>
parents: 26817
diff changeset
804 we are at the first, because one was already added for the vcard
6028712210ca Add a section break between resources in "Get info"
Marcus Lundblad <ml@update.uu.se>
parents: 26817
diff changeset
805 section */
27407
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
806 if (resources != jbi->jb->resources)
26912
6028712210ca Add a section break between resources in "Get info"
Marcus Lundblad <ml@update.uu.se>
parents: 26817
diff changeset
807 purple_notify_user_info_prepend_section_break(user_info);
6028712210ca Add a section break between resources in "Get info"
Marcus Lundblad <ml@update.uu.se>
parents: 26817
diff changeset
808
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
809 add_jbr_info(jbi, jbr->name, jbr);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
810
27407
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
811 if (jbr->name)
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
812 purple_notify_user_info_prepend_pair(user_info, _("Resource"), jbr->name);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
813 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
814 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
815
26925
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
816 if (!jbi->jb->resources) {
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
817 /* the buddy is offline */
29110
bc1eb4dacd00 jabber: When getting info on a "bare" domain JID, interpret the value of "last"
Marcus Lundblad <ml@update.uu.se>
parents: 29031
diff changeset
818 gboolean is_domain = jabber_jid_is_domain(jbi->jid);
29143
516e53916962 Tighter scoping and slightly less memory usage.
Paul Aurich <paul@darkrain42.org>
parents: 29115
diff changeset
819
26925
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
820 if (jbi->last_seconds > 0) {
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
821 char *last = purple_str_seconds_to_string(jbi->last_seconds);
29110
bc1eb4dacd00 jabber: When getting info on a "bare" domain JID, interpret the value of "last"
Marcus Lundblad <ml@update.uu.se>
parents: 29031
diff changeset
822 gchar *message = NULL;
bc1eb4dacd00 jabber: When getting info on a "bare" domain JID, interpret the value of "last"
Marcus Lundblad <ml@update.uu.se>
parents: 29031
diff changeset
823 const gchar *title = NULL;
bc1eb4dacd00 jabber: When getting info on a "bare" domain JID, interpret the value of "last"
Marcus Lundblad <ml@update.uu.se>
parents: 29031
diff changeset
824 if (is_domain) {
bc1eb4dacd00 jabber: When getting info on a "bare" domain JID, interpret the value of "last"
Marcus Lundblad <ml@update.uu.se>
parents: 29031
diff changeset
825 title = _("Uptime");
bc1eb4dacd00 jabber: When getting info on a "bare" domain JID, interpret the value of "last"
Marcus Lundblad <ml@update.uu.se>
parents: 29031
diff changeset
826 message = g_strdup_printf(_("%s"), last);
bc1eb4dacd00 jabber: When getting info on a "bare" domain JID, interpret the value of "last"
Marcus Lundblad <ml@update.uu.se>
parents: 29031
diff changeset
827 } else {
bc1eb4dacd00 jabber: When getting info on a "bare" domain JID, interpret the value of "last"
Marcus Lundblad <ml@update.uu.se>
parents: 29031
diff changeset
828 title = _("Logged Off");
bc1eb4dacd00 jabber: When getting info on a "bare" domain JID, interpret the value of "last"
Marcus Lundblad <ml@update.uu.se>
parents: 29031
diff changeset
829 message = g_strdup_printf(_("%s ago"), last);
bc1eb4dacd00 jabber: When getting info on a "bare" domain JID, interpret the value of "last"
Marcus Lundblad <ml@update.uu.se>
parents: 29031
diff changeset
830 }
bc1eb4dacd00 jabber: When getting info on a "bare" domain JID, interpret the value of "last"
Marcus Lundblad <ml@update.uu.se>
parents: 29031
diff changeset
831 purple_notify_user_info_prepend_pair(user_info, title, message);
26925
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
832 g_free(last);
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
833 g_free(message);
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
834 }
29110
bc1eb4dacd00 jabber: When getting info on a "bare" domain JID, interpret the value of "last"
Marcus Lundblad <ml@update.uu.se>
parents: 29031
diff changeset
835
29143
516e53916962 Tighter scoping and slightly less memory usage.
Paul Aurich <paul@darkrain42.org>
parents: 29115
diff changeset
836 if (!is_domain) {
516e53916962 Tighter scoping and slightly less memory usage.
Paul Aurich <paul@darkrain42.org>
parents: 29115
diff changeset
837 gchar *status =
516e53916962 Tighter scoping and slightly less memory usage.
Paul Aurich <paul@darkrain42.org>
parents: 29115
diff changeset
838 g_strdup_printf("%s%s%s", _("Offline"),
516e53916962 Tighter scoping and slightly less memory usage.
Paul Aurich <paul@darkrain42.org>
parents: 29115
diff changeset
839 jbi->last_message ? ": " : "",
516e53916962 Tighter scoping and slightly less memory usage.
Paul Aurich <paul@darkrain42.org>
parents: 29115
diff changeset
840 jbi->last_message ? jbi->last_message : "");
29110
bc1eb4dacd00 jabber: When getting info on a "bare" domain JID, interpret the value of "last"
Marcus Lundblad <ml@update.uu.se>
parents: 29031
diff changeset
841 purple_notify_user_info_prepend_pair(user_info, _("Status"), status);
29143
516e53916962 Tighter scoping and slightly less memory usage.
Paul Aurich <paul@darkrain42.org>
parents: 29115
diff changeset
842 g_free(status);
516e53916962 Tighter scoping and slightly less memory usage.
Paul Aurich <paul@darkrain42.org>
parents: 29115
diff changeset
843 }
26925
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
844 }
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
845
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
846 g_free(resource_name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
847
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
848 purple_notify_userinfo(jbi->js->gc, jbi->jid, user_info, NULL, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
849
27407
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
850 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: 15823
diff changeset
851 purple_imgstore_unref_by_id(GPOINTER_TO_INT(jbi->vcard_imgids->data));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
852 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
853 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
854
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
855 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
856
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
857 jabber_buddy_info_destroy(jbi);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
858 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
859
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
860 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
861 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
862 GSList *l = jbi->ids;
15666
6eda87b08cdf Don't access the list element after it has been freed.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15627
diff changeset
863 char *comp_id;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
864
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
865 if(!id)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
866 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
867
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
868 while(l) {
15666
6eda87b08cdf Don't access the list element after it has been freed.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15627
diff changeset
869 comp_id = l->data;
6eda87b08cdf Don't access the list element after it has been freed.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15627
diff changeset
870 if(!strcmp(id, comp_id)) {
6eda87b08cdf Don't access the list element after it has been freed.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15627
diff changeset
871 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: 15627
diff changeset
872 g_free(comp_id);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
873 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
874 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
875 l = l->next;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
876 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
877 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
878
28112
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
879 static gboolean
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
880 set_own_vcard_cb(gpointer data)
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
881 {
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
882 JabberStream *js = data;
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
883 PurpleAccount *account = purple_connection_get_account(js->gc);
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
884
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
885 js->vcard_timer = 0;
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
886
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
887 jabber_set_info(js->gc, purple_account_get_user_info(account));
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
888
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
889 return FALSE;
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
890 }
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
891
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
892 static void jabber_vcard_save_mine(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
893 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
894 xmlnode *packet, gpointer data)
18163
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
895 {
25817
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
896 xmlnode *vcard, *photo, *binval;
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
897 char *txt, *vcard_hash = NULL;
28112
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
898 PurpleAccount *account;
18163
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
899
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
900 if (type == JABBER_IQ_ERROR) {
27274
291724375feb If there's no vCard on the server, we have to be able to set ours. Allows bootstrapping a new account with (at least) Prosody.
Paul Aurich <paul@darkrain42.org>
parents: 27273
diff changeset
901 xmlnode *error;
27273
7d4eb0834107 Missing newline
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
902 purple_debug_warning("jabber", "Server returned error while retrieving vCard\n");
27274
291724375feb If there's no vCard on the server, we have to be able to set ours. Allows bootstrapping a new account with (at least) Prosody.
Paul Aurich <paul@darkrain42.org>
parents: 27273
diff changeset
903
291724375feb If there's no vCard on the server, we have to be able to set ours. Allows bootstrapping a new account with (at least) Prosody.
Paul Aurich <paul@darkrain42.org>
parents: 27273
diff changeset
904 error = xmlnode_get_child(packet, "error");
291724375feb If there's no vCard on the server, we have to be able to set ours. Allows bootstrapping a new account with (at least) Prosody.
Paul Aurich <paul@darkrain42.org>
parents: 27273
diff changeset
905 if (!error || !xmlnode_get_child(error, "item-not-found"))
291724375feb If there's no vCard on the server, we have to be able to set ours. Allows bootstrapping a new account with (at least) Prosody.
Paul Aurich <paul@darkrain42.org>
parents: 27273
diff changeset
906 return;
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
907 }
18163
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
908
28112
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
909 account = purple_connection_get_account(js->gc);
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
910
18163
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
911 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
912 (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
913 {
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
914 txt = xmlnode_to_str(vcard, NULL);
28112
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
915 purple_account_set_user_info(account, txt);
18163
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
916 g_free(txt);
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
917 } else {
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
918 /* 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
919 }
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
920
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
921 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
922
25817
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
923 if (vcard && (photo = xmlnode_get_child(vcard, "PHOTO")) &&
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
924 (binval = xmlnode_get_child(photo, "BINVAL"))) {
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
925 gsize size;
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
926 char *bintext = xmlnode_get_data(binval);
28382
d4847cef4a84 jabber: Fix a crash when the vcard includes an empty BINVAL.
Paul Aurich <paul@darkrain42.org>
parents: 28360
diff changeset
927 if (bintext) {
d4847cef4a84 jabber: Fix a crash when the vcard includes an empty BINVAL.
Paul Aurich <paul@darkrain42.org>
parents: 28360
diff changeset
928 guchar *data = purple_base64_decode(bintext, &size);
d4847cef4a84 jabber: Fix a crash when the vcard includes an empty BINVAL.
Paul Aurich <paul@darkrain42.org>
parents: 28360
diff changeset
929 g_free(bintext);
25817
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
930
28382
d4847cef4a84 jabber: Fix a crash when the vcard includes an empty BINVAL.
Paul Aurich <paul@darkrain42.org>
parents: 28360
diff changeset
931 if (data) {
d4847cef4a84 jabber: Fix a crash when the vcard includes an empty BINVAL.
Paul Aurich <paul@darkrain42.org>
parents: 28360
diff changeset
932 vcard_hash = jabber_calculate_data_sha1sum(data, size);
d4847cef4a84 jabber: Fix a crash when the vcard includes an empty BINVAL.
Paul Aurich <paul@darkrain42.org>
parents: 28360
diff changeset
933 g_free(data);
d4847cef4a84 jabber: Fix a crash when the vcard includes an empty BINVAL.
Paul Aurich <paul@darkrain42.org>
parents: 28360
diff changeset
934 }
25817
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
935 }
18163
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
936 }
25817
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
937
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
938 /* Republish our vcard if the photo is different than the server's */
28914
e14402d6c5e0 jabber: Go back to not overwriting avatars if there is not one locally set.
Paul Aurich <paul@darkrain42.org>
parents: 28911
diff changeset
939 if (js->initial_avatar_hash && !purple_strequal(vcard_hash, js->initial_avatar_hash)) {
28112
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
940 /*
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
941 * Google Talk has developed the behavior that it will not accept
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
942 * a vcard set in the first 10 seconds (or so) of the connection;
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
943 * it returns an error (namespaces trimmed):
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
944 * <error code="500" type="wait"><internal-server-error/></error>.
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
945 */
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
946 if (js->googletalk)
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
947 js->vcard_timer = purple_timeout_add_seconds(10, set_own_vcard_cb,
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
948 js);
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
949 else
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
950 jabber_set_info(js->gc, purple_account_get_user_info(account));
28916
ea818ffa22b6 jabber: This is more correct.
Paul Aurich <paul@darkrain42.org>
parents: 28915
diff changeset
951 } else if (vcard_hash) {
28915
edb503872793 jabber: The second half; advertise the vCard avatar, whatever it is.
Paul Aurich <paul@darkrain42.org>
parents: 28914
diff changeset
952 /* A photo is in the vCard. Advertise its hash */
edb503872793 jabber: The second half; advertise the vCard avatar, whatever it is.
Paul Aurich <paul@darkrain42.org>
parents: 28914
diff changeset
953 js->avatar_hash = vcard_hash;
edb503872793 jabber: The second half; advertise the vCard avatar, whatever it is.
Paul Aurich <paul@darkrain42.org>
parents: 28914
diff changeset
954 vcard_hash = NULL;
edb503872793 jabber: The second half; advertise the vCard avatar, whatever it is.
Paul Aurich <paul@darkrain42.org>
parents: 28914
diff changeset
955
edb503872793 jabber: The second half; advertise the vCard avatar, whatever it is.
Paul Aurich <paul@darkrain42.org>
parents: 28914
diff changeset
956 /* Send presence to update vcard-temp:x:update */
edb503872793 jabber: The second half; advertise the vCard avatar, whatever it is.
Paul Aurich <paul@darkrain42.org>
parents: 28914
diff changeset
957 jabber_presence_send(js, FALSE);
25817
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
958 }
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
959
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
960 g_free(vcard_hash);
18163
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
961 }
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
962
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
963 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
964 {
21842
ce3d42470adf Fix XMPP buddy icons. Somehow a 'VCard' element got changed to a query
Sean Egan <seanegan@gmail.com>
parents: 21596
diff changeset
965 JabberIq *iq = jabber_iq_new(js, JABBER_IQ_GET);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
966
21842
ce3d42470adf Fix XMPP buddy icons. Somehow a 'VCard' element got changed to a query
Sean Egan <seanegan@gmail.com>
parents: 21596
diff changeset
967 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
968 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
969 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
970
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
971 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
972 }
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
973
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
974 static void jabber_vcard_parse(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
975 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
976 xmlnode *packet, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
977 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
978 char *bare_jid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
979 char *text;
22439
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: 22404
diff changeset
980 char *serverside_alias = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
981 xmlnode *vcard;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
982 PurpleBuddy *b;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
983 JabberBuddyInfo *jbi = data;
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
984 PurpleNotifyUserInfo *user_info;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
985
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
986 if(!jbi)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
987 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
988
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
989 jabber_buddy_info_remove_id(jbi, id);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
990
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
991 if(!from)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
992 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
993
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
994 if(!jabber_buddy_find(js, from, FALSE))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
995 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
996
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
997 /* XXX: handle the error case */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
998
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
999 user_info = jbi->user_info;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1000 bare_jid = jabber_get_bare_jid(from);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1001
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1002 b = purple_find_buddy(js->gc->account, bare_jid);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1003
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1004 if((vcard = xmlnode_get_child(packet, "vCard")) ||
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1005 (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
1006 xmlnode *child;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1007 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
1008 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1009 xmlnode *child2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1010
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1011 if(child->type != XMLNODE_TYPE_TAG)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1012 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1013
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1014 text = xmlnode_get_data(child);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1015 if(text && !strcmp(child->name, "FN")) {
22439
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: 22404
diff changeset
1016 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: 22404
diff changeset
1017 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: 22404
diff changeset
1018
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1019 purple_notify_user_info_add_pair(user_info, _("Full Name"), text);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1020 } else if(!strcmp(child->name, "N")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1021 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
1022 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1023 char *text2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1024
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1025 if(child2->type != XMLNODE_TYPE_TAG)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1026 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1027
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1028 text2 = xmlnode_get_data(child2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1029 if(text2 && !strcmp(child2->name, "FAMILY")) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1030 purple_notify_user_info_add_pair(user_info, _("Family Name"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1031 } else if(text2 && !strcmp(child2->name, "GIVEN")) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1032 purple_notify_user_info_add_pair(user_info, _("Given Name"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1033 } else if(text2 && !strcmp(child2->name, "MIDDLE")) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1034 purple_notify_user_info_add_pair(user_info, _("Middle Name"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1035 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1036 g_free(text2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1037 }
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1038 } else if(text && !strcmp(child->name, "NICKNAME")) {
23933
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: 23744
diff changeset
1039 /* 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: 23744
diff changeset
1040 * 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: 23744
diff changeset
1041 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: 23744
diff changeset
1042 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: 23744
diff changeset
1043 serverside_alias = g_strdup(text);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1044
23933
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: 23744
diff changeset
1045 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: 23744
diff changeset
1046 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1047 } else if(text && !strcmp(child->name, "BDAY")) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1048 purple_notify_user_info_add_pair(user_info, _("Birthday"), text);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1049 } else if(!strcmp(child->name, "ADR")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1050 gboolean address_line_added = FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1051
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1052 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
1053 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1054 char *text2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1055
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1056 if(child2->type != XMLNODE_TYPE_TAG)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1057 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1058
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1059 text2 = xmlnode_get_data(child2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1060 if (text2 == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1061 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1062
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1063 /* 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
1064 * elements are empty. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1065 if (!address_line_added)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1066 {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1067 purple_notify_user_info_add_section_header(user_info, _("Address"));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1068 address_line_added = TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1069 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1070
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1071 if(!strcmp(child2->name, "POBOX")) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1072 purple_notify_user_info_add_pair(user_info, _("P.O. Box"), text2);
28069
82ac0bef7d89 jabber: Handle "Extended Address" correctly.
Paul Aurich <paul@darkrain42.org>
parents: 28031
diff changeset
1073 } else if (g_str_equal(child2->name, "EXTADD") || g_str_equal(child2->name, "EXTADR")) {
82ac0bef7d89 jabber: Handle "Extended Address" correctly.
Paul Aurich <paul@darkrain42.org>
parents: 28031
diff changeset
1074 /*
82ac0bef7d89 jabber: Handle "Extended Address" correctly.
Paul Aurich <paul@darkrain42.org>
parents: 28031
diff changeset
1075 * EXTADD is correct, EXTADR is generated by other
82ac0bef7d89 jabber: Handle "Extended Address" correctly.
Paul Aurich <paul@darkrain42.org>
parents: 28031
diff changeset
1076 * clients. The next time someone reads this, remove
82ac0bef7d89 jabber: Handle "Extended Address" correctly.
Paul Aurich <paul@darkrain42.org>
parents: 28031
diff changeset
1077 * EXTADR.
82ac0bef7d89 jabber: Handle "Extended Address" correctly.
Paul Aurich <paul@darkrain42.org>
parents: 28031
diff changeset
1078 */
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1079 purple_notify_user_info_add_pair(user_info, _("Extended Address"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1080 } else if(!strcmp(child2->name, "STREET")) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1081 purple_notify_user_info_add_pair(user_info, _("Street Address"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1082 } else if(!strcmp(child2->name, "LOCALITY")) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1083 purple_notify_user_info_add_pair(user_info, _("Locality"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1084 } else if(!strcmp(child2->name, "REGION")) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1085 purple_notify_user_info_add_pair(user_info, _("Region"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1086 } else if(!strcmp(child2->name, "PCODE")) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1087 purple_notify_user_info_add_pair(user_info, _("Postal Code"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1088 } else if(!strcmp(child2->name, "CTRY")
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1089 || !strcmp(child2->name, "COUNTRY")) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1090 purple_notify_user_info_add_pair(user_info, _("Country"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1091 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1092 g_free(text2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1093 }
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1094
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1095 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: 23182
diff changeset
1096 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: 23182
diff changeset
1097
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1098 } else if(!strcmp(child->name, "TEL")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1099 char *number;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1100 if((child2 = xmlnode_get_child(child, "NUMBER"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1101 /* show what kind of number it is */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1102 number = xmlnode_get_data(child2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1103 if(number) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1104 purple_notify_user_info_add_pair(user_info, _("Telephone"), number);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1105 g_free(number);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1106 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1107 } else if((number = xmlnode_get_data(child))) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1108 /* lots of clients (including purple) do this, but it's
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1109 * out of spec */
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1110 purple_notify_user_info_add_pair(user_info, _("Telephone"), number);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1111 g_free(number);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1112 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1113 } else if(!strcmp(child->name, "EMAIL")) {
19729
1b8af105614d Data in vCards is supposed to be plain text, not HTML. So escape
Mark Doliner <mark@kingant.net>
parents: 19723
diff changeset
1114 char *userid, *escaped;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1115 if((child2 = xmlnode_get_child(child, "USERID"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1116 /* show what kind of email it is */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1117 userid = xmlnode_get_data(child2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1118 if(userid) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1119 char *mailto;
19729
1b8af105614d Data in vCards is supposed to be plain text, not HTML. So escape
Mark Doliner <mark@kingant.net>
parents: 19723
diff changeset
1120 escaped = g_markup_escape_text(userid, -1);
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1121 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: 23182
diff changeset
1122 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: 23182
diff changeset
1123
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1124 g_free(mailto);
19729
1b8af105614d Data in vCards is supposed to be plain text, not HTML. So escape
Mark Doliner <mark@kingant.net>
parents: 19723
diff changeset
1125 g_free(escaped);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1126 g_free(userid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1127 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1128 } else if((userid = xmlnode_get_data(child))) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1129 /* lots of clients (including purple) do this, but it's
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1130 * out of spec */
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1131 char *mailto;
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1132
19729
1b8af105614d Data in vCards is supposed to be plain text, not HTML. So escape
Mark Doliner <mark@kingant.net>
parents: 19723
diff changeset
1133 escaped = g_markup_escape_text(userid, -1);
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1134 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: 23182
diff changeset
1135 purple_notify_user_info_add_pair(user_info, _("Email"), mailto);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1136
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1137 g_free(mailto);
19729
1b8af105614d Data in vCards is supposed to be plain text, not HTML. So escape
Mark Doliner <mark@kingant.net>
parents: 19723
diff changeset
1138 g_free(escaped);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1139 g_free(userid);
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 } else if(!strcmp(child->name, "ORG")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1142 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
1143 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1144 char *text2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1145
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1146 if(child2->type != XMLNODE_TYPE_TAG)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1147 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1148
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1149 text2 = xmlnode_get_data(child2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1150 if(text2 && !strcmp(child2->name, "ORGNAME")) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1151 purple_notify_user_info_add_pair(user_info, _("Organization Name"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1152 } else if(text2 && !strcmp(child2->name, "ORGUNIT")) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1153 purple_notify_user_info_add_pair(user_info, _("Organization Unit"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1154 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1155 g_free(text2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1156 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1157 } else if(text && !strcmp(child->name, "TITLE")) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1158 purple_notify_user_info_add_pair(user_info, _("Title"), text);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1159 } else if(text && !strcmp(child->name, "ROLE")) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1160 purple_notify_user_info_add_pair(user_info, _("Role"), text);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1161 } else if(text && !strcmp(child->name, "DESC")) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1162 purple_notify_user_info_add_pair(user_info, _("Description"), text);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1163 } else if(!strcmp(child->name, "PHOTO") ||
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1164 !strcmp(child->name, "LOGO")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1165 char *bintext = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1166 xmlnode *binval;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1167
28682
d9eb51a3a3a2 jabber: Don't try to pull a photo out of the <PHOTO/> cdata.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
1168 if ((binval = xmlnode_get_child(child, "BINVAL")) &&
d9eb51a3a3a2 jabber: Don't try to pull a photo out of the <PHOTO/> cdata.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
1169 (bintext = xmlnode_get_data(binval))) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1170 gsize size;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1171 guchar *data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1172 gboolean photo = (strcmp(child->name, "PHOTO") == 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1173
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1174 data = purple_base64_decode(bintext, &size);
16515
e340dc515178 disapproval of revision 'a999246dfcbd33c9494afa445d9562aee5e5457c'
Richard Laager <rlaager@wiktel.com>
parents: 16514
diff changeset
1175 if (data) {
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1176 char *img_text;
24641
61e0924de04a Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents: 24640
diff changeset
1177 char *hash;
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1178
16515
e340dc515178 disapproval of revision 'a999246dfcbd33c9494afa445d9562aee5e5457c'
Richard Laager <rlaager@wiktel.com>
parents: 16514
diff changeset
1179 jbi->vcard_imgids = g_slist_prepend(jbi->vcard_imgids, GINT_TO_POINTER(purple_imgstore_add_with_id(g_memdup(data, size), size, "logo.png")));
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1180 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: 23182
diff changeset
1181
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1182 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: 23182
diff changeset
1183
24641
61e0924de04a Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents: 24640
diff changeset
1184 hash = jabber_calculate_data_sha1sum(data, size);
16515
e340dc515178 disapproval of revision 'a999246dfcbd33c9494afa445d9562aee5e5457c'
Richard Laager <rlaager@wiktel.com>
parents: 16514
diff changeset
1185 purple_buddy_icons_set_for_user(js->gc->account, bare_jid,
e340dc515178 disapproval of revision 'a999246dfcbd33c9494afa445d9562aee5e5457c'
Richard Laager <rlaager@wiktel.com>
parents: 16514
diff changeset
1186 data, size, hash);
24641
61e0924de04a Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents: 24640
diff changeset
1187 g_free(hash);
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1188 g_free(img_text);
16515
e340dc515178 disapproval of revision 'a999246dfcbd33c9494afa445d9562aee5e5457c'
Richard Laager <rlaager@wiktel.com>
parents: 16514
diff changeset
1189 }
24641
61e0924de04a Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents: 24640
diff changeset
1190 g_free(bintext);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1191 }
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 g_free(text);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1194 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1195 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1196
22439
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: 22404
diff changeset
1197 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: 22404
diff changeset
1198 /* 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: 22404
diff changeset
1199 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: 22404
diff changeset
1200 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: 22404
diff changeset
1201 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: 22404
diff changeset
1202 }
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1203
22439
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: 22404
diff changeset
1204 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: 22404
diff changeset
1205 }
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: 22404
diff changeset
1206
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1207 g_free(bare_jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1208
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1209 jabber_buddy_info_show_if_ready(jbi);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1210 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1211
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1212 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
1213 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1214 JabberBuddyInfoResource *jbri = data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1215 g_free(jbri);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1216 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1217
28182
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1218 static guint jbir_hash(gconstpointer v)
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1219 {
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1220 if (v)
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1221 return g_str_hash(v);
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1222 else
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1223 return 0;
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1224 }
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1225
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1226 static gboolean jbir_equal(gconstpointer v1, gconstpointer v2)
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1227 {
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1228 const gchar *resource_1 = v1;
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1229 const gchar *resource_2 = v2;
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1230
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1231 return purple_strequal(resource_1, resource_2);
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1232 }
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1233
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
1234 static void jabber_version_parse(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
1235 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
1236 xmlnode *packet, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1237 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1238 JabberBuddyInfo *jbi = data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1239 xmlnode *query;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1240 char *resource_name;
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 g_return_if_fail(jbi != NULL);
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 jabber_buddy_info_remove_id(jbi, id);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1245
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1246 if(!from)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1247 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1248
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1249 resource_name = jabber_get_resource(from);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1250
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1251 if(resource_name) {
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
1252 if (type == JABBER_IQ_RESULT) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1253 if((query = xmlnode_get_child(packet, "query"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1254 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
1255 if(jbr) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1256 xmlnode *node;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1257 if((node = xmlnode_get_child(query, "name"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1258 jbr->client.name = xmlnode_get_data(node);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1259 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1260 if((node = xmlnode_get_child(query, "version"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1261 jbr->client.version = xmlnode_get_data(node);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1262 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1263 if((node = xmlnode_get_child(query, "os"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1264 jbr->client.os = xmlnode_get_data(node);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1265 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1266 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1267 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1268 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1269 g_free(resource_name);
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1272 jabber_buddy_info_show_if_ready(jbi);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1273 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1274
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
1275 static void jabber_last_parse(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
1276 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
1277 xmlnode *packet, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1278 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1279 JabberBuddyInfo *jbi = data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1280 xmlnode *query;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1281 char *resource_name;
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
1282 const char *seconds;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1283
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1284 g_return_if_fail(jbi != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1285
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1286 jabber_buddy_info_remove_id(jbi, id);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1287
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1288 if(!from)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1289 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1290
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1291 resource_name = jabber_get_resource(from);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1292
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1293 if(resource_name) {
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
1294 if (type == JABBER_IQ_RESULT) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1295 if((query = xmlnode_get_child(packet, "query"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1296 seconds = xmlnode_get_attrib(query, "seconds");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1297 if(seconds) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1298 char *end = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1299 long sec = strtol(seconds, &end, 10);
26995
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1300 JabberBuddy *jb = NULL;
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1301 char *resource = NULL;
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1302 char *buddy_name = NULL;
25952
6185767dc03c When getting info from a buddy, update the idle status to the libpurple core
Marcus Lundblad <ml@update.uu.se>
parents: 25804
diff changeset
1303 JabberBuddyResource *jbr = NULL;
26817
3912f55a1633 propagate from branch 'im.pidgin.pidgin' (head fbb4fe5da444943eecc76bdcd6c8ba967790b6c8)
Paul Aurich <paul@darkrain42.org>
parents: 26670 26791
diff changeset
1304
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1305 if(end != seconds) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1306 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
1307 if(jbir) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1308 jbir->idle_seconds = sec;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1309 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1310 }
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26995
diff changeset
1311 /* Update the idle time of the buddy resource, if we got it.
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26995
diff changeset
1312 This will correct the value when a server doesn't mark
26995
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1313 delayed presence and we got the presence when signing on */
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1314 jb = jabber_buddy_find(js, from, FALSE);
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1315 if (jb) {
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1316 resource = jabber_get_resource(from);
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1317 buddy_name = jabber_get_bare_jid(from);
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1318 /* if the resource already has an idle time set, we
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1319 must have gotten it originally from a presence. In
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1320 this case we update it. Otherwise don't update it, to
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1321 avoid setting an idle and not getting informed about
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1322 the resource getting unidle */
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1323 if (resource && buddy_name) {
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1324 jbr = jabber_buddy_find_resource(jb, resource);
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1325 if (jbr) {
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1326 if (jbr->idle) {
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1327 if (sec) {
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1328 jbr->idle = time(NULL) - sec;
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1329 } else {
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1330 jbr->idle = 0;
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1331 }
26994
ed5aec1cff44 Fix a NULL deref if the resource has gone offline by the time we're parsing this reply.
Paul Aurich <paul@darkrain42.org>
parents: 26956
diff changeset
1332
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26995
diff changeset
1333 if (jbr ==
26995
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1334 jabber_buddy_find_resource(jb, NULL)) {
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26995
diff changeset
1335 purple_prpl_got_user_idle(js->gc->account,
26995
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1336 buddy_name, jbr->idle, jbr->idle);
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1337 }
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1338 }
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1339 }
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1340 }
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1341 g_free(resource);
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1342 g_free(buddy_name);
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1343 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1344 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1345 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1346 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1347 g_free(resource_name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1348 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1349
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1350 jabber_buddy_info_show_if_ready(jbi);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1351 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1352
26925
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1353 static void jabber_last_offline_parse(JabberStream *js, const char *from,
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1354 JabberIqType type, const char *id,
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1355 xmlnode *packet, gpointer data)
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1356 {
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1357 JabberBuddyInfo *jbi = data;
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1358 xmlnode *query;
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1359 const char *seconds;
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1360
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1361 g_return_if_fail(jbi != NULL);
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1362
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1363 jabber_buddy_info_remove_id(jbi, id);
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1364
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1365 if(!from)
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1366 return;
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1367
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1368 if (type == JABBER_IQ_RESULT) {
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1369 if((query = xmlnode_get_child(packet, "query"))) {
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1370 seconds = xmlnode_get_attrib(query, "seconds");
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1371 if(seconds) {
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1372 char *end = NULL;
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1373 long sec = strtol(seconds, &end, 10);
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1374 if(end != seconds) {
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1375 jbi->last_seconds = sec;
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1376 }
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1377 }
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1378 jbi->last_message = xmlnode_get_data(query);
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1379 }
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1380 }
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1381
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1382 jabber_buddy_info_show_if_ready(jbi);
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1383 }
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1384
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
1385 static void jabber_time_parse(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
1386 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
1387 xmlnode *packet, gpointer data)
25938
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1388 {
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1389 JabberBuddyInfo *jbi = data;
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1390 JabberBuddyResource *jbr;
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1391 char *resource_name;
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1392
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1393 g_return_if_fail(jbi != NULL);
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1394
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1395 jabber_buddy_info_remove_id(jbi, id);
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1396
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1397 if (!from)
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1398 return;
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1399
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1400 resource_name = jabber_get_resource(from);
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1401 jbr = resource_name ? jabber_buddy_find_resource(jbi->jb, resource_name) : NULL;
25943
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1402 g_free(resource_name);
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1403 if (jbr) {
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
1404 if (type == JABBER_IQ_RESULT) {
25938
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1405 xmlnode *time = xmlnode_get_child(packet, "time");
25939
150282919040 Actually display the buddy's local time.
Paul Aurich <paul@darkrain42.org>
parents: 25938
diff changeset
1406 xmlnode *tzo = time ? xmlnode_get_child(time, "tzo") : NULL;
25943
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1407 char *tzo_data = tzo ? xmlnode_get_data(tzo) : NULL;
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1408 if (tzo_data) {
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1409 char *c = tzo_data;
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1410 int hours, minutes;
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1411 if (tzo_data[0] == 'Z' && tzo_data[1] == '\0') {
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1412 jbr->tz_off = 0;
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1413 } else {
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1414 gboolean offset_positive = (tzo_data[0] == '+');
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1415 /* [+-]HH:MM */
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1416 if (((*c == '+' || *c == '-') && (c = c + 1)) &&
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1417 sscanf(c, "%02d:%02d", &hours, &minutes) == 2) {
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1418 jbr->tz_off = 60*60*hours + 60*minutes;
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1419 if (!offset_positive)
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1420 jbr->tz_off *= -1;
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1421 } else {
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1422 purple_debug_info("jabber", "Ignoring malformed timezone %s",
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1423 tzo_data);
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1424 }
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1425 }
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1426
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1427 g_free(tzo_data);
25938
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1428 }
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1429 }
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1430 }
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1431
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1432 jabber_buddy_info_show_if_ready(jbi);
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1433 }
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1434
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1435 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
1436 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1437 if (js->pending_buddy_info_requests)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1438 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1439 JabberBuddyInfo *jbi;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1440 GSList *l = js->pending_buddy_info_requests;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1441 while (l) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1442 jbi = l->data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1443
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1444 g_slist_free(jbi->ids);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1445 jabber_buddy_info_destroy(jbi);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1446
15666
6eda87b08cdf Don't access the list element after it has been freed.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15627
diff changeset
1447 l = l->next;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1448 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1449
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1450 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
1451 js->pending_buddy_info_requests = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1452 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1453 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1454
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1455 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
1456 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1457 JabberBuddyInfo *jbi = data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1458
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1459 /* remove the pending callbacks */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1460 while(jbi->ids) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1461 char *id = jbi->ids->data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1462 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
1463 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
1464 g_free(id);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1465 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1466
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1467 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
1468 jbi->timeout_handle = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1469
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1470 jabber_buddy_info_show_if_ready(jbi);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1471
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1472 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1473 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1474
16990
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1475 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: 16962
diff changeset
1476 {
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1477 /* 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: 16962
diff changeset
1478 if(!jbr->client.name)
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1479 return FALSE;
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1480
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28916
diff changeset
1481 if(!strcmp(ns, NS_LAST_ACTIVITY)) {
16990
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1482 if(!strcmp(jbr->client.name, "Trillian")) {
20092
ab3c87375b17 another day, another irritating workaround
Nathan Walp <nwalp@pidgin.im>
parents: 20058
diff changeset
1483 /* verified by nwalp 2007/05/09 */
ab3c87375b17 another day, another irritating workaround
Nathan Walp <nwalp@pidgin.im>
parents: 20058
diff changeset
1484 if(!strcmp(jbr->client.version, "3.1.0.121") ||
ab3c87375b17 another day, another irritating workaround
Nathan Walp <nwalp@pidgin.im>
parents: 20058
diff changeset
1485 /* verified by nwalp 2007/09/19 */
ab3c87375b17 another day, another irritating workaround
Nathan Walp <nwalp@pidgin.im>
parents: 20058
diff changeset
1486 !strcmp(jbr->client.version, "3.1.7.0")) {
16990
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1487 return TRUE;
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1488 }
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1489 }
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1490 }
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1491
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1492 return FALSE;
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1493 }
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1494
27333
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1495 static void
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1496 dispatch_queries_for_resource(JabberStream *js, JabberBuddyInfo *jbi,
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1497 gboolean is_bare_jid, const char *jid,
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1498 JabberBuddyResource *jbr)
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1499 {
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1500 JabberIq *iq;
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1501 JabberBuddyInfoResource *jbir;
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1502 char *full_jid = NULL;
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1503 const char *to;
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1504
28182
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1505 if (is_bare_jid && jbr->name) {
27333
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1506 full_jid = g_strdup_printf("%s/%s", jid, jbr->name);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1507 to = full_jid;
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1508 } else
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1509 to = jid;
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1510
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1511 jbir = g_new0(JabberBuddyInfoResource, 1);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1512 g_hash_table_insert(jbi->resources, g_strdup(jbr->name), jbir);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1513
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1514 if(!jbr->client.name) {
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1515 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:version");
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1516 xmlnode_set_attrib(iq->node, "to", to);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1517 jabber_iq_set_callback(iq, jabber_version_parse, jbi);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1518 jbi->ids = g_slist_prepend(jbi->ids, g_strdup(iq->id));
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1519 jabber_iq_send(iq);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1520 }
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1521
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1522 /* this is to fix the feeling of irritation I get when trying
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1523 * to get info on a friend running Trillian, which doesn't
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1524 * respond (with an error or otherwise) to jabber:iq:last
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1525 * requests. There are a number of Trillian users in my
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1526 * office. */
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28916
diff changeset
1527 if(!_client_is_blacklisted(jbr, NS_LAST_ACTIVITY)) {
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28916
diff changeset
1528 iq = jabber_iq_new_query(js, JABBER_IQ_GET, NS_LAST_ACTIVITY);
27333
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1529 xmlnode_set_attrib(iq->node, "to", to);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1530 jabber_iq_set_callback(iq, jabber_last_parse, jbi);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1531 jbi->ids = g_slist_prepend(jbi->ids, g_strdup(iq->id));
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1532 jabber_iq_send(iq);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1533 }
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1534
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1535 if (jbr->tz_off == PURPLE_NO_TZ_OFF &&
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1536 (!jbr->caps.info ||
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28916
diff changeset
1537 jabber_resource_has_capability(jbr, NS_ENTITY_TIME))) {
27333
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1538 xmlnode *child;
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1539 iq = jabber_iq_new(js, JABBER_IQ_GET);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1540 xmlnode_set_attrib(iq->node, "to", to);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1541 child = xmlnode_new_child(iq->node, "time");
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28916
diff changeset
1542 xmlnode_set_namespace(child, NS_ENTITY_TIME);
27333
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1543 jabber_iq_set_callback(iq, jabber_time_parse, jbi);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1544 jbi->ids = g_slist_prepend(jbi->ids, g_strdup(iq->id));
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1545 jabber_iq_send(iq);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1546 }
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1547
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1548 g_free(full_jid);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1549 }
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1550
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1551 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
1552 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1553 JabberIq *iq;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1554 xmlnode *vcard;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1555 GList *resources;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1556 JabberBuddy *jb;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1557 JabberBuddyInfo *jbi;
27334
ea9df9bfa921 If get_info_for_jid is passed a full JID, don't spam that JID with IQs.
Paul Aurich <paul@darkrain42.org>
parents: 27333
diff changeset
1558 const char *slash;
27333
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1559 gboolean is_bare_jid;
15374
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 jb = jabber_buddy_find(js, jid, TRUE);
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 /* invalid JID */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1564 if(!jb)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1565 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1566
27334
ea9df9bfa921 If get_info_for_jid is passed a full JID, don't spam that JID with IQs.
Paul Aurich <paul@darkrain42.org>
parents: 27333
diff changeset
1567 slash = strchr(jid, '/');
ea9df9bfa921 If get_info_for_jid is passed a full JID, don't spam that JID with IQs.
Paul Aurich <paul@darkrain42.org>
parents: 27333
diff changeset
1568 is_bare_jid = (slash == NULL);
27333
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1569
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1570 jbi = g_new0(JabberBuddyInfo, 1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1571 jbi->jid = g_strdup(jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1572 jbi->js = js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1573 jbi->jb = jb;
28182
0c90b164a735 jabber: Fix a crash due to a contact having a resource with jbr->name == NULL
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
1574 jbi->resources = g_hash_table_new_full(jbir_hash, jbir_equal, g_free, jabber_buddy_info_resource_free);
23208
646e96069fcd Use the notify_user_info API for the vcard information instead of creating
Evan Schoenberg <evan.s@dreskin.net>
parents: 23182
diff changeset
1575 jbi->user_info = purple_notify_user_info_new();
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1576
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1577 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
1578
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1579 xmlnode_set_attrib(iq->node, "to", jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1580 vcard = xmlnode_new_child(iq->node, "vCard");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1581 xmlnode_set_namespace(vcard, "vcard-temp");
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 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
1584 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
1585
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1586 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1587
27334
ea9df9bfa921 If get_info_for_jid is passed a full JID, don't spam that JID with IQs.
Paul Aurich <paul@darkrain42.org>
parents: 27333
diff changeset
1588 if (is_bare_jid) {
ea9df9bfa921 If get_info_for_jid is passed a full JID, don't spam that JID with IQs.
Paul Aurich <paul@darkrain42.org>
parents: 27333
diff changeset
1589 for(resources = jb->resources; resources; resources = resources->next) {
ea9df9bfa921 If get_info_for_jid is passed a full JID, don't spam that JID with IQs.
Paul Aurich <paul@darkrain42.org>
parents: 27333
diff changeset
1590 JabberBuddyResource *jbr = resources->data;
ea9df9bfa921 If get_info_for_jid is passed a full JID, don't spam that JID with IQs.
Paul Aurich <paul@darkrain42.org>
parents: 27333
diff changeset
1591 dispatch_queries_for_resource(js, jbi, is_bare_jid, jid, jbr);
ea9df9bfa921 If get_info_for_jid is passed a full JID, don't spam that JID with IQs.
Paul Aurich <paul@darkrain42.org>
parents: 27333
diff changeset
1592 }
ea9df9bfa921 If get_info_for_jid is passed a full JID, don't spam that JID with IQs.
Paul Aurich <paul@darkrain42.org>
parents: 27333
diff changeset
1593 } else {
ea9df9bfa921 If get_info_for_jid is passed a full JID, don't spam that JID with IQs.
Paul Aurich <paul@darkrain42.org>
parents: 27333
diff changeset
1594 JabberBuddyResource *jbr = jabber_buddy_find_resource(jb, slash + 1);
ea9df9bfa921 If get_info_for_jid is passed a full JID, don't spam that JID with IQs.
Paul Aurich <paul@darkrain42.org>
parents: 27333
diff changeset
1595 if (jbr)
ea9df9bfa921 If get_info_for_jid is passed a full JID, don't spam that JID with IQs.
Paul Aurich <paul@darkrain42.org>
parents: 27333
diff changeset
1596 dispatch_queries_for_resource(js, jbi, is_bare_jid, jid, jbr);
ea9df9bfa921 If get_info_for_jid is passed a full JID, don't spam that JID with IQs.
Paul Aurich <paul@darkrain42.org>
parents: 27333
diff changeset
1597 else
ea9df9bfa921 If get_info_for_jid is passed a full JID, don't spam that JID with IQs.
Paul Aurich <paul@darkrain42.org>
parents: 27333
diff changeset
1598 purple_debug_warning("jabber", "jabber_buddy_get_info_for_jid() "
ea9df9bfa921 If get_info_for_jid is passed a full JID, don't spam that JID with IQs.
Paul Aurich <paul@darkrain42.org>
parents: 27333
diff changeset
1599 "was passed JID %s, but there is no corresponding "
ea9df9bfa921 If get_info_for_jid is passed a full JID, don't spam that JID with IQs.
Paul Aurich <paul@darkrain42.org>
parents: 27333
diff changeset
1600 "JabberBuddyResource!\n", jid);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1601 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1602
27333
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1603 if (!jb->resources && is_bare_jid) {
26925
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1604 /* user is offline, send a jabber:iq:last to find out last time online */
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28916
diff changeset
1605 iq = jabber_iq_new_query(js, JABBER_IQ_GET, NS_LAST_ACTIVITY);
26925
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1606 xmlnode_set_attrib(iq->node, "to", jid);
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1607 jabber_iq_set_callback(iq, jabber_last_offline_parse, jbi);
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1608 jbi->ids = g_slist_prepend(jbi->ids, g_strdup(iq->id));
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1609 jabber_iq_send(iq);
9ce0c5bc922c Show when a user was last online (as seen by the server) when doing "Get Info"
Marcus Lundblad <ml@update.uu.se>
parents: 26912
diff changeset
1610 }
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26995
diff changeset
1611
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1612 js->pending_buddy_info_requests = g_slist_prepend(js->pending_buddy_info_requests, jbi);
25861
7f552614ec8a applied changes from a336cc1fd3a1ce815f97303b8d5ae8988f8cbd5b
Ethan Blanton <elb@pidgin.im>
parents: 25069
diff changeset
1613 jbi->timeout_handle = purple_timeout_add_seconds(30, jabber_buddy_get_info_timeout, jbi);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1614 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1615
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1616 void jabber_buddy_get_info(PurpleConnection *gc, const char *who)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1617 {
25286
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
1618 JabberStream *js = purple_connection_get_protocol_data(gc);
24510
5f597914cd01 Don't try to get info for MUC's. Allow getting info for regular JID's and
Paul Aurich <paul@darkrain42.org>
parents: 24507
diff changeset
1619 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: 24507
diff changeset
1620
5f597914cd01 Don't try to get info for MUC's. Allow getting info for regular JID's and
Paul Aurich <paul@darkrain42.org>
parents: 24507
diff changeset
1621 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: 24507
diff changeset
1622 return;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1623
25069
d7dcdba13b88 A JID can have no node (the part before the @), but a chat must have one,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24984
diff changeset
1624 if (jid->node && jabber_chat_find(js, jid->node, jid->domain)) {
24510
5f597914cd01 Don't try to get info for MUC's. Allow getting info for regular JID's and
Paul Aurich <paul@darkrain42.org>
parents: 24507
diff changeset
1625 /* 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: 24507
diff changeset
1626 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: 24507
diff changeset
1627 } 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: 24507
diff changeset
1628 char *bare_jid = jabber_get_bare_jid(who);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1629 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
1630 g_free(bare_jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1631 }
24510
5f597914cd01 Don't try to get info for MUC's. Allow getting info for regular JID's and
Paul Aurich <paul@darkrain42.org>
parents: 24507
diff changeset
1632
5f597914cd01 Don't try to get info for MUC's. Allow getting info for regular JID's and
Paul Aurich <paul@darkrain42.org>
parents: 24507
diff changeset
1633 jabber_id_free(jid);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1634 }
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 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
1637 gboolean invisible)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1638 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1639 PurplePresence *gpresence;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1640 PurpleAccount *account;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1641 PurpleStatus *status;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1642 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
1643 xmlnode *presence;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1644 JabberBuddyState state;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1645 char *msg;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1646 int priority;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1647
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1648 account = purple_connection_get_account(js->gc);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1649 gpresence = purple_account_get_presence(account);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1650 status = purple_presence_get_active_status(gpresence);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1651
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1652 purple_status_to_jabber(status, &state, &msg, &priority);
17563
95affacf6f82 Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents: 17006
diff changeset
1653 presence = jabber_presence_create_js(js, state, msg, priority);
15374
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_free(msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1656
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1657 xmlnode_set_attrib(presence, "to", who);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1658 if(invisible) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1659 xmlnode_set_attrib(presence, "type", "invisible");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1660 jb->invisible |= JABBER_INVIS_BUDDY;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1661 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1662 jb->invisible &= ~JABBER_INVIS_BUDDY;
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1665 jabber_send(js, presence);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1666 xmlnode_free(presence);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1667 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1668
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1669 static void jabber_buddy_make_invisible(PurpleBlistNode *node, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1670 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1671 PurpleBuddy *buddy;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1672 PurpleConnection *gc;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1673 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1674
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1675 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1676
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1677 buddy = (PurpleBuddy *) node;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1678 gc = purple_account_get_connection(purple_buddy_get_account(buddy));
25286
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
1679 js = purple_connection_get_protocol_data(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1680
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1681 jabber_buddy_set_invisibility(js, purple_buddy_get_name(buddy), TRUE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1682 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1683
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1684 static void jabber_buddy_make_visible(PurpleBlistNode *node, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1685 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1686 PurpleBuddy *buddy;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1687 PurpleConnection *gc;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1688 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1689
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1690 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1691
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1692 buddy = (PurpleBuddy *) node;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1693 gc = purple_account_get_connection(purple_buddy_get_account(buddy));
25286
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
1694 js = purple_connection_get_protocol_data(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1695
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1696 jabber_buddy_set_invisibility(js, purple_buddy_get_name(buddy), FALSE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1697 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1698
28327
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1699 static void cancel_presence_notification(gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1700 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1701 PurpleBuddy *buddy;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1702 PurpleConnection *gc;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1703 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1704
28327
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1705 buddy = data;
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1706 gc = purple_account_get_connection(purple_buddy_get_account(buddy));
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1707 js = purple_connection_get_protocol_data(gc);
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1708
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1709 jabber_presence_subscription_set(js, purple_buddy_get_name(buddy), "unsubscribed");
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1710 }
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1711
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1712 static void
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1713 jabber_buddy_cancel_presence_notification(PurpleBlistNode *node,
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1714 gpointer data)
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1715 {
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1716 PurpleBuddy *buddy;
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1717 PurpleAccount *account;
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1718 PurpleConnection *gc;
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1719 const gchar *name;
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1720 char *msg;
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1721
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1722 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1723
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1724 buddy = (PurpleBuddy *) node;
28327
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1725 name = purple_buddy_get_name(buddy);
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1726 account = purple_buddy_get_account(buddy);
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1727 gc = purple_account_get_connection(account);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1728
28327
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1729 msg = g_strdup_printf(_("%s will no longer be able to see your status "
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1730 "updates. Do you want to continue?"), name);
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1731 purple_request_yes_no(gc, NULL, _("Cancel Presence Notification"),
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1732 msg, 0 /* Yes */, account, name, NULL, buddy,
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1733 cancel_presence_notification, NULL /* Do nothing */);
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1734 g_free(msg);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1735 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1736
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1737 static void jabber_buddy_rerequest_auth(PurpleBlistNode *node, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1738 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1739 PurpleBuddy *buddy;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1740 PurpleConnection *gc;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1741 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1742
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1743 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1744
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1745 buddy = (PurpleBuddy *) node;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1746 gc = purple_account_get_connection(purple_buddy_get_account(buddy));
25286
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
1747 js = purple_connection_get_protocol_data(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1748
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1749 jabber_presence_subscription_set(js, purple_buddy_get_name(buddy), "subscribe");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1750 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1751
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1752
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1753 static void jabber_buddy_unsubscribe(PurpleBlistNode *node, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1754 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1755 PurpleBuddy *buddy;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1756 PurpleConnection *gc;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1757 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1758
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1759 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1760
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1761 buddy = (PurpleBuddy *) node;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1762 gc = purple_account_get_connection(purple_buddy_get_account(buddy));
25286
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
1763 js = purple_connection_get_protocol_data(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1764
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1765 jabber_presence_subscription_set(js, purple_buddy_get_name(buddy), "unsubscribe");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1766 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1767
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1768 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: 17600
diff changeset
1769 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: 17600
diff changeset
1770 /* 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: 17600
diff changeset
1771 PurpleBuddy *buddy = (PurpleBuddy *) node;
25286
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
1772 PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy));
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
1773 JabberStream *js = purple_connection_get_protocol_data(gc);
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1774 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: 17600
diff changeset
1775 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: 17600
diff changeset
1776 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: 17600
diff changeset
1777 xmlnode *presence;
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1778 JabberBuddyState state;
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1779 char *msg;
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1780 int priority;
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1781
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1782 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: 17600
diff changeset
1783 presence = jabber_presence_create_js(js, state, msg, priority);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1784
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1785 g_free(msg);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1786
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1787 xmlnode_set_attrib(presence, "to", purple_buddy_get_name(buddy));
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1788
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1789 jabber_send(js, presence);
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1790 xmlnode_free(presence);
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1791 }
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1792 }
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1793
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1794 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: 17600
diff changeset
1795 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: 17600
diff changeset
1796 /* simply create a directed unavailable presence */
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1797 PurpleBuddy *buddy = (PurpleBuddy *) node;
25286
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
1798 PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy));
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
1799 JabberStream *js = purple_connection_get_protocol_data(gc);
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1800 xmlnode *presence;
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1801
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1802 presence = jabber_presence_create_js(js, JABBER_BUDDY_STATE_UNAVAILABLE, NULL, 0);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1803
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1804 xmlnode_set_attrib(presence, "to", purple_buddy_get_name(buddy));
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1805
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1806 jabber_send(js, presence);
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1807 xmlnode_free(presence);
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1808 }
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1809 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1810
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1811 static GList *jabber_buddy_menu(PurpleBuddy *buddy)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1812 {
25286
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
1813 PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy));
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
1814 JabberStream *js = purple_connection_get_protocol_data(gc);
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1815 const char *name = purple_buddy_get_name(buddy);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1816 JabberBuddy *jb = jabber_buddy_find(js, name, TRUE);
17609
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: 17601
diff changeset
1817 GList *jbrs;
15374
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 GList *m = NULL;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1820 PurpleMenuAction *act;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1821
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1822 if(!jb)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1823 return m;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1824
28132
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1825 if (js->protocol_version == JABBER_PROTO_0_9 && jb != js->user_jb) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1826 if(jb->invisible & JABBER_INVIS_BUDDY) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1827 act = purple_menu_action_new(_("Un-hide From"),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1828 PURPLE_CALLBACK(jabber_buddy_make_visible),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1829 NULL, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1830 } else {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1831 act = purple_menu_action_new(_("Temporarily Hide From"),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1832 PURPLE_CALLBACK(jabber_buddy_make_invisible),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1833 NULL, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1834 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1835 m = g_list_append(m, act);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1836 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1837
28132
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1838 if(jb->subscription & JABBER_SUB_FROM && jb != js->user_jb) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1839 act = purple_menu_action_new(_("Cancel Presence Notification"),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1840 PURPLE_CALLBACK(jabber_buddy_cancel_presence_notification),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1841 NULL, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1842 m = g_list_append(m, act);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1843 }
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 if(!(jb->subscription & JABBER_SUB_TO)) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1846 act = purple_menu_action_new(_("(Re-)Request authorization"),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1847 PURPLE_CALLBACK(jabber_buddy_rerequest_auth),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1848 NULL, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1849 m = g_list_append(m, act);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1850
28132
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1851 } else if (jb != js->user_jb) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1852
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1853 /* 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
1854 removed? */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1855 act = purple_menu_action_new(_("Unsubscribe"),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1856 PURPLE_CALLBACK(jabber_buddy_unsubscribe),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1857 NULL, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1858 m = g_list_append(m, act);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1859 }
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1860
28740
51d507e6c8f3 jabber: Add an "Initiate Chat" blist context menu option for GTalk accounts.
eion@robbmob.com
parents: 28682
diff changeset
1861 if (js->googletalk) {
51d507e6c8f3 jabber: Add an "Initiate Chat" blist context menu option for GTalk accounts.
eion@robbmob.com
parents: 28682
diff changeset
1862 act = purple_menu_action_new(_("Initiate _Chat"),
51d507e6c8f3 jabber: Add an "Initiate Chat" blist context menu option for GTalk accounts.
eion@robbmob.com
parents: 28682
diff changeset
1863 PURPLE_CALLBACK(google_buddy_node_chat),
51d507e6c8f3 jabber: Add an "Initiate Chat" blist context menu option for GTalk accounts.
eion@robbmob.com
parents: 28682
diff changeset
1864 NULL, NULL);
51d507e6c8f3 jabber: Add an "Initiate Chat" blist context menu option for GTalk accounts.
eion@robbmob.com
parents: 28682
diff changeset
1865 m = g_list_append(m, act);
51d507e6c8f3 jabber: Add an "Initiate Chat" blist context menu option for GTalk accounts.
eion@robbmob.com
parents: 28682
diff changeset
1866 }
51d507e6c8f3 jabber: Add an "Initiate Chat" blist context menu option for GTalk accounts.
eion@robbmob.com
parents: 28682
diff changeset
1867
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1868 /*
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1869 * 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: 17600
diff changeset
1870 *
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1871 * 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: 17600
diff changeset
1872 * 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: 17600
diff changeset
1873 * 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: 17600
diff changeset
1874 * people don't tend to have a server or other service there.
29111
4ab6f0479bc5 strchr() is safe when searching for an ASCII character in UTF8 strings.
Paul Aurich <paul@darkrain42.org>
parents: 29031
diff changeset
1875 *
4ab6f0479bc5 strchr() is safe when searching for an ASCII character in UTF8 strings.
Paul Aurich <paul@darkrain42.org>
parents: 29031
diff changeset
1876 * TODO: Use disco#info...
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1877 */
29111
4ab6f0479bc5 strchr() is safe when searching for an ASCII character in UTF8 strings.
Paul Aurich <paul@darkrain42.org>
parents: 29031
diff changeset
1878 if (strchr(name, '@') == NULL) {
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1879 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: 17600
diff changeset
1880 PURPLE_CALLBACK(jabber_buddy_login),
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1881 NULL, NULL);
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1882 m = g_list_append(m, act);
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1883 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: 17600
diff changeset
1884 PURPLE_CALLBACK(jabber_buddy_logout),
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1885 NULL, NULL);
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1886 m = g_list_append(m, act);
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1887 }
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1888
17609
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: 17601
diff changeset
1889 /* 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: 17601
diff changeset
1890 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: 17601
diff changeset
1891 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: 17601
diff changeset
1892 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: 17601
diff changeset
1893 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: 17601
diff changeset
1894 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: 17601
diff changeset
1895 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: 17601
diff changeset
1896 JabberAdHocCommands *cmd = commands->data;
17611
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: 17609
diff changeset
1897 act = purple_menu_action_new(cmd->name, PURPLE_CALLBACK(jabber_adhoc_execute_action), cmd, NULL);
17609
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: 17601
diff changeset
1898 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: 17601
diff changeset
1899 }
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: 17601
diff changeset
1900 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1901
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1902 return m;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1903 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1904
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1905 GList *
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1906 jabber_blist_node_menu(PurpleBlistNode *node)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1907 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1908 if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1909 return jabber_buddy_menu((PurpleBuddy *) node);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1910 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1911 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1912 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1913 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1914
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1915
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1916 const char *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1917 jabber_buddy_state_get_name(JabberBuddyState state)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1918 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1919 switch(state) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1920 case JABBER_BUDDY_STATE_UNKNOWN:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1921 return _("Unknown");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1922 case JABBER_BUDDY_STATE_ERROR:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1923 return _("Error");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1924 case JABBER_BUDDY_STATE_UNAVAILABLE:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1925 return _("Offline");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1926 case JABBER_BUDDY_STATE_ONLINE:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1927 return _("Available");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1928 case JABBER_BUDDY_STATE_CHAT:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1929 return _("Chatty");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1930 case JABBER_BUDDY_STATE_AWAY:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1931 return _("Away");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1932 case JABBER_BUDDY_STATE_XA:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1933 return _("Extended Away");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1934 case JABBER_BUDDY_STATE_DND:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1935 return _("Do Not Disturb");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1936 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1937
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1938 return _("Unknown");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1939 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1940
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1941 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
1942 if(!id)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1943 return JABBER_BUDDY_STATE_UNKNOWN;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1944 if(!strcmp(id, "available"))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1945 return JABBER_BUDDY_STATE_ONLINE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1946 if(!strcmp(id, "freeforchat"))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1947 return JABBER_BUDDY_STATE_CHAT;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1948 if(!strcmp(id, "away"))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1949 return JABBER_BUDDY_STATE_AWAY;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1950 if(!strcmp(id, "extended_away"))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1951 return JABBER_BUDDY_STATE_XA;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1952 if(!strcmp(id, "dnd"))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1953 return JABBER_BUDDY_STATE_DND;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1954 if(!strcmp(id, "offline"))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1955 return JABBER_BUDDY_STATE_UNAVAILABLE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1956 if(!strcmp(id, "error"))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1957 return JABBER_BUDDY_STATE_ERROR;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1958
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1959 return JABBER_BUDDY_STATE_UNKNOWN;
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
27445
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1962 const struct {
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1963 const char *name;
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1964 JabberBuddyState state;
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1965 } show_state_pairs[] = {
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1966 { "available", JABBER_BUDDY_STATE_ONLINE },
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1967 { "chat", JABBER_BUDDY_STATE_CHAT },
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1968 { "away", JABBER_BUDDY_STATE_AWAY },
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1969 { "xa", JABBER_BUDDY_STATE_XA },
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1970 { "dnd", JABBER_BUDDY_STATE_DND },
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1971 { "offline", JABBER_BUDDY_STATE_UNAVAILABLE },
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1972 { "error", JABBER_BUDDY_STATE_ERROR },
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1973 { NULL, JABBER_BUDDY_STATE_UNKNOWN }
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1974 };
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1975
27445
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1976 JabberBuddyState jabber_buddy_show_get_state(const char *id)
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1977 {
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1978 int i;
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1979
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1980 g_return_val_if_fail(id != NULL, JABBER_BUDDY_STATE_UNKNOWN);
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1981
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1982 for (i = 0; show_state_pairs[i].name; ++i)
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1983 if (g_str_equal(id, show_state_pairs[i].name))
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1984 return show_state_pairs[i].state;
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1985
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1986 purple_debug_warning("jabber", "Invalid value of presence <show/> "
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1987 "attribute: %s\n", id);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1988 return JABBER_BUDDY_STATE_UNKNOWN;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1989 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1990
27445
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1991 const char *
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1992 jabber_buddy_state_get_show(JabberBuddyState state)
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1993 {
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1994 int i;
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1995
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1996 for (i = 0; show_state_pairs[i].name; ++i)
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1997 if (state == show_state_pairs[i].state)
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1998 return show_state_pairs[i].name;
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
1999
eff7db4db632 Various minor changes to jabber_presence_parse. No functionality changes.
Paul Aurich <paul@darkrain42.org>
parents: 27408
diff changeset
2000 /* purple_debug_warning("jabber", "Unknown buddy state: %d\n", state); */
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2001 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2002 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2003
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2004 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
2005 switch(state) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2006 case JABBER_BUDDY_STATE_CHAT:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2007 return "freeforchat";
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2008 case JABBER_BUDDY_STATE_AWAY:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2009 return "away";
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2010 case JABBER_BUDDY_STATE_XA:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2011 return "extended_away";
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2012 case JABBER_BUDDY_STATE_DND:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2013 return "dnd";
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2014 case JABBER_BUDDY_STATE_ONLINE:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2015 return "available";
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2016 case JABBER_BUDDY_STATE_UNKNOWN:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2017 return "available";
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2018 case JABBER_BUDDY_STATE_ERROR:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2019 return "error";
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2020 case JABBER_BUDDY_STATE_UNAVAILABLE:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2021 return "offline";
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2022 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2023 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2024 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2025
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2026 static void user_search_result_add_buddy_cb(PurpleConnection *gc, GList *row, void *user_data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2027 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2028 /* XXX find out the jid */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2029 purple_blist_request_add_buddy(purple_connection_get_account(gc),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2030 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
2031 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2032
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
2033 static void user_search_result_cb(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
2034 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
2035 xmlnode *packet, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2036 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2037 PurpleNotifySearchResults *results;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2038 PurpleNotifySearchColumn *column;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2039 xmlnode *x, *query, *item, *field;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2040
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2041 /* XXX error checking? */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2042 if(!(query = xmlnode_get_child(packet, "query")))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2043 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2044
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2045 results = purple_notify_searchresults_new();
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2046 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
2047 xmlnode *reported;
19931
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2048 GSList *column_vars = NULL;
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2049
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2050 purple_debug_info("jabber", "new-skool\n");
19931
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2051
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2052 if((reported = xmlnode_get_child(x, "reported"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2053 xmlnode *field = xmlnode_get_child(reported, "field");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2054 while(field) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2055 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
2056 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
2057 if(var) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2058 column = purple_notify_searchresults_column_new(label ? label : var);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2059 purple_notify_searchresults_column_add(results, column);
19931
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2060 column_vars = g_slist_append(column_vars, (char *)var);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2061 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2062 field = xmlnode_get_next_twin(field);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2063 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2064 }
19931
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2065
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2066 item = xmlnode_get_child(x, "item");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2067 while(item) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2068 GList *row = NULL;
19931
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2069 GSList *l;
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2070 xmlnode *valuenode;
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2071 const char *var;
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2072
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2073 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: 19729
diff changeset
2074 /*
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2075 * 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: 19729
diff changeset
2076 * 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: 19729
diff changeset
2077 */
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2078 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: 19729
diff changeset
2079 field != NULL;
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2080 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: 19729
diff changeset
2081 {
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2082 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: 19729
diff changeset
2083 !strcmp(var, l->data) &&
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2084 (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: 19729
diff changeset
2085 {
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2086 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: 19729
diff changeset
2087 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: 19729
diff changeset
2088 break;
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2089 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2090 }
19931
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2091 if (field == NULL)
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2092 /* No data for this column */
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2093 row = g_list_append(row, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2094 }
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2095 purple_notify_searchresults_row_add(results, row);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2096 item = xmlnode_get_next_twin(item);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2097 }
19931
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2098
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2099 g_slist_free(column_vars);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2100 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2101 /* old skool */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2102 purple_debug_info("jabber", "old-skool\n");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2103
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2104 column = purple_notify_searchresults_column_new(_("JID"));
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2105 purple_notify_searchresults_column_add(results, column);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2106 column = purple_notify_searchresults_column_new(_("First Name"));
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2107 purple_notify_searchresults_column_add(results, column);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2108 column = purple_notify_searchresults_column_new(_("Last Name"));
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2109 purple_notify_searchresults_column_add(results, column);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2110 column = purple_notify_searchresults_column_new(_("Nickname"));
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2111 purple_notify_searchresults_column_add(results, column);
23182
e0bcb8cfda74 Use "email" and "Email" consistently. This is potentially controversial,
Richard Laager <rlaager@wiktel.com>
parents: 22834
diff changeset
2112 column = purple_notify_searchresults_column_new(_("Email"));
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2113 purple_notify_searchresults_column_add(results, column);
15374
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 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
2116 const char *jid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2117 xmlnode *node;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2118 GList *row = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2119
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2120 if(!(jid = xmlnode_get_attrib(item, "jid")))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2121 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2122
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2123 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
2124 node = xmlnode_get_child(item, "first");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2125 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
2126 node = xmlnode_get_child(item, "last");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2127 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
2128 node = xmlnode_get_child(item, "nick");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2129 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
2130 node = xmlnode_get_child(item, "email");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2131 row = g_list_append(row, node ? xmlnode_get_data(node) : NULL);
22475
3225c99785b8 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents: 22439
diff changeset
2132 purple_debug_info("jabber", "row=%p\n", row);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2133 purple_notify_searchresults_row_add(results, row);
15374
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
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2137 purple_notify_searchresults_button_add(results, PURPLE_NOTIFY_BUTTON_ADD,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2138 user_search_result_add_buddy_cb);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2139
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2140 purple_notify_searchresults(js->gc, NULL, NULL, _("The following are the results of your search"), results, NULL, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2141 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2142
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2143 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
2144 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2145 xmlnode *query;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2146 JabberIq *iq;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2147 char *dir_server = data;
21120
0cc12e6909e2 don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents: 21113
diff changeset
2148 const char *type;
0cc12e6909e2 don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents: 21113
diff changeset
2149
0cc12e6909e2 don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents: 21113
diff changeset
2150 /* 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
2151 * 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
2152 * a cancel, so skip it */
0cc12e6909e2 don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents: 21113
diff changeset
2153 type = xmlnode_get_attrib(result, "type");
0cc12e6909e2 don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents: 21113
diff changeset
2154 if(type && !strcmp(type, "cancel")) {
0cc12e6909e2 don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents: 21113
diff changeset
2155 g_free(dir_server);
0cc12e6909e2 don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents: 21113
diff changeset
2156 return;
0cc12e6909e2 don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents: 21113
diff changeset
2157 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2158
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2159 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
2160 query = xmlnode_get_child(iq->node, "query");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2161
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2162 xmlnode_insert_child(query, result);
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 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
2165 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
2166 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2167 g_free(dir_server);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2168 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2169
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2170 struct user_search_info {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2171 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2172 char *directory_server;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2173 };
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2174
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2175 static void user_search_cancel_cb(struct user_search_info *usi, PurpleRequestFields *fields)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2176 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2177 g_free(usi->directory_server);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2178 g_free(usi);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2179 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2180
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2181 static void user_search_cb(struct user_search_info *usi, PurpleRequestFields *fields)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2182 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2183 JabberStream *js = usi->js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2184 JabberIq *iq;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2185 xmlnode *query;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2186 GList *groups, *flds;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2187
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2188 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
2189 query = xmlnode_get_child(iq->node, "query");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2190
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2191 for(groups = purple_request_fields_get_groups(fields); groups; groups = groups->next) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2192 for(flds = purple_request_field_group_get_fields(groups->data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2193 flds; flds = flds->next) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2194 PurpleRequestField *field = flds->data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2195 const char *id = purple_request_field_get_id(field);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2196 const char *value = purple_request_field_string_get_value(field);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2197
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2198 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
2199 xmlnode *y = xmlnode_new_child(query, id);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2200 xmlnode_insert_data(y, value, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2201 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2202 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2203 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2204
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2205 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
2206 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
2207 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2208
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2209 g_free(usi->directory_server);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2210 g_free(usi);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2211 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2212
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2213 #if 0
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2214 /* 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
2215
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2216 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2217 * 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
2218 * comments for Jabber User Directories
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2219 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2220 * See discussion thread "Search comment for Jabber is not translatable"
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2221 * in purple-i18n@lists.sourceforge.net (March 2006)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2222 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2223 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
2224 /* 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
2225 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
2226 "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
2227 NULL
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2228 };
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2229 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2230
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
2231 static void user_search_fields_result_cb(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
2232 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
2233 xmlnode *packet, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2234 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2235 xmlnode *query, *x;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2236
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
2237 if (!from)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2238 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2239
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
2240 if (type == JABBER_IQ_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
2241 char *msg = jabber_parse_error(js, packet, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2242
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2243 if(!msg)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2244 msg = g_strdup(_("Unknown error"));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2245
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2246 purple_notify_error(js->gc, _("Directory Query Failed"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2247 _("Could not query the directory server."), msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2248 g_free(msg);
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 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2251 }
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2254 if(!(query = xmlnode_get_child(packet, "query")))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2255 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2256
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2257 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
2258 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
2259 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2260 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2261 struct user_search_info *usi;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2262 xmlnode *instnode;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2263 char *instructions = NULL;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2264 PurpleRequestFields *fields;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2265 PurpleRequestFieldGroup *group;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2266 PurpleRequestField *field;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2267
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2268 /* old skool */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2269 fields = purple_request_fields_new();
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2270 group = purple_request_field_group_new(NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2271 purple_request_fields_add_group(fields, group);
15374
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 if((instnode = xmlnode_get_child(query, "instructions")))
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 char *tmp = xmlnode_get_data(instnode);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2276
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2277 if(tmp)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2278 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2279 /* 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
2280 list in jabber_user_dir_comments[]) */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2281 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
2282 g_free(tmp);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2283 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2284 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2285
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2286 if(!instructions)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2287 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2288 instructions = g_strdup(_("Fill in one or more fields to search "
16915
56042b2f8b64 s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents: 16728
diff changeset
2289 "for any matching XMPP users."));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2290 }
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 if(xmlnode_get_child(query, "first")) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2293 field = purple_request_field_string_new("first", _("First Name"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2294 NULL, FALSE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2295 purple_request_field_group_add_field(group, field);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2296 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2297 if(xmlnode_get_child(query, "last")) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2298 field = purple_request_field_string_new("last", _("Last Name"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2299 NULL, FALSE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2300 purple_request_field_group_add_field(group, field);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2301 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2302 if(xmlnode_get_child(query, "nick")) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2303 field = purple_request_field_string_new("nick", _("Nickname"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2304 NULL, FALSE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2305 purple_request_field_group_add_field(group, field);
15374
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 if(xmlnode_get_child(query, "email")) {
23182
e0bcb8cfda74 Use "email" and "Email" consistently. This is potentially controversial,
Richard Laager <rlaager@wiktel.com>
parents: 22834
diff changeset
2308 field = purple_request_field_string_new("email", _("Email Address"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2309 NULL, FALSE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2310 purple_request_field_group_add_field(group, field);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2311 }
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 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
2314 usi->js = js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2315 usi->directory_server = g_strdup(from);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2316
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2317 purple_request_fields(js->gc, _("Search for XMPP users"),
16915
56042b2f8b64 s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents: 16728
diff changeset
2318 _("Search for XMPP users"), instructions, fields,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2319 _("Search"), G_CALLBACK(user_search_cb),
16442
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: 15823
diff changeset
2320 _("Cancel"), G_CALLBACK(user_search_cancel_cb),
17591
58a145802f0a Fixed weird bug that caused not supplying the account when searching for users.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17582
diff changeset
2321 purple_connection_get_account(js->gc), NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2322 usi);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2323
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2324 g_free(instructions);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2325 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2326 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2327
17600
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: 17591
diff changeset
2328 void jabber_user_search(JabberStream *js, const char *directory)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2329 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2330 JabberIq *iq;
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 /* 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
2333 if(!directory || !*directory) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2334 purple_notify_error(js->gc, _("Invalid Directory"), _("Invalid Directory"), NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2335 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2336 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2337
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2338 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
2339 xmlnode_set_attrib(iq->node, "to", directory);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2340
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2341 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
2342
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2343 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2344 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2345
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2346 void jabber_user_search_begin(PurplePluginAction *action)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2347 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2348 PurpleConnection *gc = (PurpleConnection *) action->context;
25286
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
2349 JabberStream *js = purple_connection_get_protocol_data(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2350
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2351 purple_request_input(gc, _("Enter a User Directory"), _("Enter a User Directory"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2352 _("Select a user directory to search"),
16962
88444e60ea95 Removes 'jabber.org' defaults from XMPP. I think we had agreed this was a good idea.
Sean Egan <seanegan@gmail.com>
parents: 16915
diff changeset
2353 js->user_directories ? js->user_directories->data : NULL,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2354 FALSE, FALSE, NULL,
17600
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: 17591
diff changeset
2355 _("Search Directory"), PURPLE_CALLBACK(jabber_user_search),
16442
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: 15823
diff changeset
2356 _("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: 15823
diff changeset
2357 NULL, NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2358 js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2359 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2360
23445
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2361 gboolean
28911
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28889
diff changeset
2362 jabber_resource_know_capabilities(const JabberBuddyResource *jbr)
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28889
diff changeset
2363 {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28889
diff changeset
2364 return jbr->caps.info != NULL;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28889
diff changeset
2365 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28889
diff changeset
2366
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28889
diff changeset
2367 gboolean
23445
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2368 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: 23253
diff changeset
2369 {
25770
b1b1b75a922e Sprinkle jabber_resource_has_capability in places
Paul Aurich <paul@darkrain42.org>
parents: 25758
diff changeset
2370 const GList *node = NULL;
25784
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
2371 const JabberCapsNodeExts *exts;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2372
25784
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
2373 if (!jbr->caps.info) {
27513
b118127843cc Lower the severity of this message.
Paul Aurich <paul@darkrain42.org>
parents: 27445
diff changeset
2374 purple_debug_info("jabber",
23445
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2375 "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: 23253
diff changeset
2376 return FALSE;
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2377 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2378
25784
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
2379 node = g_list_find_custom(jbr->caps.info->features, cap, (GCompareFunc)strcmp);
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
2380 if (!node && jbr->caps.exts && jbr->caps.info->exts) {
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
2381 const GList *ext;
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
2382 exts = jbr->caps.info->exts;
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
2383 /* Walk through all the enabled caps, checking each list for the cap.
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
2384 * Don't check it twice, though. */
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
2385 for (ext = jbr->caps.exts; ext && !node; ext = ext->next) {
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
2386 GList *features = g_hash_table_lookup(exts->exts, ext->data);
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
2387 if (features)
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
2388 node = g_list_find_custom(features, cap, (GCompareFunc)strcmp);
23445
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2389 }
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2390 }
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2391
25770
b1b1b75a922e Sprinkle jabber_resource_has_capability in places
Paul Aurich <paul@darkrain42.org>
parents: 25758
diff changeset
2392 return (node != NULL);
23445
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2393 }
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2394
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2395 gboolean
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2396 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: 23253
diff changeset
2397 {
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2398 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: 23253
diff changeset
2399
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2400 if (!jbr) {
24984
c814641afcf2 This happens anytime you IM an offline user, and is totally not an error
Mark Doliner <mark@kingant.net>
parents: 24920
diff changeset
2401 purple_debug_info("jabber",
23445
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2402 "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: 23253
diff changeset
2403 return FALSE;
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2404 }
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2405
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2406 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: 23253
diff changeset
2407 }
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2408
25836
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2409 const gchar *
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2410 jabber_resource_get_identity_category_type(const JabberBuddyResource *jbr,
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2411 const gchar *category)
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2412 {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2413 const GList *iter = NULL;
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2414
27064
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
2415 if (jbr->caps.info) {
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
2416 for (iter = jbr->caps.info->identities ; iter ; iter = g_list_next(iter)) {
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
2417 const JabberIdentity *identity =
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
2418 (JabberIdentity *) iter->data;
25836
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2419
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2420 if (strcmp(identity->category, category) == 0) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2421 return identity->type;
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2422 }
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2423 }
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2424 }
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2425
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2426 return NULL;
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2427 }