annotate libpurple/protocols/jabber/buddy.c @ 32767:2ec94166be43

On the way to hiding the PurpleConnection struct. * Added purple_connection_get_flags() and purple_connection_set_flags() * Use purple_connection_ accessor functions.
author andrew.victor@mxit.com
date Tue, 18 Oct 2011 18:47:48 +0000
parents 3caef255ad47
children
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"
30905
ae615b3d3e47 First shot at refactoring the Google-specific XMPP code.
Marcus Lundblad <ml@update.uu.se>
parents: 30031
diff changeset
41 #include "google/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
29453
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
60 static void
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
61 jabber_buddy_resource_free(JabberBuddyResource *jbr)
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
62 {
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
63 g_return_if_fail(jbr != NULL);
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
64
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
65 jbr->jb->resources = g_list_remove(jbr->jb->resources, jbr);
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
66
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
67 while(jbr->commands) {
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
68 JabberAdHocCommands *cmd = jbr->commands->data;
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
69 g_free(cmd->jid);
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
70 g_free(cmd->node);
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
71 g_free(cmd->name);
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
72 g_free(cmd);
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
73 jbr->commands = g_list_delete_link(jbr->commands, jbr->commands);
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
74 }
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
75
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
76 while (jbr->caps.exts) {
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
77 g_free(jbr->caps.exts->data);
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
78 jbr->caps.exts = g_list_delete_link(jbr->caps.exts, jbr->caps.exts);
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
79 }
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
80
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
81 g_free(jbr->name);
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
82 g_free(jbr->status);
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
83 g_free(jbr->thread_id);
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
84 g_free(jbr->client.name);
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
85 g_free(jbr->client.version);
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
86 g_free(jbr->client.os);
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
87 g_free(jbr);
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
88 }
89f072f356ef jabber: --header_contents;
Paul Aurich <paul@darkrain42.org>
parents: 29452
diff changeset
89
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
90 void jabber_buddy_free(JabberBuddy *jb)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
91 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
92 g_return_if_fail(jb != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
93
22770
cc8903c59d6b Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <mark@kingant.net>
parents: 22756
diff changeset
94 g_free(jb->error_msg);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
95 while(jb->resources)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
96 jabber_buddy_resource_free(jb->resources->data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
97
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
98 g_free(jb);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
99 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
100
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
101 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
102 gboolean create)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
103 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
104 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
105 char *realname;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
106
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
107 if (js->buddies == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
108 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
109
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
110 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
111 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
112
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
113 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
114
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
115 if(!jb && create) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
116 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
117 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
118 } 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
119 g_free(realname);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
120
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
121 return jb;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
122 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
123
29450
af4bb8ccc7f5 jabber: Fix the resource_compare_cb function after checking how they're used with GSLists
Paul Aurich <paul@darkrain42.org>
parents: 29449
diff changeset
124 /* Returns -1 if a is a higher priority resource than b, or is
af4bb8ccc7f5 jabber: Fix the resource_compare_cb function after checking how they're used with GSLists
Paul Aurich <paul@darkrain42.org>
parents: 29449
diff changeset
125 * "more available" than b. 0 if they're the same, and 1 if b is
af4bb8ccc7f5 jabber: Fix the resource_compare_cb function after checking how they're used with GSLists
Paul Aurich <paul@darkrain42.org>
parents: 29449
diff changeset
126 * higher priority/more available than a.
af4bb8ccc7f5 jabber: Fix the resource_compare_cb function after checking how they're used with GSLists
Paul Aurich <paul@darkrain42.org>
parents: 29449
diff changeset
127 */
28031
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
128 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
129 {
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
130 const JabberBuddyResource *jbra = a;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
131 const JabberBuddyResource *jbrb = b;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
132 JabberBuddyState state_a, state_b;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
133
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
134 if (jbra->priority != jbrb->priority)
29450
af4bb8ccc7f5 jabber: Fix the resource_compare_cb function after checking how they're used with GSLists
Paul Aurich <paul@darkrain42.org>
parents: 29449
diff changeset
135 return jbra->priority > jbrb->priority ? -1 : 1;
28031
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
136
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
137 /* Fold the states for easier comparison */
29450
af4bb8ccc7f5 jabber: Fix the resource_compare_cb function after checking how they're used with GSLists
Paul Aurich <paul@darkrain42.org>
parents: 29449
diff changeset
138 /* TODO: Differentiate online/chat and away/dnd? */
28031
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
139 switch (jbra->state) {
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
140 case JABBER_BUDDY_STATE_ONLINE:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
141 case JABBER_BUDDY_STATE_CHAT:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
142 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
143 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
144 case JABBER_BUDDY_STATE_AWAY:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
145 case JABBER_BUDDY_STATE_DND:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
146 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
147 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
148 case JABBER_BUDDY_STATE_XA:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
149 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
150 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
151 case JABBER_BUDDY_STATE_UNAVAILABLE:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
152 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
153 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
154 default:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
155 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
156 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
157 }
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
158
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
159 switch (jbrb->state) {
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
160 case JABBER_BUDDY_STATE_ONLINE:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
161 case JABBER_BUDDY_STATE_CHAT:
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_ONLINE;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
163 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
164 case JABBER_BUDDY_STATE_AWAY:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
165 case JABBER_BUDDY_STATE_DND:
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_AWAY;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
167 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
168 case JABBER_BUDDY_STATE_XA:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
169 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
170 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
171 case JABBER_BUDDY_STATE_UNAVAILABLE:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
172 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
173 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
174 default:
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
175 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
176 break;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
177 }
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
178
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
179 if (state_a == state_b) {
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
180 if (jbra->idle == jbrb->idle)
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
181 return 0;
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
182 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
183 (jbra->idle && jbrb->idle && jbra->idle < jbrb->idle))
29450
af4bb8ccc7f5 jabber: Fix the resource_compare_cb function after checking how they're used with GSLists
Paul Aurich <paul@darkrain42.org>
parents: 29449
diff changeset
184 return 1;
28031
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
185 else
29450
af4bb8ccc7f5 jabber: Fix the resource_compare_cb function after checking how they're used with GSLists
Paul Aurich <paul@darkrain42.org>
parents: 29449
diff changeset
186 return -1;
28031
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
187 }
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
188
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
189 if (state_a == JABBER_BUDDY_STATE_ONLINE)
29450
af4bb8ccc7f5 jabber: Fix the resource_compare_cb function after checking how they're used with GSLists
Paul Aurich <paul@darkrain42.org>
parents: 29449
diff changeset
190 return -1;
28031
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
191 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
192 (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
193 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
194 state_b == JABBER_BUDDY_STATE_UNKNOWN))
29450
af4bb8ccc7f5 jabber: Fix the resource_compare_cb function after checking how they're used with GSLists
Paul Aurich <paul@darkrain42.org>
parents: 29449
diff changeset
195 return -1;
28031
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
196 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
197 (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
198 state_b == JABBER_BUDDY_STATE_UNKNOWN))
29450
af4bb8ccc7f5 jabber: Fix the resource_compare_cb function after checking how they're used with GSLists
Paul Aurich <paul@darkrain42.org>
parents: 29449
diff changeset
199 return -1;
28031
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
200 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
201 state_b == JABBER_BUDDY_STATE_UNKNOWN)
29450
af4bb8ccc7f5 jabber: Fix the resource_compare_cb function after checking how they're used with GSLists
Paul Aurich <paul@darkrain42.org>
parents: 29449
diff changeset
202 return -1;
28031
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
203
29450
af4bb8ccc7f5 jabber: Fix the resource_compare_cb function after checking how they're used with GSLists
Paul Aurich <paul@darkrain42.org>
parents: 29449
diff changeset
204 return 1;
28031
02dd3b637d66 jabber: Move the jbr comparison logic to a GCompareFunc
Paul Aurich <paul@darkrain42.org>
parents: 27669
diff changeset
205 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
206
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
207 JabberBuddyResource *jabber_buddy_find_resource(JabberBuddy *jb,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
208 const char *resource)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
209 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
210 GList *l;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
211
29452
86204988c522 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <paul@darkrain42.org>
parents: 29450
diff changeset
212 if (!jb)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
213 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
214
29452
86204988c522 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <paul@darkrain42.org>
parents: 29450
diff changeset
215 if (resource == NULL)
86204988c522 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <paul@darkrain42.org>
parents: 29450
diff changeset
216 return jb->resources ? jb->resources->data : NULL;
86204988c522 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <paul@darkrain42.org>
parents: 29450
diff changeset
217
86204988c522 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <paul@darkrain42.org>
parents: 29450
diff changeset
218 for (l = jb->resources; l; l = l->next)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
219 {
29452
86204988c522 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <paul@darkrain42.org>
parents: 29450
diff changeset
220 JabberBuddyResource *jbr = l->data;
29926
fbefcfbb5377 jabber: Avoid crashing if a buddy has a NULL resource.
Paul Aurich <paul@darkrain42.org>
parents: 29453
diff changeset
221 if (jbr->name && g_str_equal(resource, jbr->name))
29452
86204988c522 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <paul@darkrain42.org>
parents: 29450
diff changeset
222 return jbr;
15374
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
29452
86204988c522 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <paul@darkrain42.org>
parents: 29450
diff changeset
225 return NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
226 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
227
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
228 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
229 int priority, JabberBuddyState state, const char *status)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
230 {
29452
86204988c522 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <paul@darkrain42.org>
parents: 29450
diff changeset
231 /* TODO: Optimization: Only reinsert if priority+state changed */
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
232 JabberBuddyResource *jbr = jabber_buddy_find_resource(jb, resource);
29452
86204988c522 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <paul@darkrain42.org>
parents: 29450
diff changeset
233 if (jbr) {
86204988c522 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <paul@darkrain42.org>
parents: 29450
diff changeset
234 jb->resources = g_list_remove(jb->resources, jbr);
86204988c522 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <paul@darkrain42.org>
parents: 29450
diff changeset
235 } else {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
236 jbr = g_new0(JabberBuddyResource, 1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
237 jbr->jb = jb;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
238 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
239 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
240 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
241 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
242 jbr->priority = priority;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
243 jbr->state = state;
22756
46ab2e2171b8 Simplify
Mark Doliner <mark@kingant.net>
parents: 22475
diff changeset
244 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
245 jbr->status = g_strdup(status);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
246
29452
86204988c522 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <paul@darkrain42.org>
parents: 29450
diff changeset
247 jb->resources = g_list_insert_sorted(jb->resources, jbr,
86204988c522 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <paul@darkrain42.org>
parents: 29450
diff changeset
248 resource_compare_cb);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
249 return jbr;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
250 }
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 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
253 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
254 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
255
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
256 if(!jbr)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
257 return;
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 jabber_buddy_resource_free(jbr);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
260 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
261
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 * 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
264 * 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
265 * 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
266 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
267 * 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
268 * _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
269 * 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
270 * replace vcard-temp
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
271 * --Nathan
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 /* Jabber "set info" (vCard) support */
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
278 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
279 * V-Card format:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
280 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
281 * <vCard prodid='' version='' xmlns=''>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
282 * <FN></FN>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
283 * <N>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
284 * <FAMILY/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
285 * <GIVEN/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
286 * </N>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
287 * <NICKNAME/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
288 * <URL/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
289 * <ADR>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
290 * <STREET/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
291 * <EXTADD/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
292 * <LOCALITY/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
293 * <REGION/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
294 * <PCODE/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
295 * <COUNTRY/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
296 * </ADR>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
297 * <TEL/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
298 * <EMAIL/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
299 * <ORG>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
300 * <ORGNAME/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
301 * <ORGUNIT/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
302 * </ORG>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
303 * <TITLE/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
304 * <ROLE/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
305 * <DESC/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
306 * <BDAY/>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
307 * </vCard>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
308 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
309 * See also:
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 * 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
312 * 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
313 */
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 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
316 * 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
317 * and attributes.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
318 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
319 * 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
320 * 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
321 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
322 * 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
323 * 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
324 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
325 * 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
326 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
327 * 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
328 * 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
329 * "automagically" construct the appropriate XML node tree.
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 * Thoughts on future direction/expansion
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
332 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
333 * This is a "simple" vCard.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
334 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
335 * 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
336 * 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
337 * "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
338 * 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
339 * array.
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 * 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
342 * construction routines.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
343 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
344
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
345 struct vcard_template {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
346 char *label; /* label text pointer */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
347 char *tag; /* tag text */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
348 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
349 } 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
350 {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
351 {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
352 {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
353 {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
354 {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
355 {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
356 {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
357 {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
358 {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
359 {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
360 {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
361 {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
362 {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
363 {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
364 {N_("Organization Unit"), "ORGUNIT", "ORG"},
30089
29df7408df03 Eliminate the name collisions on "Title". I have a few qualms:
Paul Aurich <paul@darkrain42.org>
parents: 30031
diff changeset
365 {N_("Job Title"), "TITLE", NULL},
26308
5c6cf6d1e65f Remove some unused fields. Thanks to Mayank Jain Nawal's email to the
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
366 {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
367 {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
368 {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
369 {"", "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
370 {"", "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
371 {"", "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
372 {NULL, NULL, NULL}
15374
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
375 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
376 * The "vCard" tag's attribute list...
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
377 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
378 struct tag_attr {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
379 char *attr;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
380 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
381 } const vcard_tag_attr_list[] = {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
382 {"prodid", "-//HandGen//NONSGML vGen v1.0//EN"},
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
383 {"version", "2.0", },
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
384 {"xmlns", "vcard-temp", },
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
385 {NULL, NULL},
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
386 };
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
387
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
388
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
389 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
390 * 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
391 * nodes as necessary
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
392 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
393 * Returns pointer to inserted node
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
394 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
395 * 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
396 * 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
397 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
398 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
399 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
400 xmlnode *x = NULL;
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 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
403 * 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
404 * from the vCard template struct.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
405 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
406 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
407 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
408
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
409 while(vc_tp->label != NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
410 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
411 parent_tag = vc_tp->ptag;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
412 break;
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 ++vc_tp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
415 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
416 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
417
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
418 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
419 * If we have a parent 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(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 * 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
424 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
425 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
426 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
427 * Descend?
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
428 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
429 char *grand_parent = g_strdup(parent_tag);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
430 char *parent;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
431
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
432 if((parent = strrchr(grand_parent, '/')) != NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
433 *(parent++) = '\0';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
434 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
435 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
436 x = xmlnode_new_child(start, grand_parent);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
437 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
438 g_free(grand_parent);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
439 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
440 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
441 * 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
442 * Note: may be the "root" node!
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 xmlnode *y;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
445 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
446 return(y);
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 }
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
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 * 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
453 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
454 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
455 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
456
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
457 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
458 * Send vCard info to Jabber server
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
459 */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
460 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
461 {
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
462 PurpleStoredImage *img;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
463 JabberIq *iq;
25286
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
464 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
465 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
466 const struct tag_attr *tag_attr;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
467
32298
515ed916e691 Typo fix
Mark Doliner <mark@kingant.net>
parents: 31813
diff changeset
468 /* if we haven't grabbed the remote vcard yet, we can't
18163
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
469 * assume that what we have here is correct */
32299
fa183182bc2b Update js->initial_avatar_hash if the user tries to set the icon before
Mark Doliner <mark@kingant.net>
parents: 32298
diff changeset
470 if(!js->vcard_fetched) {
fa183182bc2b Update js->initial_avatar_hash if the user tries to set the icon before
Mark Doliner <mark@kingant.net>
parents: 32298
diff changeset
471 PurpleStoredImage *image;
fa183182bc2b Update js->initial_avatar_hash if the user tries to set the icon before
Mark Doliner <mark@kingant.net>
parents: 32298
diff changeset
472 g_free(js->initial_avatar_hash);
fa183182bc2b Update js->initial_avatar_hash if the user tries to set the icon before
Mark Doliner <mark@kingant.net>
parents: 32298
diff changeset
473 image = purple_buddy_icons_find_account_icon(purple_connection_get_account(gc));
fa183182bc2b Update js->initial_avatar_hash if the user tries to set the icon before
Mark Doliner <mark@kingant.net>
parents: 32298
diff changeset
474 if (image != NULL) {
fa183182bc2b Update js->initial_avatar_hash if the user tries to set the icon before
Mark Doliner <mark@kingant.net>
parents: 32298
diff changeset
475 js->initial_avatar_hash =
fa183182bc2b Update js->initial_avatar_hash if the user tries to set the icon before
Mark Doliner <mark@kingant.net>
parents: 32298
diff changeset
476 jabber_calculate_data_hash(purple_imgstore_get_data(image),
32300
fec20ae8373a Fix this indentation. My bad.
Mark Doliner <mark@kingant.net>
parents: 32299
diff changeset
477 purple_imgstore_get_size(image), "sha1");
32299
fa183182bc2b Update js->initial_avatar_hash if the user tries to set the icon before
Mark Doliner <mark@kingant.net>
parents: 32298
diff changeset
478 purple_imgstore_unref(image);
fa183182bc2b Update js->initial_avatar_hash if the user tries to set the icon before
Mark Doliner <mark@kingant.net>
parents: 32298
diff changeset
479 } else {
fa183182bc2b Update js->initial_avatar_hash if the user tries to set the icon before
Mark Doliner <mark@kingant.net>
parents: 32298
diff changeset
480 js->initial_avatar_hash = NULL;
fa183182bc2b Update js->initial_avatar_hash if the user tries to set the icon before
Mark Doliner <mark@kingant.net>
parents: 32298
diff changeset
481 }
18163
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
482 return;
32299
fa183182bc2b Update js->initial_avatar_hash if the user tries to set the icon before
Mark Doliner <mark@kingant.net>
parents: 32298
diff changeset
483 }
18163
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
484
28112
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
485 if (js->vcard_timer) {
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
486 purple_timeout_remove(js->vcard_timer);
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
487 js->vcard_timer = 0;
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
488 }
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
489
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
490 g_free(js->avatar_hash);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
491 js->avatar_hash = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
492
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
493 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
494 * 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
495 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
496 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
497
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
498 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
499 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
500 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
501 vc_node = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
502 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
503
32767
2ec94166be43 On the way to hiding the PurpleConnection struct.
andrew.victor@mxit.com
parents: 32456
diff changeset
504 if ((img = purple_buddy_icons_find_account_icon(purple_connection_get_account(gc)))) {
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
505 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
506 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
507 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
508 gchar *enc;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
509
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
510 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
511 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
512 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
513 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
514 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
515
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 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
517 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
518 /* 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
519 * 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
520 * 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
521 * 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
522 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
523 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
524 }
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
525 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
526 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
527 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
528 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
529 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
530
30031
9f59abd49def jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents: 29961
diff changeset
531 js->avatar_hash =
9f59abd49def jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents: 29961
diff changeset
532 jabber_calculate_data_hash(avatar_data, avatar_len, "sha1");
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
533
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
534 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
535 g_free(enc);
28217
5a38fab8c199 This was a memory leak, right?
Mark Doliner <mark@kingant.net>
parents: 28182
diff changeset
536 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
537 } 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
538 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
539 /* 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
540 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
541 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
542 }
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
543 }
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
544
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
545 if (vc_node != NULL) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
546 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
547 xmlnode_insert_child(iq->node, vc_node);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
548 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
549
370d8eba2ce0 Send presence updates from jabber_set_info, not jabber_set_buddy_icon.
Paul Aurich <paul@darkrain42.org>
parents: 25817
diff changeset
550 /* 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
551 jabber_presence_send(js, FALSE);
15374
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
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
555 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
556 {
25832
2d92bbe6807b Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents: 25822
diff changeset
557 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
558
26791
80437c891f92 Publish only 'new' xmlns of avatars and delete old.
Paul Aurich <paul@darkrain42.org>
parents: 26788
diff changeset
559 /* Publish the avatar as specified in XEP-0084 */
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32379
diff changeset
560 jabber_avatar_set(purple_connection_get_protocol_data(gc), img);
26791
80437c891f92 Publish only 'new' xmlns of avatars and delete old.
Paul Aurich <paul@darkrain42.org>
parents: 26788
diff changeset
561 /* 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
562 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
563
25832
2d92bbe6807b Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents: 25822
diff changeset
564 /* 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
565 * 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
566 * 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
567 * an existing icon/stored image). */
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
568 }
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 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
571 * 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
572 *
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
573 * 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
574 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
575 static void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
576 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
577 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
578 xmlnode *vc_node;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
579 PurpleRequestField *field;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
580 const char *text;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
581 char *p;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
582 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
583 const struct tag_attr *tag_attr;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
584
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
585 vc_node = xmlnode_new("vCard");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
586
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
587 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
588 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
589
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
590 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
591 if (*vc_tp->label == '\0')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
592 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
593
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
594 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
595 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
596
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
597
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
598 if (text != NULL && *text != '\0') {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
599 xmlnode *xp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
600
28889
fa7f3426ed13 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents: 28740
diff changeset
601 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
602
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
603 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
604 NULL, vc_tp->tag)) != NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
605
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
606 xmlnode_insert_data(xp, text, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
607 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
608 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
609 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
610
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
611 p = xmlnode_to_str(vc_node, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
612 xmlnode_free(vc_node);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
613
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
614 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
615 serv_set_info(gc, p);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
616
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
617 g_free(p);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
618 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
619
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
620 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
621 * This gets executed by the proto action
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
622 *
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
623 * 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
624 * 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
625 * calls the set_vcard dialog.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
626 */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
627 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
628 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
629 PurpleConnection *gc = (PurpleConnection *) action->context;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
630 PurpleRequestFields *fields;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
631 PurpleRequestFieldGroup *group;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
632 PurpleRequestField *field;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
633 const struct vcard_template *vc_tp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
634 const char *user_info;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
635 char *cdata = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
636 xmlnode *x_vc_data = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
637
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
638 fields = purple_request_fields_new();
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
639 group = purple_request_field_group_new(NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
640 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
641
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
642 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
643 * Get existing, XML-formatted, user info
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
644 */
32767
2ec94166be43 On the way to hiding the PurpleConnection struct.
andrew.victor@mxit.com
parents: 32456
diff changeset
645 if((user_info = purple_account_get_user_info(purple_connection_get_account(gc))) != NULL)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
646 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
647
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
648 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
649 * 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
650 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
651 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
652 xmlnode *data_node;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
653 if((vc_tp->label)[0] == '\0')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
654 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
655
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
656 if (x_vc_data != NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
657 if(vc_tp->ptag == NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
658 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
659 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
660 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
661 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
662 g_free(tag);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
663 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
664 if(data_node)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
665 cdata = xmlnode_get_data(data_node);
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
668 if(strcmp(vc_tp->tag, "DESC") == 0) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
669 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
670 _(vc_tp->label), cdata,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
671 TRUE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
672 } else {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
673 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
674 _(vc_tp->label), cdata,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
675 FALSE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
676 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
677
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
678 g_free(cdata);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
679 cdata = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
680
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
681 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
682 }
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 if(x_vc_data != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
685 xmlnode_free(x_vc_data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
686
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
687 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
688 _("Edit XMPP vCard"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
689 _("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
690 "information with which you feel comfortable."),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
691 fields,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
692 _("Save"), G_CALLBACK(jabber_format_info),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
693 _("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
694 purple_connection_get_account(gc), NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
695 gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
696 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
697
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
698 /*---------------------------------------*/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
699 /* End Jabber "set info" (vCard) support */
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
702 /******
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
703 * 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
704 ******/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
705
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
706 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
707 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
708 /* 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
709 if (jbi->timeout_handle > 0)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
710 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
711
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
712 g_free(jbi->jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
713 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
714 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
715 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
716 g_free(jbi);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
717 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
718
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
719 static void
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
720 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
721 JabberBuddyResource *jbr)
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 JabberBuddyInfoResource *jbir;
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
724 PurpleNotifyUserInfo *user_info;
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
725
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
726 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
727 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
728
32377
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
729 if (jbr && jbr->client.name) {
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
730 char *tmp =
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
731 g_strdup_printf("%s%s%s", jbr->client.name,
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
732 (jbr->client.version ? " " : ""),
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
733 (jbr->client.version ? jbr->client.version : ""));
32378
090736a289da Add purple_notify_user_info_prepend_pair_plaintext and use it in a few
Mark Doliner <mark@kingant.net>
parents: 32377
diff changeset
734 /* TODO: Check whether it's correct to call prepend_pair_html,
090736a289da Add purple_notify_user_info_prepend_pair_plaintext and use it in a few
Mark Doliner <mark@kingant.net>
parents: 32377
diff changeset
735 or if we should be using prepend_pair_plaintext */
32379
0cc718e10344 Actually commit the purple_notify_user_info_prepend_pair_plaintext
Mark Doliner <mark@kingant.net>
parents: 32378
diff changeset
736 purple_notify_user_info_prepend_pair_html(user_info, _("Client"), tmp);
32377
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
737 g_free(tmp);
32371
7422716de669 Now that there's no speed difference between
Mark Doliner <mark@kingant.net>
parents: 32368
diff changeset
738
32378
090736a289da Add purple_notify_user_info_prepend_pair_plaintext and use it in a few
Mark Doliner <mark@kingant.net>
parents: 32377
diff changeset
739 if (jbr->client.os) {
090736a289da Add purple_notify_user_info_prepend_pair_plaintext and use it in a few
Mark Doliner <mark@kingant.net>
parents: 32377
diff changeset
740 /* TODO: Check whether it's correct to call prepend_pair_html,
090736a289da Add purple_notify_user_info_prepend_pair_plaintext and use it in a few
Mark Doliner <mark@kingant.net>
parents: 32377
diff changeset
741 or if we should be using prepend_pair_plaintext */
32379
0cc718e10344 Actually commit the purple_notify_user_info_prepend_pair_plaintext
Mark Doliner <mark@kingant.net>
parents: 32378
diff changeset
742 purple_notify_user_info_prepend_pair_html(user_info, _("Operating System"), jbr->client.os);
32378
090736a289da Add purple_notify_user_info_prepend_pair_plaintext and use it in a few
Mark Doliner <mark@kingant.net>
parents: 32377
diff changeset
743 }
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
744 }
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 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
747 time_t now_t;
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
748 struct tm *now;
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
749 char *timestamp;
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
750 time(&now_t);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
751 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
752 now = gmtime(&now_t);
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
753
27407
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
754 timestamp =
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
755 g_strdup_printf("%s %c%02d%02d", purple_time_format(now),
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
756 jbr->tz_off < 0 ? '-' : '+',
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
757 abs(jbr->tz_off / (60*60)),
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
758 abs((jbr->tz_off % (60*60)) / 60));
32378
090736a289da Add purple_notify_user_info_prepend_pair_plaintext and use it in a few
Mark Doliner <mark@kingant.net>
parents: 32377
diff changeset
759 purple_notify_user_info_prepend_pair_plaintext(user_info, _("Local Time"), timestamp);
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
760 g_free(timestamp);
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
32377
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
763 if (jbir && jbir->idle_seconds > 0) {
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
764 char *idle = purple_str_seconds_to_string(jbir->idle_seconds);
32378
090736a289da Add purple_notify_user_info_prepend_pair_plaintext and use it in a few
Mark Doliner <mark@kingant.net>
parents: 32377
diff changeset
765 purple_notify_user_info_prepend_pair_plaintext(user_info, _("Idle"), idle);
32377
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
766 g_free(idle);
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
767 }
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
768
32377
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
769 if (jbr) {
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
770 char *purdy = NULL;
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
771 char *tmp;
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
772 char priority[12];
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
773 const char *status_name = jabber_buddy_state_get_name(jbr->state);
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
774
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
775 if (jbr->status) {
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
776 tmp = purple_markup_escape_text(jbr->status, -1);
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
777 purdy = purple_strdup_withhtml(tmp);
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
778 g_free(tmp);
27407
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
779
32377
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
780 if (purple_strequal(status_name, purdy))
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
781 status_name = NULL;
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
782 }
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
783
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
784 tmp = g_strdup_printf("%s%s%s", (status_name ? status_name : ""),
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
785 ((status_name && purdy) ? ": " : ""),
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
786 (purdy ? purdy : ""));
32379
0cc718e10344 Actually commit the purple_notify_user_info_prepend_pair_plaintext
Mark Doliner <mark@kingant.net>
parents: 32378
diff changeset
787 purple_notify_user_info_prepend_pair_html(user_info, _("Status"), tmp);
32377
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
788
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
789 g_snprintf(priority, sizeof(priority), "%d", jbr->priority);
32378
090736a289da Add purple_notify_user_info_prepend_pair_plaintext and use it in a few
Mark Doliner <mark@kingant.net>
parents: 32377
diff changeset
790 purple_notify_user_info_prepend_pair_plaintext(user_info, _("Priority"), priority);
32377
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
791
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
792 g_free(tmp);
32377
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
793 g_free(purdy);
c0e01ee203b1 I tried to disapprove this, but it didn't seem to work. Maybe I
Mark Doliner <mark@kingant.net>
parents: 32375
diff changeset
794 } else {
32378
090736a289da Add purple_notify_user_info_prepend_pair_plaintext and use it in a few
Mark Doliner <mark@kingant.net>
parents: 32377
diff changeset
795 purple_notify_user_info_prepend_pair_plaintext(user_info, _("Status"), _("Unknown"));
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
796 }
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
797 }
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
798
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
799 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
800 {
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
801 char *resource_name;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
802 JabberBuddyResource *jbr;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
803 GList *resources;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
804 PurpleNotifyUserInfo *user_info;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
805
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
806 /* not yet */
27407
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
807 if (jbi->ids)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
808 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
809
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
810 user_info = jbi->user_info;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
811 resource_name = jabber_get_resource(jbi->jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
812
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
813 /* If we have one or more pairs from the vcard, put a section break above it */
32368
6283c0f2b02f Change PurpleNotifyUserInfo->user_info_entries from a GList to a GQueue.
Mark Doliner <mark@kingant.net>
parents: 32366
diff changeset
814 if (g_queue_get_length(purple_notify_user_info_get_entries(user_info)))
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
815 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
816
27407
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
817 /* Add the information about the user's resource(s) */
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
818 if (resource_name) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
819 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
820 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
821 } else {
29452
86204988c522 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <paul@darkrain42.org>
parents: 29450
diff changeset
822 /* TODO: This is in priority-ascending order (lowest prio first), because
86204988c522 jabber: Treat JabberBuddy->resources as a sorted list.
Paul Aurich <paul@darkrain42.org>
parents: 29450
diff changeset
823 * everything is prepended. Is that ok? */
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
824 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
825 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
826
26912
6028712210ca Add a section break between resources in "Get info"
Marcus Lundblad <ml@update.uu.se>
parents: 26817
diff changeset
827 /* 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
828 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
829 section */
27407
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
830 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
831 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
832
27406
77fc855ed8b7 Factor out the duplicated code for displaying XMPP Get Info
Paul Aurich <paul@darkrain42.org>
parents: 27405
diff changeset
833 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
834
32378
090736a289da Add purple_notify_user_info_prepend_pair_plaintext and use it in a few
Mark Doliner <mark@kingant.net>
parents: 32377
diff changeset
835 if (jbr->name) {
090736a289da Add purple_notify_user_info_prepend_pair_plaintext and use it in a few
Mark Doliner <mark@kingant.net>
parents: 32377
diff changeset
836 /* TODO: Check whether it's correct to call prepend_pair_html,
090736a289da Add purple_notify_user_info_prepend_pair_plaintext and use it in a few
Mark Doliner <mark@kingant.net>
parents: 32377
diff changeset
837 or if we should be using prepend_pair_plaintext */
32379
0cc718e10344 Actually commit the purple_notify_user_info_prepend_pair_plaintext
Mark Doliner <mark@kingant.net>
parents: 32378
diff changeset
838 purple_notify_user_info_prepend_pair_html(user_info, _("Resource"), jbr->name);
32378
090736a289da Add purple_notify_user_info_prepend_pair_plaintext and use it in a few
Mark Doliner <mark@kingant.net>
parents: 32377
diff changeset
839 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
840 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
841 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
842
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
843 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
844 /* 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
845 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
846
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
847 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
848 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
849 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
850 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
851 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
852 title = _("Uptime");
29231
b8d47ed6ceb1 This string is already translated; so it need not be translated again.
Paul Aurich <paul@darkrain42.org>
parents: 29143
diff changeset
853 message = last;
b8d47ed6ceb1 This string is already translated; so it need not be translated again.
Paul Aurich <paul@darkrain42.org>
parents: 29143
diff changeset
854 last = NULL;
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
855 } 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
856 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
857 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
858 }
32378
090736a289da Add purple_notify_user_info_prepend_pair_plaintext and use it in a few
Mark Doliner <mark@kingant.net>
parents: 32377
diff changeset
859 purple_notify_user_info_prepend_pair_plaintext(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
860 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
861 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
862 }
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
863
29143
516e53916962 Tighter scoping and slightly less memory usage.
Paul Aurich <paul@darkrain42.org>
parents: 29115
diff changeset
864 if (!is_domain) {
516e53916962 Tighter scoping and slightly less memory usage.
Paul Aurich <paul@darkrain42.org>
parents: 29115
diff changeset
865 gchar *status =
516e53916962 Tighter scoping and slightly less memory usage.
Paul Aurich <paul@darkrain42.org>
parents: 29115
diff changeset
866 g_strdup_printf("%s%s%s", _("Offline"),
516e53916962 Tighter scoping and slightly less memory usage.
Paul Aurich <paul@darkrain42.org>
parents: 29115
diff changeset
867 jbi->last_message ? ": " : "",
516e53916962 Tighter scoping and slightly less memory usage.
Paul Aurich <paul@darkrain42.org>
parents: 29115
diff changeset
868 jbi->last_message ? jbi->last_message : "");
32378
090736a289da Add purple_notify_user_info_prepend_pair_plaintext and use it in a few
Mark Doliner <mark@kingant.net>
parents: 32377
diff changeset
869 /* TODO: Check whether it's correct to call prepend_pair_html,
090736a289da Add purple_notify_user_info_prepend_pair_plaintext and use it in a few
Mark Doliner <mark@kingant.net>
parents: 32377
diff changeset
870 or if we should be using prepend_pair_plaintext */
32379
0cc718e10344 Actually commit the purple_notify_user_info_prepend_pair_plaintext
Mark Doliner <mark@kingant.net>
parents: 32378
diff changeset
871 purple_notify_user_info_prepend_pair_html(user_info, _("Status"), status);
29143
516e53916962 Tighter scoping and slightly less memory usage.
Paul Aurich <paul@darkrain42.org>
parents: 29115
diff changeset
872 g_free(status);
516e53916962 Tighter scoping and slightly less memory usage.
Paul Aurich <paul@darkrain42.org>
parents: 29115
diff changeset
873 }
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
874 }
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
875
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
876 g_free(resource_name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
877
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
878 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
879
27407
91e0cd125f3d Style and comments
Paul Aurich <paul@darkrain42.org>
parents: 27406
diff changeset
880 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
881 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
882 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
883 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
884
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
885 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
886
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
887 jabber_buddy_info_destroy(jbi);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
888 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
889
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
890 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
891 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
892 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
893 char *comp_id;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
894
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
895 if(!id)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
896 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
897
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
898 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
899 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
900 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
901 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
902 g_free(comp_id);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
903 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
904 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
905 l = l->next;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
906 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
907 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
908
28112
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
909 static gboolean
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
910 set_own_vcard_cb(gpointer data)
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
911 {
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
912 JabberStream *js = data;
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
913 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
914
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
915 js->vcard_timer = 0;
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
916
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
917 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
918
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
919 return FALSE;
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
920 }
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
921
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
922 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
923 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
924 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
925 {
25817
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
926 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
927 char *txt, *vcard_hash = NULL;
28112
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
928 PurpleAccount *account;
18163
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
929
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
930 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
931 xmlnode *error;
27273
7d4eb0834107 Missing newline
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
932 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
933
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
934 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
935 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
936 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
937 }
18163
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
938
28112
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
939 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
940
18163
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
941 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
942 (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
943 {
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
944 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
945 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
946 g_free(txt);
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
947 } else {
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
948 /* 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
949 }
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
950
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
951 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
952
25817
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
953 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
954 (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
955 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
956 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
957 if (bintext) {
d4847cef4a84 jabber: Fix a crash when the vcard includes an empty BINVAL.
Paul Aurich <paul@darkrain42.org>
parents: 28360
diff changeset
958 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
959 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
960
28382
d4847cef4a84 jabber: Fix a crash when the vcard includes an empty BINVAL.
Paul Aurich <paul@darkrain42.org>
parents: 28360
diff changeset
961 if (data) {
30031
9f59abd49def jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents: 29961
diff changeset
962 vcard_hash = jabber_calculate_data_hash(data, size, "sha1");
28382
d4847cef4a84 jabber: Fix a crash when the vcard includes an empty BINVAL.
Paul Aurich <paul@darkrain42.org>
parents: 28360
diff changeset
963 g_free(data);
d4847cef4a84 jabber: Fix a crash when the vcard includes an empty BINVAL.
Paul Aurich <paul@darkrain42.org>
parents: 28360
diff changeset
964 }
25817
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
965 }
18163
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
966 }
25817
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
967
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
968 /* 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
969 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
970 /*
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
971 * 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
972 * 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
973 * it returns an error (namespaces trimmed):
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
974 * <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
975 */
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
976 if (js->googletalk)
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
977 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
978 js);
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
979 else
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 28069
diff changeset
980 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
981 } 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
982 /* 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
983 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
984 vcard_hash = NULL;
edb503872793 jabber: The second half; advertise the vCard avatar, whatever it is.
Paul Aurich <paul@darkrain42.org>
parents: 28914
diff changeset
985
edb503872793 jabber: The second half; advertise the vCard avatar, whatever it is.
Paul Aurich <paul@darkrain42.org>
parents: 28914
diff changeset
986 /* 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
987 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
988 }
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
989
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 25815
diff changeset
990 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
991 }
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
992
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
993 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
994 {
21842
ce3d42470adf Fix XMPP buddy icons. Somehow a 'VCard' element got changed to a query
Sean Egan <seanegan@gmail.com>
parents: 21596
diff changeset
995 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
996
21842
ce3d42470adf Fix XMPP buddy icons. Somehow a 'VCard' element got changed to a query
Sean Egan <seanegan@gmail.com>
parents: 21596
diff changeset
997 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
998 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
999 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
1000
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
1001 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
1002 }
703872bf33c6 server-side jabber vcards now take precedence over local vcards, so
Nathan Walp <nwalp@pidgin.im>
parents: 18124
diff changeset
1003
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
1004 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
1005 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
1006 xmlnode *packet, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1007 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1008 char *bare_jid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1009 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
1010 char *serverside_alias = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1011 xmlnode *vcard;
29437
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1012 PurpleAccount *account;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1013 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
1014 PurpleNotifyUserInfo *user_info;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1015
29437
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1016 g_return_if_fail(jbi != NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1017
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1018 jabber_buddy_info_remove_id(jbi, id);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1019
29437
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1020 if (type == JABBER_IQ_ERROR) {
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1021 purple_debug_info("jabber", "Got error response for vCard\n");
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1022 jabber_buddy_info_show_if_ready(jbi);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1023 return;
29437
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1024 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1025
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
1026 user_info = jbi->user_info;
29437
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1027 account = purple_connection_get_account(js->gc);
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1028 bare_jid = jabber_get_bare_jid(from ? from : purple_account_get_username(account));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1029
29437
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1030 /* TODO: Is the query xmlns='vcard-temp' version of this still necessary? */
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1031 if((vcard = xmlnode_get_child(packet, "vCard")) ||
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1032 (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
1033 xmlnode *child;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1034 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
1035 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1036 xmlnode *child2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1037
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1038 if(child->type != XMLNODE_TYPE_TAG)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1039 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1040
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1041 text = xmlnode_get_data(child);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1042 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
1043 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
1044 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
1045
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1046 purple_notify_user_info_add_pair_plaintext(user_info, _("Full Name"), text);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1047 } else if(!strcmp(child->name, "N")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1048 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
1049 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1050 char *text2;
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 if(child2->type != XMLNODE_TYPE_TAG)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1053 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1054
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1055 text2 = xmlnode_get_data(child2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1056 if(text2 && !strcmp(child2->name, "FAMILY")) {
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1057 purple_notify_user_info_add_pair_plaintext(user_info, _("Family Name"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1058 } else if(text2 && !strcmp(child2->name, "GIVEN")) {
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1059 purple_notify_user_info_add_pair_plaintext(user_info, _("Given Name"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1060 } else if(text2 && !strcmp(child2->name, "MIDDLE")) {
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1061 purple_notify_user_info_add_pair_plaintext(user_info, _("Middle Name"), text2);
15374
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 g_free(text2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1064 }
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1065 } 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
1066 /* 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
1067 * 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
1068 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
1069 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
1070 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
1071
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1072 purple_notify_user_info_add_pair_plaintext(user_info, _("Nickname"), text);
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
1073 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1074 } else if(text && !strcmp(child->name, "BDAY")) {
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1075 purple_notify_user_info_add_pair_plaintext(user_info, _("Birthday"), text);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1076 } else if(!strcmp(child->name, "ADR")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1077 gboolean address_line_added = FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1078
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1079 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
1080 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1081 char *text2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1082
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1083 if(child2->type != XMLNODE_TYPE_TAG)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1084 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1085
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1086 text2 = xmlnode_get_data(child2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1087 if (text2 == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1088 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1089
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1090 /* 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
1091 * elements are empty. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1092 if (!address_line_added)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1093 {
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
1094 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
1095 address_line_added = TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1096 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1097
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1098 if(!strcmp(child2->name, "POBOX")) {
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1099 purple_notify_user_info_add_pair_plaintext(user_info, _("P.O. Box"), text2);
28069
82ac0bef7d89 jabber: Handle "Extended Address" correctly.
Paul Aurich <paul@darkrain42.org>
parents: 28031
diff changeset
1100 } 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
1101 /*
82ac0bef7d89 jabber: Handle "Extended Address" correctly.
Paul Aurich <paul@darkrain42.org>
parents: 28031
diff changeset
1102 * EXTADD is correct, EXTADR is generated by other
82ac0bef7d89 jabber: Handle "Extended Address" correctly.
Paul Aurich <paul@darkrain42.org>
parents: 28031
diff changeset
1103 * clients. The next time someone reads this, remove
82ac0bef7d89 jabber: Handle "Extended Address" correctly.
Paul Aurich <paul@darkrain42.org>
parents: 28031
diff changeset
1104 * EXTADR.
82ac0bef7d89 jabber: Handle "Extended Address" correctly.
Paul Aurich <paul@darkrain42.org>
parents: 28031
diff changeset
1105 */
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1106 purple_notify_user_info_add_pair_plaintext(user_info, _("Extended Address"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1107 } else if(!strcmp(child2->name, "STREET")) {
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1108 purple_notify_user_info_add_pair_plaintext(user_info, _("Street Address"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1109 } else if(!strcmp(child2->name, "LOCALITY")) {
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1110 purple_notify_user_info_add_pair_plaintext(user_info, _("Locality"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1111 } else if(!strcmp(child2->name, "REGION")) {
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1112 purple_notify_user_info_add_pair_plaintext(user_info, _("Region"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1113 } else if(!strcmp(child2->name, "PCODE")) {
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1114 purple_notify_user_info_add_pair_plaintext(user_info, _("Postal Code"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1115 } else if(!strcmp(child2->name, "CTRY")
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1116 || !strcmp(child2->name, "COUNTRY")) {
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1117 purple_notify_user_info_add_pair_plaintext(user_info, _("Country"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1118 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1119 g_free(text2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1120 }
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1121
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
1122 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
1123 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
1124
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1125 } else if(!strcmp(child->name, "TEL")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1126 char *number;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1127 if((child2 = xmlnode_get_child(child, "NUMBER"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1128 /* show what kind of number it is */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1129 number = xmlnode_get_data(child2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1130 if(number) {
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1131 purple_notify_user_info_add_pair_plaintext(user_info, _("Telephone"), number);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1132 g_free(number);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1133 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1134 } else if((number = xmlnode_get_data(child))) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1135 /* 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
1136 * out of spec */
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1137 purple_notify_user_info_add_pair_plaintext(user_info, _("Telephone"), number);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1138 g_free(number);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1139 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1140 } 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
1141 char *userid, *escaped;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1142 if((child2 = xmlnode_get_child(child, "USERID"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1143 /* show what kind of email it is */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1144 userid = xmlnode_get_data(child2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1145 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
1146 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
1147 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
1148 mailto = g_strdup_printf("<a href=\"mailto:%s\">%s</a>", escaped, escaped);
32366
99ca503ea087 Rename purple_notify_user_info_add_pair to
Mark Doliner <mark@kingant.net>
parents: 32301
diff changeset
1149 purple_notify_user_info_add_pair_html(user_info, _("Email"), mailto);
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
1150
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 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
1152 g_free(escaped);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1153 g_free(userid);
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 } else if((userid = xmlnode_get_data(child))) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1156 /* 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
1157 * 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
1158 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
1159
19729
1b8af105614d Data in vCards is supposed to be plain text, not HTML. So escape
Mark Doliner <mark@kingant.net>
parents: 19723
diff changeset
1160 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
1161 mailto = g_strdup_printf("<a href=\"mailto:%s\">%s</a>", escaped, escaped);
32366
99ca503ea087 Rename purple_notify_user_info_add_pair to
Mark Doliner <mark@kingant.net>
parents: 32301
diff changeset
1162 purple_notify_user_info_add_pair_html(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
1163
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1164 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
1165 g_free(escaped);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1166 g_free(userid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1167 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1168 } else if(!strcmp(child->name, "ORG")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1169 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
1170 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1171 char *text2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1172
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1173 if(child2->type != XMLNODE_TYPE_TAG)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1174 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1175
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1176 text2 = xmlnode_get_data(child2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1177 if(text2 && !strcmp(child2->name, "ORGNAME")) {
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1178 purple_notify_user_info_add_pair_plaintext(user_info, _("Organization Name"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1179 } else if(text2 && !strcmp(child2->name, "ORGUNIT")) {
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1180 purple_notify_user_info_add_pair_plaintext(user_info, _("Organization Unit"), text2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1181 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1182 g_free(text2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1183 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1184 } else if(text && !strcmp(child->name, "TITLE")) {
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1185 purple_notify_user_info_add_pair_plaintext(user_info, _("Job Title"), text);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1186 } else if(text && !strcmp(child->name, "ROLE")) {
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1187 purple_notify_user_info_add_pair_plaintext(user_info, _("Role"), text);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1188 } else if(text && !strcmp(child->name, "DESC")) {
31810
0123c69ec0e5 Add a purple_notify_user_info_add_pair_plaintext function that accepts a
Mark Doliner <mark@kingant.net>
parents: 30089
diff changeset
1189 purple_notify_user_info_add_pair_plaintext(user_info, _("Description"), text);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1190 } else if(!strcmp(child->name, "PHOTO") ||
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1191 !strcmp(child->name, "LOGO")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1192 char *bintext = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1193 xmlnode *binval;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1194
28682
d9eb51a3a3a2 jabber: Don't try to pull a photo out of the <PHOTO/> cdata.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
1195 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
1196 (bintext = xmlnode_get_data(binval))) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1197 gsize size;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1198 guchar *data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1199 gboolean photo = (strcmp(child->name, "PHOTO") == 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1200
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1201 data = purple_base64_decode(bintext, &size);
16515
e340dc515178 disapproval of revision 'a999246dfcbd33c9494afa445d9562aee5e5457c'
Richard Laager <rlaager@wiktel.com>
parents: 16514
diff changeset
1202 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
1203 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
1204 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
1205
16515
e340dc515178 disapproval of revision 'a999246dfcbd33c9494afa445d9562aee5e5457c'
Richard Laager <rlaager@wiktel.com>
parents: 16514
diff changeset
1206 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
1207 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
1208
32366
99ca503ea087 Rename purple_notify_user_info_add_pair to
Mark Doliner <mark@kingant.net>
parents: 32301
diff changeset
1209 purple_notify_user_info_add_pair_html(user_info, (photo ? _("Photo") : _("Logo")), img_text);
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
1210
30031
9f59abd49def jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents: 29961
diff changeset
1211 hash = jabber_calculate_data_hash(data, size, "sha1");
29437
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1212 purple_buddy_icons_set_for_user(account, bare_jid, 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
1213 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
1214 g_free(img_text);
16515
e340dc515178 disapproval of revision 'a999246dfcbd33c9494afa445d9562aee5e5457c'
Richard Laager <rlaager@wiktel.com>
parents: 16514
diff changeset
1215 }
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
1216 g_free(bintext);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1217 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1218 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1219 g_free(text);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1220 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1221 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1222
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
1223 if (serverside_alias) {
29437
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1224 PurpleBuddy *b;
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
1225 /* If we found a serverside alias, set it and tell the core */
29437
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1226 serv_got_alias(js->gc, bare_jid, serverside_alias);
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1227 b = purple_find_buddy(account, bare_jid);
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
1228 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
1229 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
1230 }
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1231
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
1232 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
1233 }
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
1234
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1235 g_free(bare_jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1236
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1237 jabber_buddy_info_show_if_ready(jbi);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1238 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1239
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1240 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
1241 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1242 JabberBuddyInfoResource *jbri = data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1243 g_free(jbri);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1244 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1245
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
1246 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
1247 {
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
1248 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
1249 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
1250 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
1251 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
1252 }
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
1253
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
1254 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
1255 {
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
1256 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
1257 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
1258
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
1259 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
1260 }
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
1261
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
1262 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
1263 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
1264 xmlnode *packet, gpointer data)
15374
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 JabberBuddyInfo *jbi = data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1267 xmlnode *query;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1268 char *resource_name;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1269
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1270 g_return_if_fail(jbi != NULL);
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_remove_id(jbi, id);
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 if(!from)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1275 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1276
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1277 resource_name = jabber_get_resource(from);
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 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
1280 if (type == JABBER_IQ_RESULT) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1281 if((query = xmlnode_get_child(packet, "query"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1282 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
1283 if(jbr) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1284 xmlnode *node;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1285 if((node = xmlnode_get_child(query, "name"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1286 jbr->client.name = xmlnode_get_data(node);
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((node = xmlnode_get_child(query, "version"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1289 jbr->client.version = xmlnode_get_data(node);
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 if((node = xmlnode_get_child(query, "os"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1292 jbr->client.os = xmlnode_get_data(node);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1293 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1294 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1295 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1296 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1297 g_free(resource_name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1298 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1299
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1300 jabber_buddy_info_show_if_ready(jbi);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1301 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1302
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
1303 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
1304 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
1305 xmlnode *packet, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1306 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1307 JabberBuddyInfo *jbi = data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1308 xmlnode *query;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1309 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
1310 const char *seconds;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1311
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1312 g_return_if_fail(jbi != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1313
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1314 jabber_buddy_info_remove_id(jbi, id);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1315
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1316 if(!from)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1317 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1318
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1319 resource_name = jabber_get_resource(from);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1320
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1321 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
1322 if (type == JABBER_IQ_RESULT) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1323 if((query = xmlnode_get_child(packet, "query"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1324 seconds = xmlnode_get_attrib(query, "seconds");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1325 if(seconds) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1326 char *end = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1327 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
1328 JabberBuddy *jb = NULL;
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1329 char *resource = NULL;
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1330 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
1331 JabberBuddyResource *jbr = NULL;
26817
3912f55a1633 propagate from branch 'im.pidgin.pidgin' (head fbb4fe5da444943eecc76bdcd6c8ba967790b6c8)
Paul Aurich <paul@darkrain42.org>
parents: 26670 26791
diff changeset
1332
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1333 if(end != seconds) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1334 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
1335 if(jbir) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1336 jbir->idle_seconds = sec;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1337 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1338 }
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26995
diff changeset
1339 /* 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
1340 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
1341 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
1342 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
1343 if (jb) {
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1344 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
1345 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
1346 /* 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
1347 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
1348 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
1349 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
1350 the resource getting unidle */
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1351 if (resource && buddy_name) {
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1352 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
1353 if (jbr) {
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1354 if (jbr->idle) {
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1355 if (sec) {
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1356 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
1357 } else {
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1358 jbr->idle = 0;
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1359 }
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
1360
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26995
diff changeset
1361 if (jbr ==
26995
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1362 jabber_buddy_find_resource(jb, NULL)) {
32767
2ec94166be43 On the way to hiding the PurpleConnection struct.
andrew.victor@mxit.com
parents: 32456
diff changeset
1363 purple_prpl_got_user_idle(purple_connection_get_account(js->gc),
26995
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1364 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
1365 }
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1366 }
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1367 }
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1368 }
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1369 g_free(resource);
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1370 g_free(buddy_name);
56460ebd1558 This whole section was partially using spaces instead of tabs.
Paul Aurich <paul@darkrain42.org>
parents: 26994
diff changeset
1371 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1372 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1373 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1374 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1375 g_free(resource_name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1376 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1377
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1378 jabber_buddy_info_show_if_ready(jbi);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1379 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1380
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
1381 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
1382 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
1383 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
1384 {
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
1385 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
1386 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
1387 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
1388
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
1389 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
1390
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
1391 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
1392
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
1393 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
1394 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
1395 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
1396 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
1397 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
1398 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
1399 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
1400 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
1401 }
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
1402 }
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
1403 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
1404 }
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
1405 }
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
1406
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
1407 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
1408 }
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
1409
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
1410 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
1411 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
1412 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
1413 {
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1414 JabberBuddyInfo *jbi = data;
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1415 JabberBuddyResource *jbr;
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1416 char *resource_name;
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1417
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1418 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
1419
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1420 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
1421
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1422 if (!from)
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1423 return;
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1424
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1425 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
1426 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
1427 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
1428 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
1429 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
1430 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
1431 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
1432 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
1433 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
1434 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
1435 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
1436 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
1437 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
1438 } else {
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1439 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
1440 /* [+-]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
1441 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
1442 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
1443 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
1444 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
1445 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
1446 } else {
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1447 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
1448 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
1449 }
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1450 }
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1451
b73c79f7490c Fix the timezone parsing (again) and display the timezone in the info dialog
Paul Aurich <paul@darkrain42.org>
parents: 25941
diff changeset
1452 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
1453 }
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1454 }
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1455 }
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1456
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1457 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
1458 }
45c33d60c547 Retrieve and display buddy's local time in Get Info dialog
Paul Aurich <paul@darkrain42.org>
parents: 24984
diff changeset
1459
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1460 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
1461 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1462 if (js->pending_buddy_info_requests)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1463 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1464 JabberBuddyInfo *jbi;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1465 GSList *l = js->pending_buddy_info_requests;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1466 while (l) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1467 jbi = l->data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1468
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1469 g_slist_free(jbi->ids);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1470 jabber_buddy_info_destroy(jbi);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1471
15666
6eda87b08cdf Don't access the list element after it has been freed.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15627
diff changeset
1472 l = l->next;
15374
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1475 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
1476 js->pending_buddy_info_requests = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1477 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1478 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1479
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1480 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
1481 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1482 JabberBuddyInfo *jbi = data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1483
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1484 /* remove the pending callbacks */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1485 while(jbi->ids) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1486 char *id = jbi->ids->data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1487 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
1488 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
1489 g_free(id);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1490 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1491
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1492 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
1493 jbi->timeout_handle = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1494
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1495 jabber_buddy_info_show_if_ready(jbi);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1496
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1497 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1498 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1499
16990
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1500 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
1501 {
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1502 /* 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
1503 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
1504 return FALSE;
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1505
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28916
diff changeset
1506 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
1507 if(!strcmp(jbr->client.name, "Trillian")) {
20092
ab3c87375b17 another day, another irritating workaround
Nathan Walp <nwalp@pidgin.im>
parents: 20058
diff changeset
1508 /* verified by nwalp 2007/05/09 */
ab3c87375b17 another day, another irritating workaround
Nathan Walp <nwalp@pidgin.im>
parents: 20058
diff changeset
1509 if(!strcmp(jbr->client.version, "3.1.0.121") ||
ab3c87375b17 another day, another irritating workaround
Nathan Walp <nwalp@pidgin.im>
parents: 20058
diff changeset
1510 /* verified by nwalp 2007/09/19 */
ab3c87375b17 another day, another irritating workaround
Nathan Walp <nwalp@pidgin.im>
parents: 20058
diff changeset
1511 !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
1512 return TRUE;
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1513 }
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1514 }
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1515 }
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1516
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1517 return FALSE;
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1518 }
f8d0c9bbb9ae gross hack that will save me time in 30 second chunks
Nathan Walp <nwalp@pidgin.im>
parents: 16962
diff changeset
1519
27333
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1520 static void
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1521 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
1522 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
1523 JabberBuddyResource *jbr)
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1524 {
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1525 JabberIq *iq;
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1526 JabberBuddyInfoResource *jbir;
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1527 char *full_jid = NULL;
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1528 const char *to;
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1529
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
1530 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
1531 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
1532 to = full_jid;
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1533 } else
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1534 to = jid;
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1535
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1536 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
1537 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
1538
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1539 if(!jbr->client.name) {
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1540 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
1541 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
1542 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
1543 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
1544 jabber_iq_send(iq);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1545 }
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 /* 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
1548 * 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
1549 * 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
1550 * 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
1551 * office. */
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28916
diff changeset
1552 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
1553 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
1554 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
1555 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
1556 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
1557 jabber_iq_send(iq);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1558 }
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1559
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1560 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
1561 (!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
1562 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
1563 xmlnode *child;
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1564 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
1565 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
1566 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
1567 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
1568 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
1569 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
1570 jabber_iq_send(iq);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1571 }
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1572
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1573 g_free(full_jid);
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1574 }
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1575
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1576 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
1577 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1578 JabberIq *iq;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1579 xmlnode *vcard;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1580 GList *resources;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1581 JabberBuddy *jb;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1582 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
1583 const char *slash;
27333
c408e4dc3101 Factor the per-resource IQs out into their own function.
Paul Aurich <paul@darkrain42.org>
parents: 27274
diff changeset
1584 gboolean is_bare_jid;
15374
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 jb = jabber_buddy_find(js, jid, TRUE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1587
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1588 /* invalid JID */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1589 if(!jb)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1590 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1591
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
1592 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
1593 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
1594
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1595 jbi = g_new0(JabberBuddyInfo, 1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1596 jbi->jid = g_strdup(jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1597 jbi->js = js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1598 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
1599 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
1600 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
1601
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1602 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
1603
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1604 xmlnode_set_attrib(iq->node, "to", jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1605 vcard = xmlnode_new_child(iq->node, "vCard");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1606 xmlnode_set_namespace(vcard, "vcard-temp");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1607
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1608 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
1609 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
1610
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1611 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1612
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
1613 if (is_bare_jid) {
29437
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1614 if (jb->resources) {
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1615 for(resources = jb->resources; resources; resources = resources->next) {
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1616 JabberBuddyResource *jbr = resources->data;
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1617 dispatch_queries_for_resource(js, jbi, is_bare_jid, jid, jbr);
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1618 }
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1619 } else {
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1620 /* user is offline, send a jabber:iq:last to find out last time online */
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1621 iq = jabber_iq_new_query(js, JABBER_IQ_GET, NS_LAST_ACTIVITY);
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1622 xmlnode_set_attrib(iq->node, "to", jid);
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1623 jabber_iq_set_callback(iq, jabber_last_offline_parse, jbi);
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1624 jbi->ids = g_slist_prepend(jbi->ids, g_strdup(iq->id));
4e7fd81a39c6 jabber: Fix getting info on your own JID, under some circumstances.
Paul Aurich <paul@darkrain42.org>
parents: 29231
diff changeset
1625 jabber_iq_send(iq);
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
1626 }
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
1627 } 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
1628 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
1629 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
1630 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
1631 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
1632 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
1633 "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
1634 "JabberBuddyResource!\n", jid);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1635 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1636
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1637 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
1638 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
1639 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1640
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1641 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
1642 {
25286
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
1643 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
1644 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
1645
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
1646 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
1647 return;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1648
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
1649 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
1650 /* 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
1651 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
1652 } 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
1653 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
1654 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
1655 g_free(bare_jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1656 }
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
1657
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
1658 jabber_id_free(jid);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1659 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1660
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1661 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
1662 gboolean invisible)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1663 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1664 PurplePresence *gpresence;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1665 PurpleAccount *account;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1666 PurpleStatus *status;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1667 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
1668 xmlnode *presence;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1669 JabberBuddyState state;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1670 char *msg;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1671 int priority;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1672
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1673 account = purple_connection_get_account(js->gc);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1674 gpresence = purple_account_get_presence(account);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1675 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
1676
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1677 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
1678 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
1679
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1680 g_free(msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1681
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1682 xmlnode_set_attrib(presence, "to", who);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1683 if(invisible) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1684 xmlnode_set_attrib(presence, "type", "invisible");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1685 jb->invisible |= JABBER_INVIS_BUDDY;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1686 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1687 jb->invisible &= ~JABBER_INVIS_BUDDY;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1688 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1689
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1690 jabber_send(js, presence);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1691 xmlnode_free(presence);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1692 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1693
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1694 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
1695 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1696 PurpleBuddy *buddy;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1697 PurpleConnection *gc;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1698 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1699
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1700 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
1701
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1702 buddy = (PurpleBuddy *) node;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1703 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
1704 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
1705
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1706 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
1707 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1708
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1709 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
1710 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1711 PurpleBuddy *buddy;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1712 PurpleConnection *gc;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1713 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1714
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1715 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
1716
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1717 buddy = (PurpleBuddy *) node;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1718 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
1719 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
1720
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1721 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
1722 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1723
28327
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1724 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
1725 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1726 PurpleBuddy *buddy;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1727 PurpleConnection *gc;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1728 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1729
28327
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1730 buddy = data;
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1731 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
1732 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
1733
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1734 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
1735 }
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1736
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1737 static void
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1738 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
1739 gpointer data)
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1740 {
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1741 PurpleBuddy *buddy;
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1742 PurpleAccount *account;
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1743 PurpleConnection *gc;
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1744 const gchar *name;
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1745 char *msg;
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1746
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1747 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
1748
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1749 buddy = (PurpleBuddy *) node;
28327
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1750 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
1751 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
1752 gc = purple_account_get_connection(account);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1753
28327
b6a1ade72555 jabber: Prompt before cancelling presence notification to a buddy.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1754 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
1755 "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
1756 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
1757 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
1758 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
1759 g_free(msg);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1760 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1761
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1762 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
1763 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1764 PurpleBuddy *buddy;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1765 PurpleConnection *gc;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1766 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1767
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1768 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
1769
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1770 buddy = (PurpleBuddy *) node;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1771 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
1772 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
1773
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1774 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
1775 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1776
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1777
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1778 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
1779 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1780 PurpleBuddy *buddy;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1781 PurpleConnection *gc;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1782 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1783
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1784 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
1785
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1786 buddy = (PurpleBuddy *) node;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1787 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
1788 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
1789
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1790 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
1791 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1792
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1793 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
1794 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
1795 /* 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
1796 PurpleBuddy *buddy = (PurpleBuddy *) node;
25286
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
1797 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
1798 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
1799 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
1800 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
1801 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
1802 xmlnode *presence;
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1803 JabberBuddyState state;
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1804 char *msg;
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1805 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
1806
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1807 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
1808 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
1809
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1810 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
1811
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1812 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
1813
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1814 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
1815 xmlnode_free(presence);
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1816 }
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1817 }
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1818
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1819 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
1820 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
1821 /* 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
1822 PurpleBuddy *buddy = (PurpleBuddy *) node;
25286
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
1823 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
1824 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
1825 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
1826
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1827 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
1828
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23986
diff changeset
1829 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
1830
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1831 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
1832 xmlnode_free(presence);
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1833 }
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1834 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1835
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1836 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
1837 {
25286
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
1838 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
1839 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
1840 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
1841 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
1842 GList *jbrs;
15374
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 GList *m = NULL;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1845 PurpleMenuAction *act;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1846
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1847 if(!jb)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1848 return m;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1849
29961
618c4165d4f8 jabber: Treat the version properly.
Paul Aurich <paul@darkrain42.org>
parents: 29926
diff changeset
1850 if (js->protocol_version.major == 0 && js->protocol_version.minor == 9 &&
618c4165d4f8 jabber: Treat the version properly.
Paul Aurich <paul@darkrain42.org>
parents: 29926
diff changeset
1851 jb != js->user_jb) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1852 if(jb->invisible & JABBER_INVIS_BUDDY) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1853 act = purple_menu_action_new(_("Un-hide From"),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1854 PURPLE_CALLBACK(jabber_buddy_make_visible),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1855 NULL, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1856 } else {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1857 act = purple_menu_action_new(_("Temporarily Hide From"),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1858 PURPLE_CALLBACK(jabber_buddy_make_invisible),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1859 NULL, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1860 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1861 m = g_list_append(m, act);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1862 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1863
28132
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1864 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
1865 act = purple_menu_action_new(_("Cancel Presence Notification"),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1866 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
1867 NULL, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1868 m = g_list_append(m, act);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1869 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1870
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1871 if(!(jb->subscription & JABBER_SUB_TO)) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1872 act = purple_menu_action_new(_("(Re-)Request authorization"),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1873 PURPLE_CALLBACK(jabber_buddy_rerequest_auth),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1874 NULL, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1875 m = g_list_append(m, act);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1876
28132
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 28112
diff changeset
1877 } else if (jb != js->user_jb) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1878
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1879 /* 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
1880 removed? */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1881 act = purple_menu_action_new(_("Unsubscribe"),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1882 PURPLE_CALLBACK(jabber_buddy_unsubscribe),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1883 NULL, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1884 m = g_list_append(m, act);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1885 }
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1886
28740
51d507e6c8f3 jabber: Add an "Initiate Chat" blist context menu option for GTalk accounts.
eion@robbmob.com
parents: 28682
diff changeset
1887 if (js->googletalk) {
51d507e6c8f3 jabber: Add an "Initiate Chat" blist context menu option for GTalk accounts.
eion@robbmob.com
parents: 28682
diff changeset
1888 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
1889 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
1890 NULL, NULL);
51d507e6c8f3 jabber: Add an "Initiate Chat" blist context menu option for GTalk accounts.
eion@robbmob.com
parents: 28682
diff changeset
1891 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
1892 }
51d507e6c8f3 jabber: Add an "Initiate Chat" blist context menu option for GTalk accounts.
eion@robbmob.com
parents: 28682
diff changeset
1893
17601
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1894 /*
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1895 * 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
1896 *
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1897 * 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
1898 * 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
1899 * 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
1900 * 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
1901 *
4ab6f0479bc5 strchr() is safe when searching for an ASCII character in UTF8 strings.
Paul Aurich <paul@darkrain42.org>
parents: 29031
diff changeset
1902 * 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
1903 */
29111
4ab6f0479bc5 strchr() is safe when searching for an ASCII character in UTF8 strings.
Paul Aurich <paul@darkrain42.org>
parents: 29031
diff changeset
1904 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
1905 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
1906 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
1907 NULL, NULL);
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1908 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
1909 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
1910 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
1911 NULL, NULL);
906ed2836a04 Implemented logging in/out of gateways, as explained in XEP-0100.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17600
diff changeset
1912 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
1913 }
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25438
diff changeset
1914
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
1915 /* 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
1916 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
1917 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
1918 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
1919 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
1920 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
1921 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
1922 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
1923 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
1924 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
1925 }
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
1926 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1927
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1928 return m;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1929 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1930
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1931 GList *
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1932 jabber_blist_node_menu(PurpleBlistNode *node)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1933 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1934 if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1935 return jabber_buddy_menu((PurpleBuddy *) node);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1936 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1937 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1938 }
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
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1942 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
1943 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1944 /* XXX find out the jid */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1945 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
1946 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
1947 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1948
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
1949 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
1950 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
1951 xmlnode *packet, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1952 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1953 PurpleNotifySearchResults *results;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1954 PurpleNotifySearchColumn *column;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1955 xmlnode *x, *query, *item, *field;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1956
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1957 /* XXX error checking? */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1958 if(!(query = xmlnode_get_child(packet, "query")))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1959 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1960
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1961 results = purple_notify_searchresults_new();
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1962 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
1963 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
1964 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
1965
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1966 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
1967
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1968 if((reported = xmlnode_get_child(x, "reported"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1969 xmlnode *field = xmlnode_get_child(reported, "field");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1970 while(field) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1971 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
1972 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
1973 if(var) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
1974 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
1975 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
1976 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
1977 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1978 field = xmlnode_get_next_twin(field);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1979 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1980 }
19931
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
1981
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1982 item = xmlnode_get_child(x, "item");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1983 while(item) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1984 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
1985 GSList *l;
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
1986 xmlnode *valuenode;
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
1987 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
1988
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
1989 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
1990 /*
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
1991 * 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
1992 * 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
1993 */
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
1994 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
1995 field != NULL;
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
1996 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
1997 {
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
1998 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
1999 !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
2000 (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
2001 {
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2002 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
2003 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
2004 break;
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2005 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2006 }
19931
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2007 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
2008 /* 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
2009 row = g_list_append(row, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2010 }
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2011 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
2012 item = xmlnode_get_next_twin(item);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2013 }
19931
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2014
cd067497cbe0 Fix the bug reported to the devel mailing list by Georgi Kirilov.
Mark Doliner <mark@kingant.net>
parents: 19729
diff changeset
2015 g_slist_free(column_vars);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2016 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2017 /* old skool */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2018 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
2019
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2020 column = purple_notify_searchresults_column_new(_("JID"));
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2021 purple_notify_searchresults_column_add(results, column);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2022 column = purple_notify_searchresults_column_new(_("First Name"));
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2023 purple_notify_searchresults_column_add(results, column);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2024 column = purple_notify_searchresults_column_new(_("Last Name"));
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2025 purple_notify_searchresults_column_add(results, column);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2026 column = purple_notify_searchresults_column_new(_("Nickname"));
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2027 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
2028 column = purple_notify_searchresults_column_new(_("Email"));
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2029 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
2030
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2031 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
2032 const char *jid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2033 xmlnode *node;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2034 GList *row = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2035
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2036 if(!(jid = xmlnode_get_attrib(item, "jid")))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2037 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2038
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2039 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
2040 node = xmlnode_get_child(item, "first");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2041 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
2042 node = xmlnode_get_child(item, "last");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2043 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
2044 node = xmlnode_get_child(item, "nick");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2045 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
2046 node = xmlnode_get_child(item, "email");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2047 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
2048 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
2049 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
2050 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2051 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2052
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2053 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
2054 user_search_result_add_buddy_cb);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2055
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2056 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
2057 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2058
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2059 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
2060 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2061 xmlnode *query;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2062 JabberIq *iq;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2063 char *dir_server = data;
21120
0cc12e6909e2 don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents: 21113
diff changeset
2064 const char *type;
0cc12e6909e2 don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents: 21113
diff changeset
2065
0cc12e6909e2 don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents: 21113
diff changeset
2066 /* 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
2067 * 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
2068 * a cancel, so skip it */
0cc12e6909e2 don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents: 21113
diff changeset
2069 type = xmlnode_get_attrib(result, "type");
0cc12e6909e2 don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents: 21113
diff changeset
2070 if(type && !strcmp(type, "cancel")) {
0cc12e6909e2 don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents: 21113
diff changeset
2071 g_free(dir_server);
0cc12e6909e2 don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents: 21113
diff changeset
2072 return;
0cc12e6909e2 don't send a canceled user query
Nathan Walp <nwalp@pidgin.im>
parents: 21113
diff changeset
2073 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2074
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2075 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
2076 query = xmlnode_get_child(iq->node, "query");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2077
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2078 xmlnode_insert_child(query, result);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2079
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2080 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
2081 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
2082 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2083 g_free(dir_server);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2084 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2085
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2086 struct user_search_info {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2087 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2088 char *directory_server;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2089 };
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2090
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2091 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
2092 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2093 g_free(usi->directory_server);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2094 g_free(usi);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2095 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2096
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2097 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
2098 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2099 JabberStream *js = usi->js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2100 JabberIq *iq;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2101 xmlnode *query;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2102 GList *groups, *flds;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2103
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2104 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
2105 query = xmlnode_get_child(iq->node, "query");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2106
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2107 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
2108 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
2109 flds; flds = flds->next) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2110 PurpleRequestField *field = flds->data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2111 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
2112 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
2113
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2114 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
2115 xmlnode *y = xmlnode_new_child(query, id);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2116 xmlnode_insert_data(y, value, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2117 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2118 }
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2121 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
2122 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
2123 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2124
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2125 g_free(usi->directory_server);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2126 g_free(usi);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2127 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2128
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2129 #if 0
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2130 /* 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
2131
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2132 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2133 * 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
2134 * comments for Jabber User Directories
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 * 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
2137 * 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
2138 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2139 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
2140 /* 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
2141 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
2142 "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
2143 NULL
15374
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 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2146
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
2147 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
2148 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
2149 xmlnode *packet, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2150 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2151 xmlnode *query, *x;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2152
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
2153 if (!from)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2154 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2155
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
2156 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
2157 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
2158
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2159 if(!msg)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2160 msg = g_strdup(_("Unknown error"));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2161
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2162 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
2163 _("Could not query the directory server."), msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2164 g_free(msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2165
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2166 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2167 }
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 if(!(query = xmlnode_get_child(packet, "query")))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2171 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2172
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2173 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
2174 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
2175 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2176 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2177 struct user_search_info *usi;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2178 xmlnode *instnode;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2179 char *instructions = NULL;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2180 PurpleRequestFields *fields;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2181 PurpleRequestFieldGroup *group;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2182 PurpleRequestField *field;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2183
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2184 /* old skool */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2185 fields = purple_request_fields_new();
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2186 group = purple_request_field_group_new(NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2187 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
2188
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2189 if((instnode = xmlnode_get_child(query, "instructions")))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2190 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2191 char *tmp = xmlnode_get_data(instnode);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2192
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2193 if(tmp)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2194 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2195 /* 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
2196 list in jabber_user_dir_comments[]) */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2197 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
2198 g_free(tmp);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2199 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2200 }
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 if(!instructions)
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 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
2205 "for any matching XMPP users."));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2206 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2207
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2208 if(xmlnode_get_child(query, "first")) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2209 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
2210 NULL, FALSE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2211 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
2212 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2213 if(xmlnode_get_child(query, "last")) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2214 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
2215 NULL, FALSE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2216 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
2217 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2218 if(xmlnode_get_child(query, "nick")) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2219 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
2220 NULL, FALSE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2221 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
2222 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2223 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
2224 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
2225 NULL, FALSE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2226 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
2227 }
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 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
2230 usi->js = js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2231 usi->directory_server = g_strdup(from);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2232
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2233 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
2234 _("Search for XMPP users"), instructions, fields,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2235 _("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
2236 _("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
2237 purple_connection_get_account(js->gc), NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2238 usi);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2239
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2240 g_free(instructions);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2241 }
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
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
2244 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
2245 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2246 JabberIq *iq;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2247
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2248 /* 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
2249 if(!directory || !*directory) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2250 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
2251 return;
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
31912
ba00769a1493 jabber: Remember the last-used user directory. Closes #12451
pidgin@keithmoyer.com
parents: 31813
diff changeset
2254 /* If the value provided isn't the disco#info default, persist it. Otherwise,
ba00769a1493 jabber: Remember the last-used user directory. Closes #12451
pidgin@keithmoyer.com
parents: 31813
diff changeset
2255 make sure we aren't persisting an old value */
ba00769a1493 jabber: Remember the last-used user directory. Closes #12451
pidgin@keithmoyer.com
parents: 31813
diff changeset
2256 if(js->user_directories && js->user_directories->data &&
ba00769a1493 jabber: Remember the last-used user directory. Closes #12451
pidgin@keithmoyer.com
parents: 31813
diff changeset
2257 !strcmp(directory, js->user_directories->data)) {
32767
2ec94166be43 On the way to hiding the PurpleConnection struct.
andrew.victor@mxit.com
parents: 32456
diff changeset
2258 purple_account_set_string(purple_connection_get_account(js->gc), "user_directory", "");
31912
ba00769a1493 jabber: Remember the last-used user directory. Closes #12451
pidgin@keithmoyer.com
parents: 31813
diff changeset
2259 }
ba00769a1493 jabber: Remember the last-used user directory. Closes #12451
pidgin@keithmoyer.com
parents: 31813
diff changeset
2260 else {
32767
2ec94166be43 On the way to hiding the PurpleConnection struct.
andrew.victor@mxit.com
parents: 32456
diff changeset
2261 purple_account_set_string(purple_connection_get_account(js->gc), "user_directory", directory);
31912
ba00769a1493 jabber: Remember the last-used user directory. Closes #12451
pidgin@keithmoyer.com
parents: 31813
diff changeset
2262 }
ba00769a1493 jabber: Remember the last-used user directory. Closes #12451
pidgin@keithmoyer.com
parents: 31813
diff changeset
2263
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2264 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
2265 xmlnode_set_attrib(iq->node, "to", directory);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2266
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2267 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
2268
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2269 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2270 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2271
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2272 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
2273 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15666
diff changeset
2274 PurpleConnection *gc = (PurpleConnection *) action->context;
25286
ede22bc33d56 More struct hiding work
Richard Laager <rlaager@wiktel.com>
parents: 23986
diff changeset
2275 JabberStream *js = purple_connection_get_protocol_data(gc);
32767
2ec94166be43 On the way to hiding the PurpleConnection struct.
andrew.victor@mxit.com
parents: 32456
diff changeset
2276 const char *def_val = purple_account_get_string(purple_connection_get_account(js->gc), "user_directory", "");
31912
ba00769a1493 jabber: Remember the last-used user directory. Closes #12451
pidgin@keithmoyer.com
parents: 31813
diff changeset
2277 if(!*def_val && js->user_directories)
ba00769a1493 jabber: Remember the last-used user directory. Closes #12451
pidgin@keithmoyer.com
parents: 31813
diff changeset
2278 def_val = js->user_directories->data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2279
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2280 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
2281 _("Select a user directory to search"),
31912
ba00769a1493 jabber: Remember the last-used user directory. Closes #12451
pidgin@keithmoyer.com
parents: 31813
diff changeset
2282 def_val,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2283 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
2284 _("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
2285 _("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
2286 NULL, NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2287 js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2288 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2289
23445
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2290 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
2291 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
2292 {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28889
diff changeset
2293 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
2294 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28889
diff changeset
2295
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28889
diff changeset
2296 gboolean
23445
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2297 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
2298 {
25770
b1b1b75a922e Sprinkle jabber_resource_has_capability in places
Paul Aurich <paul@darkrain42.org>
parents: 25758
diff changeset
2299 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
2300 const JabberCapsNodeExts *exts;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2301
25784
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
2302 if (!jbr->caps.info) {
27513
b118127843cc Lower the severity of this message.
Paul Aurich <paul@darkrain42.org>
parents: 27445
diff changeset
2303 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
2304 "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
2305 return FALSE;
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2306 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2307
25784
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
2308 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
2309 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
2310 const GList *ext;
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
2311 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
2312 /* 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
2313 * 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
2314 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
2315 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
2316 if (features)
05693f6885a4 Support old (XEP v1.3) Entity Capabilities alongside the new ones.
Paul Aurich <paul@darkrain42.org>
parents: 25782
diff changeset
2317 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
2318 }
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2319 }
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2320
25770
b1b1b75a922e Sprinkle jabber_resource_has_capability in places
Paul Aurich <paul@darkrain42.org>
parents: 25758
diff changeset
2321 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
2322 }
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2323
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2324 gboolean
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2325 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
2326 {
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2327 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
2328
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2329 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
2330 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
2331 "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
2332 return FALSE;
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2333 }
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2334
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2335 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
2336 }
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23253
diff changeset
2337
25836
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2338 const gchar *
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2339 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
2340 const gchar *category)
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2341 {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2342 const GList *iter = NULL;
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 30908
diff changeset
2343
27064
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
2344 if (jbr->caps.info) {
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
2345 for (iter = jbr->caps.info->identities ; iter ; iter = g_list_next(iter)) {
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 30908
diff changeset
2346 const JabberIdentity *identity =
27064
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
2347 (JabberIdentity *) iter->data;
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 30908
diff changeset
2348
25836
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2349 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
2350 return identity->type;
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2351 }
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2352 }
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2353 }
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 30908
diff changeset
2354
25836
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2355 return NULL;
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25069
diff changeset
2356 }