annotate src/blist.c @ 8952:e3f4657fa555

[gaim-migrate @ 9724] " This patch enables plugins to have the ability to provide a list of named call-backs for a GaimGroup in the buddy list. Most of the credit for this should go to Christopher (siege) O'Brien who did the same for the buddy menu (patch 907267). See his excellent description on that patch :)" --Stu Tomlinson committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Sun, 16 May 2004 17:43:00 +0000
parents c0f5132fd5a3
children bfc8dea58386
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /*
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2 * gaim
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3 *
8046
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 8020
diff changeset
4 * Gaim is the legal property of its developers, whose names are too numerous
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 8020
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 8020
diff changeset
6 * source distribution.
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
7 *
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * (at your option) any later version.
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 *
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * GNU General Public License for more details.
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 *
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 *
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 */
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5855
diff changeset
23 #include "internal.h"
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
24 #include "blist.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5855
diff changeset
25 #include "conversation.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5855
diff changeset
26 #include "debug.h"
6034
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
27 #include "multi.h"
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
28 #include "notify.h"
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5541
diff changeset
29 #include "prefs.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5855
diff changeset
30 #include "privacy.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5855
diff changeset
31 #include "prpl.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5855
diff changeset
32 #include "server.h"
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
33 #include "signals.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5855
diff changeset
34 #include "util.h"
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
35 #include "xmlnode.h"
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
36
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
37 #define PATHSIZE 1024
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
38
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
39 GaimBuddyList *gaimbuddylist = NULL;
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
40 static GaimBlistUiOps *blist_ui_ops = NULL;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
41
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
42 struct gaim_blist_node_setting {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
43 enum {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
44 GAIM_BLIST_NODE_SETTING_BOOL,
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
45 GAIM_BLIST_NODE_SETTING_INT,
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
46 GAIM_BLIST_NODE_SETTING_STRING
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
47 } type;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
48 union {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
49 gboolean boolean;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
50 int integer;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
51 char *string;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
52 } value;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
53 };
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
54
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
55
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
56
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
57 /*****************************************************************************
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
58 * Private Utility functions *
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
59 *****************************************************************************/
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
60 static GaimBlistNode *gaim_blist_get_last_sibling(GaimBlistNode *node)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
61 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
62 GaimBlistNode *n = node;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
63 if (!n)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
64 return NULL;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
65 while (n->next)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
66 n = n->next;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
67 return n;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
68 }
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
69
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
70 static GaimBlistNode *gaim_blist_get_last_child(GaimBlistNode *node)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
71 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
72 if (!node)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
73 return NULL;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
74 return gaim_blist_get_last_sibling(node->child);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
75 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
76
5247
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
77 struct _gaim_hbuddy {
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
78 char *name;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
79 GaimAccount *account;
5758
666b04f93c55 [gaim-migrate @ 6183]
Sean Egan <seanegan@gmail.com>
parents: 5676
diff changeset
80 GaimBlistNode *group;
5247
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
81 };
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
82
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
83 static guint _gaim_blist_hbuddy_hash (struct _gaim_hbuddy *hb)
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
84 {
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
85 return g_str_hash(hb->name);
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
86 }
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
87
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
88 static guint _gaim_blist_hbuddy_equal (struct _gaim_hbuddy *hb1, struct _gaim_hbuddy *hb2)
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
89 {
5758
666b04f93c55 [gaim-migrate @ 6183]
Sean Egan <seanegan@gmail.com>
parents: 5676
diff changeset
90 return ((!strcmp(hb1->name, hb2->name)) && hb1->account == hb2->account && hb1->group == hb2->group);
5247
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
91 }
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
92
6742
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
93 static void _gaim_blist_hbuddy_free_key(struct _gaim_hbuddy *hb)
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
94 {
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
95 g_free(hb->name);
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
96 g_free(hb);
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
97 }
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
98
6006
0aeb4fd0fc65 [gaim-migrate @ 6454]
Mark Doliner <mark@kingant.net>
parents: 5985
diff changeset
99 static void blist_pref_cb(const char *name, GaimPrefType typ, gpointer value, gpointer data)
0aeb4fd0fc65 [gaim-migrate @ 6454]
Mark Doliner <mark@kingant.net>
parents: 5985
diff changeset
100 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
101 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
102 GaimBlistNode *gnode, *cnode, *bnode;
6012
4c16227f7cd9 [gaim-migrate @ 6460]
Mark Doliner <mark@kingant.net>
parents: 6006
diff changeset
103
4c16227f7cd9 [gaim-migrate @ 6460]
Mark Doliner <mark@kingant.net>
parents: 6006
diff changeset
104 if (!ops)
4c16227f7cd9 [gaim-migrate @ 6460]
Mark Doliner <mark@kingant.net>
parents: 6006
diff changeset
105 return;
4c16227f7cd9 [gaim-migrate @ 6460]
Mark Doliner <mark@kingant.net>
parents: 6006
diff changeset
106
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
107 for(gnode = gaimbuddylist->root; gnode; gnode = gnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
108 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
6012
4c16227f7cd9 [gaim-migrate @ 6460]
Mark Doliner <mark@kingant.net>
parents: 6006
diff changeset
109 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
110 for(cnode = gnode->child; cnode; cnode = cnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
111 if(GAIM_BLIST_NODE_IS_CONTACT(cnode)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
112 for(bnode = cnode->child; bnode; bnode = bnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
113 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
114 continue;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
115 ops->update(gaimbuddylist, bnode);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
116 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
117 } else if(GAIM_BLIST_NODE_IS_CHAT(cnode)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
118 ops->update(gaimbuddylist, cnode);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
119 }
6012
4c16227f7cd9 [gaim-migrate @ 6460]
Mark Doliner <mark@kingant.net>
parents: 6006
diff changeset
120 }
4c16227f7cd9 [gaim-migrate @ 6460]
Mark Doliner <mark@kingant.net>
parents: 6006
diff changeset
121 }
6006
0aeb4fd0fc65 [gaim-migrate @ 6454]
Mark Doliner <mark@kingant.net>
parents: 5985
diff changeset
122 }
0aeb4fd0fc65 [gaim-migrate @ 6454]
Mark Doliner <mark@kingant.net>
parents: 5985
diff changeset
123
7312
b8ce6e194cff [gaim-migrate @ 7896]
Nathan Walp <nwalp@pidgin.im>
parents: 7261
diff changeset
124 GaimContact *gaim_buddy_get_contact(GaimBuddy *buddy)
6843
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
125 {
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
126 return (GaimContact*)((GaimBlistNode*)buddy)->parent;
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
127 }
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
128
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
129 static void gaim_contact_compute_priority_buddy(GaimContact *contact) {
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
130 GaimBlistNode *bnode;
7826
5ba07997ade3 [gaim-migrate @ 8478]
Nathan Walp <nwalp@pidgin.im>
parents: 7825
diff changeset
131 int contact_score = INT_MAX;
6870
c069548b501e [gaim-migrate @ 7416]
Nathan Walp <nwalp@pidgin.im>
parents: 6860
diff changeset
132 contact->priority = NULL;
6843
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
133
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
134 for(bnode = ((GaimBlistNode*)contact)->child; bnode; bnode = bnode->next) {
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
135 GaimBuddy *buddy;
7420
53c86d59f20b [gaim-migrate @ 8022]
Luke Schierer <lschiere@pidgin.im>
parents: 7312
diff changeset
136 int score = 0;
53c86d59f20b [gaim-migrate @ 8022]
Luke Schierer <lschiere@pidgin.im>
parents: 7312
diff changeset
137
6843
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
138 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
139 continue;
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
140 buddy = (GaimBuddy*)bnode;
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
141 if(!gaim_account_is_connected(buddy->account))
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
142 continue;
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
143
7420
53c86d59f20b [gaim-migrate @ 8022]
Luke Schierer <lschiere@pidgin.im>
parents: 7312
diff changeset
144 if (!GAIM_BUDDY_IS_ONLINE(buddy))
53c86d59f20b [gaim-migrate @ 8022]
Luke Schierer <lschiere@pidgin.im>
parents: 7312
diff changeset
145 score += gaim_prefs_get_int("/core/contact/offline_score");
53c86d59f20b [gaim-migrate @ 8022]
Luke Schierer <lschiere@pidgin.im>
parents: 7312
diff changeset
146 if (buddy->uc & UC_UNAVAILABLE)
53c86d59f20b [gaim-migrate @ 8022]
Luke Schierer <lschiere@pidgin.im>
parents: 7312
diff changeset
147 score += gaim_prefs_get_int("/core/contact/away_score");
53c86d59f20b [gaim-migrate @ 8022]
Luke Schierer <lschiere@pidgin.im>
parents: 7312
diff changeset
148 if (buddy->idle)
53c86d59f20b [gaim-migrate @ 8022]
Luke Schierer <lschiere@pidgin.im>
parents: 7312
diff changeset
149 score += gaim_prefs_get_int("/core/contact/idle_score");
53c86d59f20b [gaim-migrate @ 8022]
Luke Schierer <lschiere@pidgin.im>
parents: 7312
diff changeset
150
53c86d59f20b [gaim-migrate @ 8022]
Luke Schierer <lschiere@pidgin.im>
parents: 7312
diff changeset
151 score += gaim_account_get_int(buddy->account, "score", 0);
53c86d59f20b [gaim-migrate @ 8022]
Luke Schierer <lschiere@pidgin.im>
parents: 7312
diff changeset
152
7826
5ba07997ade3 [gaim-migrate @ 8478]
Nathan Walp <nwalp@pidgin.im>
parents: 7825
diff changeset
153 if (score < contact_score) {
6843
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
154 contact->priority = buddy;
7826
5ba07997ade3 [gaim-migrate @ 8478]
Nathan Walp <nwalp@pidgin.im>
parents: 7825
diff changeset
155 contact_score = score;
7420
53c86d59f20b [gaim-migrate @ 8022]
Luke Schierer <lschiere@pidgin.im>
parents: 7312
diff changeset
156 }
53c86d59f20b [gaim-migrate @ 8022]
Luke Schierer <lschiere@pidgin.im>
parents: 7312
diff changeset
157 if (gaim_prefs_get_bool("/core/contact/last_match"))
7826
5ba07997ade3 [gaim-migrate @ 8478]
Nathan Walp <nwalp@pidgin.im>
parents: 7825
diff changeset
158 if (score == contact_score)
6843
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
159 contact->priority = buddy;
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
160 }
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
161 }
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
162
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
163
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
164 /*****************************************************************************
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
165 * Public API functions *
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
166 *****************************************************************************/
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
167
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
168 GaimBuddyList *gaim_blist_new()
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
169 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
170 GaimBuddyList *gbl = g_new0(GaimBuddyList, 1);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
171
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7003
diff changeset
172 gbl->ui_ops = gaim_blist_get_ui_ops();
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
173
6742
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
174 gbl->buddies = g_hash_table_new_full((GHashFunc)_gaim_blist_hbuddy_hash,
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
175 (GEqualFunc)_gaim_blist_hbuddy_equal,
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
176 (GDestroyNotify)_gaim_blist_hbuddy_free_key, NULL);
5247
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
177
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
178 if (gbl->ui_ops != NULL && gbl->ui_ops->new_list != NULL)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
179 gbl->ui_ops->new_list(gbl);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
180
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
181 gaim_prefs_connect_callback("/core/buddies/use_server_alias",
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
182 blist_pref_cb, NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
183
6006
0aeb4fd0fc65 [gaim-migrate @ 6454]
Mark Doliner <mark@kingant.net>
parents: 5985
diff changeset
184
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
185 return gbl;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
186 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
187
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
188 void
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
189 gaim_set_blist(GaimBuddyList *list)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
190 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
191 gaimbuddylist = list;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
192 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
193
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
194 GaimBuddyList *
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
195 gaim_get_blist(void)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
196 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
197 return gaimbuddylist;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
198 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
199
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
200 void gaim_blist_show ()
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
201 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
202 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
203 if (ops)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
204 ops->show(gaimbuddylist);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
205 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
206
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
207 void gaim_blist_destroy()
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
208 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
209 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
8259
4f9f68ab8770 [gaim-migrate @ 8982]
Christian Hammond <chipx86@chipx86.com>
parents: 8200
diff changeset
210 gaim_debug(GAIM_DEBUG_INFO, "blist", "Destroying\n");
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
211 if (ops)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
212 ops->destroy(gaimbuddylist);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
213 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
214
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
215 void gaim_blist_set_visible (gboolean show)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
216 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
217 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
218 if (ops)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
219 ops->set_visible(gaimbuddylist, show);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
220 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
221
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
222 void gaim_blist_update_buddy_status (GaimBuddy *buddy, int status)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
223 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
224 GaimBlistUiOps *ops;
8129
52cdf2740654 [gaim-migrate @ 8834]
Christian Hammond <chipx86@chipx86.com>
parents: 8071
diff changeset
225 int old_status = buddy->uc;
5266
b3a03b86b09b [gaim-migrate @ 5638]
Christian Hammond <chipx86@chipx86.com>
parents: 5259
diff changeset
226
b3a03b86b09b [gaim-migrate @ 5638]
Christian Hammond <chipx86@chipx86.com>
parents: 5259
diff changeset
227
b3a03b86b09b [gaim-migrate @ 5638]
Christian Hammond <chipx86@chipx86.com>
parents: 5259
diff changeset
228 ops = gaimbuddylist->ui_ops;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
229
8129
52cdf2740654 [gaim-migrate @ 8834]
Christian Hammond <chipx86@chipx86.com>
parents: 8071
diff changeset
230 if (old_status != status) {
52cdf2740654 [gaim-migrate @ 8834]
Christian Hammond <chipx86@chipx86.com>
parents: 8071
diff changeset
231 buddy->uc = status;
52cdf2740654 [gaim-migrate @ 8834]
Christian Hammond <chipx86@chipx86.com>
parents: 8071
diff changeset
232 gaim_contact_compute_priority_buddy(gaim_buddy_get_contact(buddy));
52cdf2740654 [gaim-migrate @ 8834]
Christian Hammond <chipx86@chipx86.com>
parents: 8071
diff changeset
233
52cdf2740654 [gaim-migrate @ 8834]
Christian Hammond <chipx86@chipx86.com>
parents: 8071
diff changeset
234 if ((status & UC_UNAVAILABLE) != (old_status & UC_UNAVAILABLE)) {
7549
586fb1594072 [gaim-migrate @ 8163]
Luke Schierer <lschiere@pidgin.im>
parents: 7430
diff changeset
235 if (status & UC_UNAVAILABLE)
586fb1594072 [gaim-migrate @ 8163]
Luke Schierer <lschiere@pidgin.im>
parents: 7430
diff changeset
236 gaim_signal_emit(gaim_blist_get_handle(), "buddy-away", buddy);
586fb1594072 [gaim-migrate @ 8163]
Luke Schierer <lschiere@pidgin.im>
parents: 7430
diff changeset
237 else
586fb1594072 [gaim-migrate @ 8163]
Luke Schierer <lschiere@pidgin.im>
parents: 7430
diff changeset
238 gaim_signal_emit(gaim_blist_get_handle(), "buddy-back", buddy);
586fb1594072 [gaim-migrate @ 8163]
Luke Schierer <lschiere@pidgin.im>
parents: 7430
diff changeset
239 }
5305
d2732160850b [gaim-migrate @ 5677]
Luke Schierer <lschiere@pidgin.im>
parents: 5292
diff changeset
240 }
8129
52cdf2740654 [gaim-migrate @ 8834]
Christian Hammond <chipx86@chipx86.com>
parents: 8071
diff changeset
241
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
242 if (ops)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
243 ops->update(gaimbuddylist, (GaimBlistNode*)buddy);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
244 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
245
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
246 static gboolean presence_update_timeout_cb(GaimBuddy *buddy) {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
247 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
6640
314111e7b601 [gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
248 GaimConversation *conv;
314111e7b601 [gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
249
314111e7b601 [gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
250 conv = gaim_find_conversation_with_account(buddy->name, buddy->account);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
251
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
252 if(buddy->present == GAIM_BUDDY_SIGNING_ON) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
253 buddy->present = GAIM_BUDDY_ONLINE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
254 } else if(buddy->present == GAIM_BUDDY_SIGNING_OFF) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
255 buddy->present = GAIM_BUDDY_OFFLINE;
6860
82607477da69 [gaim-migrate @ 7405]
Nathan Walp <nwalp@pidgin.im>
parents: 6846
diff changeset
256 ((GaimContact*)((GaimBlistNode*)buddy)->parent)->online--;
82607477da69 [gaim-migrate @ 7405]
Nathan Walp <nwalp@pidgin.im>
parents: 6846
diff changeset
257 if(((GaimContact*)((GaimBlistNode*)buddy)->parent)->online == 0)
82607477da69 [gaim-migrate @ 7405]
Nathan Walp <nwalp@pidgin.im>
parents: 6846
diff changeset
258 ((GaimGroup *)((GaimBlistNode *)buddy)->parent->parent)->online--;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
259 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
260
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
261 buddy->timer = 0;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
262
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
263 if (ops)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
264 ops->update(gaimbuddylist, (GaimBlistNode*)buddy);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
265
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6378
diff changeset
266 if (conv) {
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6378
diff changeset
267 if (buddy->present == GAIM_BUDDY_ONLINE)
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6378
diff changeset
268 gaim_conversation_update(conv, GAIM_CONV_ACCOUNT_ONLINE);
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6378
diff changeset
269 else if (buddy->present == GAIM_BUDDY_OFFLINE)
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6378
diff changeset
270 gaim_conversation_update(conv, GAIM_CONV_ACCOUNT_OFFLINE);
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6378
diff changeset
271 }
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6378
diff changeset
272
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
273 return FALSE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
274 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
275
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
276 void gaim_blist_update_buddy_presence(GaimBuddy *buddy, int presence) {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
277 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
6961
13da9fe5f213 [gaim-migrate @ 7508]
Nathan Walp <nwalp@pidgin.im>
parents: 6959
diff changeset
278 gboolean do_something = FALSE;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
279
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
280 if (!GAIM_BUDDY_IS_ONLINE(buddy) && presence) {
6901
5ace3b44cf61 [gaim-migrate @ 7448]
Nathan Walp <nwalp@pidgin.im>
parents: 6886
diff changeset
281 int old_present = buddy->present;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
282 buddy->present = GAIM_BUDDY_SIGNING_ON;
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
283 gaim_signal_emit(gaim_blist_get_handle(), "buddy-signed-on", buddy);
6961
13da9fe5f213 [gaim-migrate @ 7508]
Nathan Walp <nwalp@pidgin.im>
parents: 6959
diff changeset
284 do_something = TRUE;
6901
5ace3b44cf61 [gaim-migrate @ 7448]
Nathan Walp <nwalp@pidgin.im>
parents: 6886
diff changeset
285
5ace3b44cf61 [gaim-migrate @ 7448]
Nathan Walp <nwalp@pidgin.im>
parents: 6886
diff changeset
286 if(old_present != GAIM_BUDDY_SIGNING_OFF) {
5ace3b44cf61 [gaim-migrate @ 7448]
Nathan Walp <nwalp@pidgin.im>
parents: 6886
diff changeset
287 ((GaimContact*)((GaimBlistNode*)buddy)->parent)->online++;
5ace3b44cf61 [gaim-migrate @ 7448]
Nathan Walp <nwalp@pidgin.im>
parents: 6886
diff changeset
288 if(((GaimContact*)((GaimBlistNode*)buddy)->parent)->online == 1)
5ace3b44cf61 [gaim-migrate @ 7448]
Nathan Walp <nwalp@pidgin.im>
parents: 6886
diff changeset
289 ((GaimGroup *)((GaimBlistNode *)buddy)->parent->parent)->online++;
5ace3b44cf61 [gaim-migrate @ 7448]
Nathan Walp <nwalp@pidgin.im>
parents: 6886
diff changeset
290 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
291 } else if(GAIM_BUDDY_IS_ONLINE(buddy) && !presence) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
292 buddy->present = GAIM_BUDDY_SIGNING_OFF;
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
293 gaim_signal_emit(gaim_blist_get_handle(), "buddy-signed-off", buddy);
6961
13da9fe5f213 [gaim-migrate @ 7508]
Nathan Walp <nwalp@pidgin.im>
parents: 6959
diff changeset
294 do_something = TRUE;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
295 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
296
6961
13da9fe5f213 [gaim-migrate @ 7508]
Nathan Walp <nwalp@pidgin.im>
parents: 6959
diff changeset
297 if(do_something) {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
298 if(buddy->timer > 0)
8287
ef881489396e [gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents: 8273
diff changeset
299 gaim_timeout_remove(buddy->timer);
8273
f24172f53650 [gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents: 8259
diff changeset
300 buddy->timer = gaim_timeout_add(10000, (GSourceFunc)presence_update_timeout_cb, buddy);
6961
13da9fe5f213 [gaim-migrate @ 7508]
Nathan Walp <nwalp@pidgin.im>
parents: 6959
diff changeset
301
13da9fe5f213 [gaim-migrate @ 7508]
Nathan Walp <nwalp@pidgin.im>
parents: 6959
diff changeset
302 gaim_contact_compute_priority_buddy(gaim_buddy_get_contact(buddy));
13da9fe5f213 [gaim-migrate @ 7508]
Nathan Walp <nwalp@pidgin.im>
parents: 6959
diff changeset
303 if (ops)
13da9fe5f213 [gaim-migrate @ 7508]
Nathan Walp <nwalp@pidgin.im>
parents: 6959
diff changeset
304 ops->update(gaimbuddylist, (GaimBlistNode*)buddy);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
305 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
306 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
307
7950
7b8407d8c546 [gaim-migrate @ 8624]
Mark Doliner <mark@kingant.net>
parents: 7879
diff changeset
308 void gaim_blist_update_buddy_signon (GaimBuddy *buddy, time_t signon)
7b8407d8c546 [gaim-migrate @ 8624]
Mark Doliner <mark@kingant.net>
parents: 7879
diff changeset
309 {
7b8407d8c546 [gaim-migrate @ 8624]
Mark Doliner <mark@kingant.net>
parents: 7879
diff changeset
310 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
7b8407d8c546 [gaim-migrate @ 8624]
Mark Doliner <mark@kingant.net>
parents: 7879
diff changeset
311 if(buddy->signon == signon)
7b8407d8c546 [gaim-migrate @ 8624]
Mark Doliner <mark@kingant.net>
parents: 7879
diff changeset
312 return;
7b8407d8c546 [gaim-migrate @ 8624]
Mark Doliner <mark@kingant.net>
parents: 7879
diff changeset
313
7b8407d8c546 [gaim-migrate @ 8624]
Mark Doliner <mark@kingant.net>
parents: 7879
diff changeset
314 buddy->signon = signon;
7b8407d8c546 [gaim-migrate @ 8624]
Mark Doliner <mark@kingant.net>
parents: 7879
diff changeset
315 if (ops)
7b8407d8c546 [gaim-migrate @ 8624]
Mark Doliner <mark@kingant.net>
parents: 7879
diff changeset
316 ops->update(gaimbuddylist,(GaimBlistNode*)buddy);
7b8407d8c546 [gaim-migrate @ 8624]
Mark Doliner <mark@kingant.net>
parents: 7879
diff changeset
317 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
318
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
319 void gaim_blist_update_buddy_idle (GaimBuddy *buddy, int idle)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
320 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
321 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
6961
13da9fe5f213 [gaim-migrate @ 7508]
Nathan Walp <nwalp@pidgin.im>
parents: 6959
diff changeset
322 if(buddy->idle == idle)
13da9fe5f213 [gaim-migrate @ 7508]
Nathan Walp <nwalp@pidgin.im>
parents: 6959
diff changeset
323 return;
13da9fe5f213 [gaim-migrate @ 7508]
Nathan Walp <nwalp@pidgin.im>
parents: 6959
diff changeset
324
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
325 buddy->idle = idle;
6843
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
326 gaim_contact_compute_priority_buddy(gaim_buddy_get_contact(buddy));
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
327 if (ops)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
328 ops->update(gaimbuddylist, (GaimBlistNode*)buddy);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
329 }
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
330
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
331 void gaim_blist_update_buddy_evil (GaimBuddy *buddy, int warning)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
332 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
333 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
6961
13da9fe5f213 [gaim-migrate @ 7508]
Nathan Walp <nwalp@pidgin.im>
parents: 6959
diff changeset
334 if(buddy->evil == warning)
13da9fe5f213 [gaim-migrate @ 7508]
Nathan Walp <nwalp@pidgin.im>
parents: 6959
diff changeset
335 return;
13da9fe5f213 [gaim-migrate @ 7508]
Nathan Walp <nwalp@pidgin.im>
parents: 6959
diff changeset
336
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
337 buddy->evil = warning;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
338 if (ops)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
339 ops->update(gaimbuddylist,(GaimBlistNode*)buddy);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
340 }
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
341
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
342 void gaim_blist_update_buddy_icon(GaimBuddy *buddy) {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
343 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
344 if(ops)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
345 ops->update(gaimbuddylist, (GaimBlistNode*)buddy);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
346 }
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
347
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
348 void gaim_blist_rename_buddy (GaimBuddy *buddy, const char *name)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
349 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
350 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
8675
9ee2542d1104 [gaim-migrate @ 9428]
Sean Egan <seanegan@gmail.com>
parents: 8549
diff changeset
351 struct _gaim_hbuddy *hb = g_new(struct _gaim_hbuddy, 1);
9ee2542d1104 [gaim-migrate @ 9428]
Sean Egan <seanegan@gmail.com>
parents: 8549
diff changeset
352
9ee2542d1104 [gaim-migrate @ 9428]
Sean Egan <seanegan@gmail.com>
parents: 8549
diff changeset
353 hb->name = g_strdup(gaim_normalize(buddy->account, buddy->name));
9ee2542d1104 [gaim-migrate @ 9428]
Sean Egan <seanegan@gmail.com>
parents: 8549
diff changeset
354 hb->account = buddy->account;
9ee2542d1104 [gaim-migrate @ 9428]
Sean Egan <seanegan@gmail.com>
parents: 8549
diff changeset
355 hb->group = ((GaimBlistNode *)buddy)->parent->parent;
9ee2542d1104 [gaim-migrate @ 9428]
Sean Egan <seanegan@gmail.com>
parents: 8549
diff changeset
356 g_hash_table_remove(gaimbuddylist->buddies, hb);
9ee2542d1104 [gaim-migrate @ 9428]
Sean Egan <seanegan@gmail.com>
parents: 8549
diff changeset
357
9ee2542d1104 [gaim-migrate @ 9428]
Sean Egan <seanegan@gmail.com>
parents: 8549
diff changeset
358 g_free(hb->name);
9ee2542d1104 [gaim-migrate @ 9428]
Sean Egan <seanegan@gmail.com>
parents: 8549
diff changeset
359 hb->name = g_strdup(gaim_normalize(buddy->account, name));
9ee2542d1104 [gaim-migrate @ 9428]
Sean Egan <seanegan@gmail.com>
parents: 8549
diff changeset
360 g_hash_table_replace(gaimbuddylist->buddies, hb, buddy);
9ee2542d1104 [gaim-migrate @ 9428]
Sean Egan <seanegan@gmail.com>
parents: 8549
diff changeset
361
5634
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
362 g_free(buddy->name);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
363 buddy->name = g_strdup(name);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
364 if (ops)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
365 ops->update(gaimbuddylist, (GaimBlistNode*)buddy);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
366 }
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
367
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7117
diff changeset
368 void gaim_blist_alias_chat(GaimChat *chat, const char *alias)
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
369 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
370 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
371
5237
757d680f923d [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
372 g_free(chat->alias);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
373
5237
757d680f923d [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
374 if(alias && strlen(alias))
757d680f923d [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
375 chat->alias = g_strdup(alias);
757d680f923d [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
376 else
757d680f923d [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
377 chat->alias = NULL;
757d680f923d [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
378
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
379 if(ops)
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
380 ops->update(gaimbuddylist, (GaimBlistNode*)chat);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
381 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
382
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
383 void gaim_blist_alias_buddy (GaimBuddy *buddy, const char *alias)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
384 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
385 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5634
diff changeset
386 GaimConversation *conv;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
387
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
388 g_free(buddy->alias);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
389
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
390 if(alias && strlen(alias))
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
391 buddy->alias = g_strdup(alias);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
392 else
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
393 buddy->alias = NULL;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
394
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
395 if (ops)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
396 ops->update(gaimbuddylist, (GaimBlistNode*)buddy);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
397
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
398 conv = gaim_find_conversation_with_account(buddy->name, buddy->account);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
399
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
400 if (conv)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
401 gaim_conversation_autoset_title(conv);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
402 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
403
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
404 void gaim_blist_server_alias_buddy (GaimBuddy *buddy, const char *alias)
6058
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
405 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
406 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
6058
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
407 GaimConversation *conv;
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
408
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
409 g_free(buddy->server_alias);
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
410
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
411 if(alias && strlen(alias) && g_utf8_validate(alias, -1, NULL))
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
412 buddy->server_alias = g_strdup(alias);
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
413 else
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
414 buddy->server_alias = NULL;
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
415
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
416 if (ops)
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
417 ops->update(gaimbuddylist, (GaimBlistNode*)buddy);
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
418
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
419 conv = gaim_find_conversation_with_account(buddy->name, buddy->account);
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
420
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
421 if (conv)
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
422 gaim_conversation_autoset_title(conv);
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
423 }
d5f4ae4f9a02 [gaim-migrate @ 6508]
Mark Doliner <mark@kingant.net>
parents: 6036
diff changeset
424
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
425 void gaim_blist_rename_group(GaimGroup *group, const char *name)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
426 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
427 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
428 GaimGroup *dest_group;
5346
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
429 GaimBlistNode *prev, *child, *next;
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
430 GSList *accts;
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
431
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
432 if(!name || !strlen(name) || !strcmp(name, group->name)) {
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
433 /* nothing to do here */
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
434 return;
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
435 } else if((dest_group = gaim_find_group(name))) {
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
436 /* here we're merging two groups */
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
437 prev = gaim_blist_get_last_child((GaimBlistNode*)dest_group);
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
438 child = ((GaimBlistNode*)group)->child;
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
439
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
440 while(child)
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
441 {
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
442 next = child->next;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
443 if(GAIM_BLIST_NODE_IS_CONTACT(child)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
444 GaimBlistNode *bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
445 gaim_blist_add_contact((GaimContact *)child, dest_group, prev);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
446 for(bnode = child->child; bnode; bnode = bnode->next)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
447 gaim_blist_add_buddy((GaimBuddy*)bnode, (GaimContact*)child,
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
448 NULL, bnode->prev);
5346
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
449 prev = child;
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
450 } else if(GAIM_BLIST_NODE_IS_CHAT(child)) {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7117
diff changeset
451 gaim_blist_add_chat((GaimChat *)child, dest_group, prev);
5346
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
452 prev = child;
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
453 } else {
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
454 gaim_debug(GAIM_DEBUG_ERROR, "blist",
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
455 "Unknown child type in group %s\n", group->name);
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
456 }
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
457 child = next;
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
458 }
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
459 for (accts = gaim_group_get_accounts(group); accts; accts = g_slist_remove(accts, accts->data)) {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
460 GaimAccount *account = accts->data;
5346
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
461 serv_rename_group(account->gc, group, name);
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
462 }
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
463 gaim_blist_remove_group(group);
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
464 } else {
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
465 /* a simple rename */
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
466 for (accts = gaim_group_get_accounts(group); accts; accts = g_slist_remove(accts, accts->data)) {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
467 GaimAccount *account = accts->data;
5346
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
468 serv_rename_group(account->gc, group, name);
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
469 }
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
470 g_free(group->name);
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
471 group->name = g_strdup(name);
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
472 if (ops)
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
473 ops->update(gaimbuddylist, (GaimBlistNode*)group);
c1e7c3f72128 [gaim-migrate @ 5722]
Nathan Walp <nwalp@pidgin.im>
parents: 5313
diff changeset
474 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
475 }
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
476
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
477 static void gaim_blist_node_initialize_settings(GaimBlistNode* node);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
478
7125
208cb260d7a7 [gaim-migrate @ 7692]
Nathan Walp <nwalp@pidgin.im>
parents: 7118
diff changeset
479 GaimChat *gaim_chat_new(GaimAccount *account, const char *alias, GHashTable *components)
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
480 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7117
diff changeset
481 GaimChat *chat;
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
482 GaimBlistUiOps *ops;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
483
5237
757d680f923d [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
484 if(!components)
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
485 return NULL;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
486
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7117
diff changeset
487 chat = g_new0(GaimChat, 1);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
488 chat->account = account;
5237
757d680f923d [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
489 if(alias && strlen(alias))
757d680f923d [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
490 chat->alias = g_strdup(alias);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
491 chat->components = components;
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
492 gaim_blist_node_initialize_settings((GaimBlistNode*)chat);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
493
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
494 ((GaimBlistNode*)chat)->type = GAIM_BLIST_CHAT_NODE;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
495
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7003
diff changeset
496 ops = gaim_blist_get_ui_ops();
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
497
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
498 if (ops != NULL && ops->new_node != NULL)
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
499 ops->new_node((GaimBlistNode *)chat);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
500
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
501 return chat;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
502 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
503
7125
208cb260d7a7 [gaim-migrate @ 7692]
Nathan Walp <nwalp@pidgin.im>
parents: 7118
diff changeset
504 char *gaim_chat_get_display_name(GaimChat *chat)
6034
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
505 {
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
506 char *name;
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
507
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
508 if(chat->alias){
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
509 name = g_strdup(chat->alias);
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
510 }
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
511 else{
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
512 GList *parts;
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
513 GaimPlugin *prpl;
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
514 GaimPluginProtocolInfo *prpl_info;
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
515 struct proto_chat_entry *pce;
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
516
7956
1b8261f374ea [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7950
diff changeset
517 prpl = gaim_find_prpl(gaim_account_get_protocol_id(chat->account));
6034
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
518 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
519
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
520 parts = prpl_info->chat_info(chat->account->gc);
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
521
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
522 pce = parts->data;
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
523 name = g_markup_escape_text(g_hash_table_lookup(chat->components,
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
524 pce->identifier), -1);
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
525 g_list_free(parts);
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
526 }
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
527
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
528 return name;
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
529 }
5a0060191a77 [gaim-migrate @ 6484]
Luke Schierer <lschiere@pidgin.im>
parents: 6012
diff changeset
530
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
531 GaimBuddy *gaim_buddy_new(GaimAccount *account, const char *screenname, const char *alias)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
532 {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
533 GaimBuddy *b;
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
534 GaimBlistUiOps *ops;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
535
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
536 b = g_new0(GaimBuddy, 1);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
537 b->account = account;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
538 b->name = g_strdup(screenname);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
539 b->alias = g_strdup(alias);
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
540 gaim_blist_node_initialize_settings((GaimBlistNode*)b);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
541 ((GaimBlistNode*)b)->type = GAIM_BLIST_BUDDY_NODE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
542
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7003
diff changeset
543 ops = gaim_blist_get_ui_ops();
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
544
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
545 if (ops != NULL && ops->new_node != NULL)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
546 ops->new_node((GaimBlistNode *)b);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
547
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
548 return b;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
549 }
5634
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
550
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
551 void
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
552 gaim_buddy_set_icon(GaimBuddy *buddy, GaimBuddyIcon *icon)
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
553 {
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
554 g_return_if_fail(buddy != NULL);
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
555
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
556 if (buddy->icon == icon)
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
557 return;
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
558
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
559 if (buddy->icon != NULL)
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
560 gaim_buddy_icon_unref(buddy->icon);
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
561
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
562 buddy->icon = (icon == NULL ? NULL : gaim_buddy_icon_ref(icon));
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
563
6886
b5fb1d5282e5 [gaim-migrate @ 7432]
Christian Hammond <chipx86@chipx86.com>
parents: 6885
diff changeset
564 gaim_buddy_icon_cache(icon, buddy);
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
565
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
566 gaim_blist_update_buddy_icon(buddy);
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
567 }
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
568
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
569 GaimBuddyIcon *
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
570 gaim_buddy_get_icon(const GaimBuddy *buddy)
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
571 {
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
572 g_return_val_if_fail(buddy != NULL, NULL);
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
573
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
574 return buddy->icon;
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
575 }
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
576
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7117
diff changeset
577 void gaim_blist_add_chat(GaimChat *chat, GaimGroup *group, GaimBlistNode *node)
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
578 {
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
579 GaimBlistNode *n = node, *cnode = (GaimBlistNode*)chat;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
580 GaimGroup *g = group;
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
581 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
582 gboolean save = FALSE;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
583
6774
c4e3cc0693ab [gaim-migrate @ 7312]
Nathan Walp <nwalp@pidgin.im>
parents: 6755
diff changeset
584
c4e3cc0693ab [gaim-migrate @ 7312]
Nathan Walp <nwalp@pidgin.im>
parents: 6755
diff changeset
585 g_return_if_fail(chat != NULL);
c4e3cc0693ab [gaim-migrate @ 7312]
Nathan Walp <nwalp@pidgin.im>
parents: 6755
diff changeset
586 g_return_if_fail(GAIM_BLIST_NODE_IS_CHAT((GaimBlistNode*)chat));
c4e3cc0693ab [gaim-migrate @ 7312]
Nathan Walp <nwalp@pidgin.im>
parents: 6755
diff changeset
587
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
588 if (!n) {
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
589 if (!g) {
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
590 g = gaim_group_new(_("Chats"));
5634
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
591 gaim_blist_add_group(g,
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
592 gaim_blist_get_last_sibling(gaimbuddylist->root));
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
593 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
594 } else {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
595 g = (GaimGroup*)n->parent;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
596 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
597
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
598 /* if we're moving to overtop of ourselves, do nothing */
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
599 if(cnode == n)
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
600 return;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
601
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
602 if (cnode->parent) {
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
603 /* This chat was already in the list and is
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
604 * being moved.
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
605 */
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
606 ((GaimGroup *)cnode->parent)->totalsize--;
5855
082982a4acbd [gaim-migrate @ 6286]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
607 if (gaim_account_is_connected(chat->account)) {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
608 ((GaimGroup *)cnode->parent)->online--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
609 ((GaimGroup *)cnode->parent)->currentsize--;
5287
abd6d3abbe37 [gaim-migrate @ 5659]
Nathan Walp <nwalp@pidgin.im>
parents: 5278
diff changeset
610 }
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
611 if(cnode->next)
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
612 cnode->next->prev = cnode->prev;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
613 if(cnode->prev)
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
614 cnode->prev->next = cnode->next;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
615 if(cnode->parent->child == cnode)
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
616 cnode->parent->child = cnode->next;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
617
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
618 ops->remove(gaimbuddylist, cnode);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
619
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
620 save = TRUE;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
621 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
622
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
623 if (n) {
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
624 if(n->next)
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
625 n->next->prev = cnode;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
626 cnode->next = n->next;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
627 cnode->prev = n;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
628 cnode->parent = n->parent;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
629 n->next = cnode;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
630 ((GaimGroup *)n->parent)->totalsize++;
5855
082982a4acbd [gaim-migrate @ 6286]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
631 if (gaim_account_is_connected(chat->account)) {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
632 ((GaimGroup *)n->parent)->online++;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
633 ((GaimGroup *)n->parent)->currentsize++;
5287
abd6d3abbe37 [gaim-migrate @ 5659]
Nathan Walp <nwalp@pidgin.im>
parents: 5278
diff changeset
634 }
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
635 } else {
5634
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
636 if(((GaimBlistNode*)g)->child)
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
637 ((GaimBlistNode*)g)->child->prev = cnode;
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
638 cnode->next = ((GaimBlistNode*)g)->child;
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
639 cnode->prev = NULL;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
640 ((GaimBlistNode*)g)->child = cnode;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
641 cnode->parent = (GaimBlistNode*)g;
5277
d7771fe33cbd [gaim-migrate @ 5649]
Luke Schierer <lschiere@pidgin.im>
parents: 5266
diff changeset
642 g->totalsize++;
5855
082982a4acbd [gaim-migrate @ 6286]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
643 if (gaim_account_is_connected(chat->account)) {
5287
abd6d3abbe37 [gaim-migrate @ 5659]
Nathan Walp <nwalp@pidgin.im>
parents: 5278
diff changeset
644 g->online++;
5277
d7771fe33cbd [gaim-migrate @ 5649]
Luke Schierer <lschiere@pidgin.im>
parents: 5266
diff changeset
645 g->currentsize++;
5287
abd6d3abbe37 [gaim-migrate @ 5659]
Nathan Walp <nwalp@pidgin.im>
parents: 5278
diff changeset
646 }
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
647 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
648
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
649 if (ops)
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
650 ops->update(gaimbuddylist, (GaimBlistNode*)cnode);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
651 if (save)
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
652 gaim_blist_save();
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
653 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
654
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
655 void gaim_blist_add_buddy(GaimBuddy *buddy, GaimContact *contact, GaimGroup *group, GaimBlistNode *node)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
656 {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
657 GaimBlistNode *cnode, *bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
658 GaimGroup *g;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
659 GaimContact *c;
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
660 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
661 gboolean save = FALSE;
5247
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
662 struct _gaim_hbuddy *hb;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
663
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
664 g_return_if_fail(buddy != NULL);
6774
c4e3cc0693ab [gaim-migrate @ 7312]
Nathan Walp <nwalp@pidgin.im>
parents: 6755
diff changeset
665 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY((GaimBlistNode*)buddy));
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
666
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
667 bnode = (GaimBlistNode *)buddy;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
668
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
669 /* if we're moving to overtop of ourselves, do nothing */
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
670 if(bnode == node || (!node && bnode->parent &&
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
671 contact && bnode->parent == (GaimBlistNode*)contact
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
672 && bnode == bnode->parent->child))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
673 return;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
674
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
675 if(node && GAIM_BLIST_NODE_IS_BUDDY(node)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
676 c = (GaimContact*)node->parent;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
677 g = (GaimGroup*)node->parent->parent;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
678 } else if(contact) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
679 c = contact;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
680 g = (GaimGroup*)((GaimBlistNode*)c)->parent;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
681 } else {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
682 if(group) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
683 g = group;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
684 } else {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
685 g = gaim_group_new(_("Buddies"));
5634
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
686 gaim_blist_add_group(g,
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
687 gaim_blist_get_last_sibling(gaimbuddylist->root));
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
688 }
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
689 c = gaim_contact_new();
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
690 gaim_blist_add_contact(c, g,
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
691 gaim_blist_get_last_child((GaimBlistNode*)g));
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
692 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
693
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
694 cnode = (GaimBlistNode *)c;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
695
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
696 if(bnode->parent) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
697 if(GAIM_BUDDY_IS_ONLINE(buddy)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
698 ((GaimContact*)bnode->parent)->online--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
699 if(((GaimContact*)bnode->parent)->online == 0)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
700 ((GaimGroup*)bnode->parent->parent)->online--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
701 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
702 if(gaim_account_is_connected(buddy->account)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
703 ((GaimContact*)bnode->parent)->currentsize--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
704 if(((GaimContact*)bnode->parent)->currentsize == 0)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
705 ((GaimGroup*)bnode->parent->parent)->currentsize--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
706 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
707 ((GaimContact*)bnode->parent)->totalsize--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
708 /* the group totalsize will be taken care of by remove_contact below */
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
709
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
710 if(bnode->parent->parent != (GaimBlistNode*)g)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
711 serv_move_buddy(buddy, (GaimGroup *)bnode->parent->parent, g);
5277
d7771fe33cbd [gaim-migrate @ 5649]
Luke Schierer <lschiere@pidgin.im>
parents: 5266
diff changeset
712
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
713 if(bnode->next)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
714 bnode->next->prev = bnode->prev;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
715 if(bnode->prev)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
716 bnode->prev->next = bnode->next;
6794
ab5dd35443c6 [gaim-migrate @ 7333]
Nathan Walp <nwalp@pidgin.im>
parents: 6778
diff changeset
717 if(bnode->parent->child == bnode)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
718 bnode->parent->child = bnode->next;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
719
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
720 ops->remove(gaimbuddylist, bnode);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
721
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
722 save = TRUE;
6742
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
723
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
724 if(bnode->parent->parent != (GaimBlistNode*)g) {
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
725 hb = g_new(struct _gaim_hbuddy, 1);
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7246
diff changeset
726 hb->name = g_strdup(gaim_normalize(buddy->account, buddy->name));
6742
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
727 hb->account = buddy->account;
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
728 hb->group = bnode->parent->parent;
6775
272b67f33a1e [gaim-migrate @ 7313]
Nathan Walp <nwalp@pidgin.im>
parents: 6774
diff changeset
729 g_hash_table_remove(gaimbuddylist->buddies, hb);
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7153
diff changeset
730 g_free(hb->name);
6742
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
731 g_free(hb);
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
732 }
6794
ab5dd35443c6 [gaim-migrate @ 7333]
Nathan Walp <nwalp@pidgin.im>
parents: 6778
diff changeset
733
7003
687fafe937d6 [gaim-migrate @ 7559]
Nathan Walp <nwalp@pidgin.im>
parents: 6983
diff changeset
734 if(!bnode->parent->child) {
6794
ab5dd35443c6 [gaim-migrate @ 7333]
Nathan Walp <nwalp@pidgin.im>
parents: 6778
diff changeset
735 gaim_blist_remove_contact((GaimContact*)bnode->parent);
7003
687fafe937d6 [gaim-migrate @ 7559]
Nathan Walp <nwalp@pidgin.im>
parents: 6983
diff changeset
736 } else {
687fafe937d6 [gaim-migrate @ 7559]
Nathan Walp <nwalp@pidgin.im>
parents: 6983
diff changeset
737 gaim_contact_compute_priority_buddy((GaimContact*)bnode->parent);
687fafe937d6 [gaim-migrate @ 7559]
Nathan Walp <nwalp@pidgin.im>
parents: 6983
diff changeset
738 ops->update(gaimbuddylist, bnode->parent);
687fafe937d6 [gaim-migrate @ 7559]
Nathan Walp <nwalp@pidgin.im>
parents: 6983
diff changeset
739 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
740 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
741
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
742 if(node && GAIM_BLIST_NODE_IS_BUDDY(node)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
743 if(node->next)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
744 node->next->prev = bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
745 bnode->next = node->next;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
746 bnode->prev = node;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
747 bnode->parent = node->parent;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
748 node->next = bnode;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
749 } else {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
750 if(cnode->child)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
751 cnode->child->prev = bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
752 bnode->prev = NULL;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
753 bnode->next = cnode->child;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
754 cnode->child = bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
755 bnode->parent = cnode;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
756 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
757
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
758 if(GAIM_BUDDY_IS_ONLINE(buddy)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
759 ((GaimContact*)bnode->parent)->online++;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
760 if(((GaimContact*)bnode->parent)->online == 1)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
761 ((GaimGroup*)bnode->parent->parent)->online++;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
762 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
763 if(gaim_account_is_connected(buddy->account)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
764 ((GaimContact*)bnode->parent)->currentsize++;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
765 if(((GaimContact*)bnode->parent)->currentsize == 1)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
766 ((GaimGroup*)bnode->parent->parent)->currentsize++;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
767 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
768 ((GaimContact*)bnode->parent)->totalsize++;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
769
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
770
6742
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
771 hb = g_new(struct _gaim_hbuddy, 1);
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7246
diff changeset
772 hb->name = g_strdup(gaim_normalize(buddy->account, buddy->name));
5247
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
773 hb->account = buddy->account;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
774 hb->group = ((GaimBlistNode*)buddy)->parent->parent;
5247
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
775
6742
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
776 g_hash_table_replace(gaimbuddylist->buddies, hb, buddy);
5247
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
777
6843
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
778 gaim_contact_compute_priority_buddy(gaim_buddy_get_contact(buddy));
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
779 if (ops)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
780 ops->update(gaimbuddylist, (GaimBlistNode*)buddy);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
781 if (save)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
782 gaim_blist_save();
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
783 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
784
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
785 GaimContact *gaim_contact_new()
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
786 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
787 GaimBlistUiOps *ops;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
788 GaimContact *c = g_new0(GaimContact, 1);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
789 ((GaimBlistNode*)c)->type = GAIM_BLIST_CONTACT_NODE;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
790
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
791 c->totalsize = c->currentsize = c->online = 0;
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
792 gaim_blist_node_initialize_settings((GaimBlistNode*)c);
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
793
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7003
diff changeset
794 ops = gaim_blist_get_ui_ops();
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
795 if (ops != NULL && ops->new_node != NULL)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
796 ops->new_node((GaimBlistNode *)c);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
797
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
798 return c;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
799 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
800
6755
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
801 void gaim_contact_set_alias(GaimContact* contact, const char *alias)
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
802 {
7245
747b9e00ef60 [gaim-migrate @ 7822]
Nathan Walp <nwalp@pidgin.im>
parents: 7162
diff changeset
803 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
747b9e00ef60 [gaim-migrate @ 7822]
Nathan Walp <nwalp@pidgin.im>
parents: 7162
diff changeset
804
6755
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
805 g_return_if_fail(contact != NULL);
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
806
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
807 if(contact->alias)
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
808 g_free(contact->alias);
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
809
7245
747b9e00ef60 [gaim-migrate @ 7822]
Nathan Walp <nwalp@pidgin.im>
parents: 7162
diff changeset
810 if(alias && *alias)
747b9e00ef60 [gaim-migrate @ 7822]
Nathan Walp <nwalp@pidgin.im>
parents: 7162
diff changeset
811 contact->alias = g_strdup(alias);
747b9e00ef60 [gaim-migrate @ 7822]
Nathan Walp <nwalp@pidgin.im>
parents: 7162
diff changeset
812 else
747b9e00ef60 [gaim-migrate @ 7822]
Nathan Walp <nwalp@pidgin.im>
parents: 7162
diff changeset
813 contact->alias = NULL;
747b9e00ef60 [gaim-migrate @ 7822]
Nathan Walp <nwalp@pidgin.im>
parents: 7162
diff changeset
814
747b9e00ef60 [gaim-migrate @ 7822]
Nathan Walp <nwalp@pidgin.im>
parents: 7162
diff changeset
815 if (ops)
747b9e00ef60 [gaim-migrate @ 7822]
Nathan Walp <nwalp@pidgin.im>
parents: 7162
diff changeset
816 ops->update(gaimbuddylist, (GaimBlistNode*)contact);
6755
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
817 }
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
818
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
819 const char *gaim_contact_get_alias(GaimContact* contact)
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
820 {
7312
b8ce6e194cff [gaim-migrate @ 7896]
Nathan Walp <nwalp@pidgin.im>
parents: 7261
diff changeset
821 if(!contact)
b8ce6e194cff [gaim-migrate @ 7896]
Nathan Walp <nwalp@pidgin.im>
parents: 7261
diff changeset
822 return NULL;
b8ce6e194cff [gaim-migrate @ 7896]
Nathan Walp <nwalp@pidgin.im>
parents: 7261
diff changeset
823
b8ce6e194cff [gaim-migrate @ 7896]
Nathan Walp <nwalp@pidgin.im>
parents: 7261
diff changeset
824 if(contact->alias)
b8ce6e194cff [gaim-migrate @ 7896]
Nathan Walp <nwalp@pidgin.im>
parents: 7261
diff changeset
825 return contact->alias;
b8ce6e194cff [gaim-migrate @ 7896]
Nathan Walp <nwalp@pidgin.im>
parents: 7261
diff changeset
826
b8ce6e194cff [gaim-migrate @ 7896]
Nathan Walp <nwalp@pidgin.im>
parents: 7261
diff changeset
827 return gaim_get_buddy_alias(contact->priority);
6755
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
828 }
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
829
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
830 GaimGroup *gaim_group_new(const char *name)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
831 {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
832 GaimGroup *g = gaim_find_group(name);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
833
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
834 if (!g) {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
835 GaimBlistUiOps *ops;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
836 g= g_new0(GaimGroup, 1);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
837 g->name = g_strdup(name);
5277
d7771fe33cbd [gaim-migrate @ 5649]
Luke Schierer <lschiere@pidgin.im>
parents: 5266
diff changeset
838 g->totalsize = 0;
d7771fe33cbd [gaim-migrate @ 5649]
Luke Schierer <lschiere@pidgin.im>
parents: 5266
diff changeset
839 g->currentsize = 0;
d7771fe33cbd [gaim-migrate @ 5649]
Luke Schierer <lschiere@pidgin.im>
parents: 5266
diff changeset
840 g->online = 0;
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
841 gaim_blist_node_initialize_settings((GaimBlistNode*)g);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
842 ((GaimBlistNode*)g)->type = GAIM_BLIST_GROUP_NODE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
843
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7003
diff changeset
844 ops = gaim_blist_get_ui_ops();
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
845
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
846 if (ops != NULL && ops->new_node != NULL)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
847 ops->new_node((GaimBlistNode *)g);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
848
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
849 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
850 return g;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
851 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
852
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
853 void gaim_blist_add_contact(GaimContact *contact, GaimGroup *group, GaimBlistNode *node)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
854 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
855 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
856 GaimGroup *g;
6742
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
857 GaimBlistNode *gnode, *cnode, *bnode;
8328
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
858 gboolean save = FALSE, empty_contact = FALSE;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
859
6774
c4e3cc0693ab [gaim-migrate @ 7312]
Nathan Walp <nwalp@pidgin.im>
parents: 6755
diff changeset
860 g_return_if_fail(contact != NULL);
c4e3cc0693ab [gaim-migrate @ 7312]
Nathan Walp <nwalp@pidgin.im>
parents: 6755
diff changeset
861 g_return_if_fail(GAIM_BLIST_NODE_IS_CONTACT((GaimBlistNode*)contact));
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
862
6975
a83687eeb713 [gaim-migrate @ 7528]
Nathan Walp <nwalp@pidgin.im>
parents: 6965
diff changeset
863 if((GaimBlistNode*)contact == node)
a83687eeb713 [gaim-migrate @ 7528]
Nathan Walp <nwalp@pidgin.im>
parents: 6965
diff changeset
864 return;
a83687eeb713 [gaim-migrate @ 7528]
Nathan Walp <nwalp@pidgin.im>
parents: 6965
diff changeset
865
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
866 if(node && (GAIM_BLIST_NODE_IS_CONTACT(node) ||
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
867 GAIM_BLIST_NODE_IS_CHAT(node)))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
868 g = (GaimGroup*)node->parent;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
869 else if(group)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
870 g = group;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
871 else {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
872 g = gaim_group_new(_("Buddies"));
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
873 gaim_blist_add_group(g,
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
874 gaim_blist_get_last_sibling(gaimbuddylist->root));
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
875 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
876
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
877 gnode = (GaimBlistNode*)g;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
878 cnode = (GaimBlistNode*)contact;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
879
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
880 if(cnode->parent) {
6731
b4943b9cea2b [gaim-migrate @ 7258]
Nathan Walp <nwalp@pidgin.im>
parents: 6706
diff changeset
881 if(cnode->parent->child == cnode)
b4943b9cea2b [gaim-migrate @ 7258]
Nathan Walp <nwalp@pidgin.im>
parents: 6706
diff changeset
882 cnode->parent->child = cnode->next;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
883 if(cnode->prev)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
884 cnode->prev->next = cnode->next;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
885 if(cnode->next)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
886 cnode->next->prev = cnode->prev;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
887
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
888
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
889 if(contact->online > 0)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
890 ((GaimGroup*)cnode->parent)->online--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
891 if(contact->currentsize > 0)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
892 ((GaimGroup*)cnode->parent)->currentsize--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
893 ((GaimGroup*)cnode->parent)->totalsize--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
894
6731
b4943b9cea2b [gaim-migrate @ 7258]
Nathan Walp <nwalp@pidgin.im>
parents: 6706
diff changeset
895 ops->remove(gaimbuddylist, cnode);
b4943b9cea2b [gaim-migrate @ 7258]
Nathan Walp <nwalp@pidgin.im>
parents: 6706
diff changeset
896
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
897 save = TRUE;
6742
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
898
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
899 if(cnode->parent != gnode) {
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
900 for(bnode = cnode->child; bnode; bnode = bnode->next) {
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
901 GaimBuddy *b = (GaimBuddy*)bnode;
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
902
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
903 struct _gaim_hbuddy *hb = g_new(struct _gaim_hbuddy, 1);
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7246
diff changeset
904 hb->name = g_strdup(gaim_normalize(b->account, b->name));
6742
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
905 hb->account = b->account;
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
906 hb->group = cnode->parent;
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
907
6776
46e1c07f4de5 [gaim-migrate @ 7314]
Nathan Walp <nwalp@pidgin.im>
parents: 6775
diff changeset
908 g_hash_table_remove(gaimbuddylist->buddies, hb);
6742
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
909
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8328
diff changeset
910 if(!gaim_find_buddy_in_group(b->account, b->name, g)) {
8328
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
911 hb->group = gnode;
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
912 g_hash_table_replace(gaimbuddylist->buddies, hb, b);
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
913
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
914 if(b->account->gc)
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
915 serv_move_buddy(b, (GaimGroup*)cnode->parent, g);
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
916 } else {
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
917 /* this buddy already exists in the group, so we're
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
918 * gonna delete it instead */
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
919 g_free(hb->name);
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
920 g_free(hb);
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
921 if(b->account->gc)
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
922 serv_remove_buddy(b->account->gc, b->name, ((GaimGroup*)cnode->parent)->name);
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
923
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
924 if(!cnode->child->next)
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
925 empty_contact = TRUE;
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
926 gaim_blist_remove_buddy(b);
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
927 }
6742
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
928 }
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
929 }
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
930 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
931
8328
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
932 if(empty_contact)
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
933 return;
645a3d07ee45 [gaim-migrate @ 9052]
Nathan Walp <nwalp@pidgin.im>
parents: 8287
diff changeset
934
6775
272b67f33a1e [gaim-migrate @ 7313]
Nathan Walp <nwalp@pidgin.im>
parents: 6774
diff changeset
935
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
936 if(node && (GAIM_BLIST_NODE_IS_CONTACT(node) ||
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
937 GAIM_BLIST_NODE_IS_CHAT(node))) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
938 if(node->next)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
939 node->next->prev = cnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
940 cnode->next = node->next;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
941 cnode->prev = node;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
942 cnode->parent = node->parent;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
943 node->next = cnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
944 } else {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
945 if(gnode->child)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
946 gnode->child->prev = cnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
947 cnode->prev = NULL;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
948 cnode->next = gnode->child;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
949 gnode->child = cnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
950 cnode->parent = gnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
951 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
952
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
953 if(contact->online > 0)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
954 g->online++;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
955 if(contact->currentsize > 0)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
956 g->currentsize++;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
957 g->totalsize++;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
958
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
959 if(ops && cnode->child)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
960 ops->update(gaimbuddylist, cnode);
6775
272b67f33a1e [gaim-migrate @ 7313]
Nathan Walp <nwalp@pidgin.im>
parents: 6774
diff changeset
961
272b67f33a1e [gaim-migrate @ 7313]
Nathan Walp <nwalp@pidgin.im>
parents: 6774
diff changeset
962 for(bnode = cnode->child; bnode; bnode = bnode->next)
272b67f33a1e [gaim-migrate @ 7313]
Nathan Walp <nwalp@pidgin.im>
parents: 6774
diff changeset
963 ops->update(gaimbuddylist, bnode);
272b67f33a1e [gaim-migrate @ 7313]
Nathan Walp <nwalp@pidgin.im>
parents: 6774
diff changeset
964
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
965 if (save)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
966 gaim_blist_save();
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
967 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
968
7246
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
969 void gaim_blist_merge_contact(GaimContact *source, GaimBlistNode *node)
6965
d4b4229bcd21 [gaim-migrate @ 7512]
Nathan Walp <nwalp@pidgin.im>
parents: 6961
diff changeset
970 {
d4b4229bcd21 [gaim-migrate @ 7512]
Nathan Walp <nwalp@pidgin.im>
parents: 6961
diff changeset
971 GaimBlistNode *sourcenode = (GaimBlistNode*)source;
7246
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
972 GaimBlistNode *targetnode;
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
973 GaimBlistNode *prev, *cur, *next;
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
974 GaimContact *target;
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
975
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
976 if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
977 target = (GaimContact*)node;
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
978 prev = gaim_blist_get_last_child(node);
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
979 } else if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
980 target = (GaimContact*)node->parent;
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
981 prev = node;
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
982 } else {
6965
d4b4229bcd21 [gaim-migrate @ 7512]
Nathan Walp <nwalp@pidgin.im>
parents: 6961
diff changeset
983 return;
7246
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
984 }
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
985
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
986 if(source == target || !target)
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
987 return;
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
988
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
989 targetnode = (GaimBlistNode*)target;
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
990 next = sourcenode->child;
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
991
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
992 while(next) {
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
993 cur = next;
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
994 next = cur->next;
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
995 if(GAIM_BLIST_NODE_IS_BUDDY(cur)) {
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
996 gaim_blist_add_buddy((GaimBuddy*)cur, target, NULL, prev);
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
997 prev = cur;
cb6bf374c7ee [gaim-migrate @ 7823]
Nathan Walp <nwalp@pidgin.im>
parents: 7245
diff changeset
998 }
6965
d4b4229bcd21 [gaim-migrate @ 7512]
Nathan Walp <nwalp@pidgin.im>
parents: 6961
diff changeset
999 }
d4b4229bcd21 [gaim-migrate @ 7512]
Nathan Walp <nwalp@pidgin.im>
parents: 6961
diff changeset
1000 }
d4b4229bcd21 [gaim-migrate @ 7512]
Nathan Walp <nwalp@pidgin.im>
parents: 6961
diff changeset
1001
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1002 void gaim_blist_add_group (GaimGroup *group, GaimBlistNode *node)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1003 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
1004 GaimBlistUiOps *ops;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1005 GaimBlistNode *gnode = (GaimBlistNode*)group;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1006 gboolean save = FALSE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1007
6774
c4e3cc0693ab [gaim-migrate @ 7312]
Nathan Walp <nwalp@pidgin.im>
parents: 6755
diff changeset
1008 g_return_if_fail(group != NULL);
c4e3cc0693ab [gaim-migrate @ 7312]
Nathan Walp <nwalp@pidgin.im>
parents: 6755
diff changeset
1009 g_return_if_fail(GAIM_BLIST_NODE_IS_GROUP((GaimBlistNode*)group));
c4e3cc0693ab [gaim-migrate @ 7312]
Nathan Walp <nwalp@pidgin.im>
parents: 6755
diff changeset
1010
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1011 if (!gaimbuddylist)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1012 gaimbuddylist = gaim_blist_new();
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1013 ops = gaimbuddylist->ui_ops;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1014
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1015 if (!gaimbuddylist->root) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1016 gaimbuddylist->root = gnode;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1017 return;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1018 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1019
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1020 /* if we're moving to overtop of ourselves, do nothing */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1021 if(gnode == node)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1022 return;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1023
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1024 if (gaim_find_group(group->name)) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1025 /* This is just being moved */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1026
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1027 ops->remove(gaimbuddylist, (GaimBlistNode*)group);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1028
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1029 if(gnode == gaimbuddylist->root)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1030 gaimbuddylist->root = gnode->next;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1031 if(gnode->prev)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1032 gnode->prev->next = gnode->next;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1033 if(gnode->next)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1034 gnode->next->prev = gnode->prev;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1035
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1036 save = TRUE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1037 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1038
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1039 if (node && GAIM_BLIST_NODE_IS_GROUP(node)) {
5634
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
1040 gnode->next = node->next;
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
1041 gnode->prev = node;
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
1042 if(node->next)
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
1043 node->next->prev = gnode;
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
1044 node->next = gnode;
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
1045 } else {
6807
ff477c28df7b [gaim-migrate @ 7347]
Nathan Walp <nwalp@pidgin.im>
parents: 6803
diff changeset
1046 if(gaimbuddylist->root)
ff477c28df7b [gaim-migrate @ 7347]
Nathan Walp <nwalp@pidgin.im>
parents: 6803
diff changeset
1047 gaimbuddylist->root->prev = gnode;
5634
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
1048 gnode->next = gaimbuddylist->root;
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
1049 gnode->prev = NULL;
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
1050 gaimbuddylist->root = gnode;
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
1051 }
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
1052
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1053
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1054 if (ops) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1055 ops->update(gaimbuddylist, gnode);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1056 for(node = gnode->child; node; node = node->next)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1057 ops->update(gaimbuddylist, node);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1058 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1059 if (save)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1060 gaim_blist_save();
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1061 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1062
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1063 void gaim_blist_remove_contact(GaimContact* contact)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1064 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
1065 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1066
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1067 GaimBlistNode *gnode, *cnode = (GaimBlistNode*)contact;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1068
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1069 gnode = cnode->parent;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1070
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1071 if(cnode->child) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1072 while(cnode->child) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1073 gaim_blist_remove_buddy((GaimBuddy*)cnode->child);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1074 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1075 } else {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1076 if(ops)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1077 ops->remove(gaimbuddylist, cnode);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1078
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1079 if(gnode->child == cnode)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1080 gnode->child = cnode->next;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1081 if(cnode->prev)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1082 cnode->prev->next = cnode->next;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1083 if(cnode->next)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1084 cnode->next->prev = cnode->prev;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1085
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1086 g_free(contact);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1087 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1088 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1089
6742
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
1090 void gaim_blist_remove_buddy (GaimBuddy *buddy)
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1091 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
1092 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1093
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1094 GaimBlistNode *cnode, *node = (GaimBlistNode*)buddy;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1095 GaimGroup *group;
6742
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
1096 struct _gaim_hbuddy hb;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1097
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1098 cnode = node->parent;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1099 group = (GaimGroup *)cnode->parent;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1100
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1101 if(GAIM_BUDDY_IS_ONLINE(buddy)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1102 ((GaimContact*)cnode)->online--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1103 if(((GaimContact*)cnode)->online == 0)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1104 group->online--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1105 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1106 if(gaim_account_is_connected(buddy->account)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1107 ((GaimContact*)cnode)->currentsize--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1108 if(((GaimContact*)cnode)->currentsize == 0)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1109 group->currentsize--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1110 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1111 ((GaimContact*)cnode)->totalsize--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1112
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1113 if (node->prev)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1114 node->prev->next = node->next;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1115 if (node->next)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1116 node->next->prev = node->prev;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1117 if(cnode->child == node) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1118 cnode->child = node->next;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1119 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1120
8194
22b3974dc1af [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8175
diff changeset
1121 if(((GaimContact*)cnode)->priority == buddy) {
22b3974dc1af [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8175
diff changeset
1122 gaim_contact_compute_priority_buddy((GaimContact*)cnode);
22b3974dc1af [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8175
diff changeset
1123 ops->update(gaimbuddylist, cnode);
22b3974dc1af [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8175
diff changeset
1124 }
6755
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
1125
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7246
diff changeset
1126 hb.name = g_strdup(gaim_normalize(buddy->account, buddy->name));
5247
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
1127 hb.account = buddy->account;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1128 hb.group = ((GaimBlistNode*)buddy)->parent->parent;
6742
d93c6a1fadf2 [gaim-migrate @ 7274]
Nathan Walp <nwalp@pidgin.im>
parents: 6731
diff changeset
1129 g_hash_table_remove(gaimbuddylist->buddies, &hb);
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7153
diff changeset
1130 g_free(hb.name);
5247
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
1131
5292
436c83d60be0 [gaim-migrate @ 5664]
Nathan Walp <nwalp@pidgin.im>
parents: 5287
diff changeset
1132 if(buddy->timer > 0)
8287
ef881489396e [gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents: 8273
diff changeset
1133 gaim_timeout_remove(buddy->timer);
5292
436c83d60be0 [gaim-migrate @ 5664]
Nathan Walp <nwalp@pidgin.im>
parents: 5287
diff changeset
1134
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
1135 if (buddy->icon != NULL)
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
1136 gaim_buddy_icon_unref(buddy->icon);
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6843
diff changeset
1137
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1138 ops->remove(gaimbuddylist, node);
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
1139 g_hash_table_destroy(buddy->node.settings);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1140 g_free(buddy->name);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1141 g_free(buddy->alias);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1142 g_free(buddy);
6755
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
1143
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
1144 if(!cnode->child)
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
1145 gaim_blist_remove_contact((GaimContact*)cnode);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1146 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1147
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7117
diff changeset
1148 void gaim_blist_remove_chat (GaimChat *chat)
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1149 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
1150 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1151
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1152 GaimBlistNode *gnode, *node = (GaimBlistNode*)chat;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1153 GaimGroup *group;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1154
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1155 gnode = node->parent;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1156 group = (GaimGroup *)gnode;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1157
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1158 if(gnode->child == node)
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1159 gnode->child = node->next;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1160 if (node->prev)
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1161 node->prev->next = node->next;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1162 if (node->next)
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1163 node->next->prev = node->prev;
5277
d7771fe33cbd [gaim-migrate @ 5649]
Luke Schierer <lschiere@pidgin.im>
parents: 5266
diff changeset
1164 group->totalsize--;
5855
082982a4acbd [gaim-migrate @ 6286]
Nathan Walp <nwalp@pidgin.im>
parents: 5776
diff changeset
1165 if (gaim_account_is_connected(chat->account)) {
5277
d7771fe33cbd [gaim-migrate @ 5649]
Luke Schierer <lschiere@pidgin.im>
parents: 5266
diff changeset
1166 group->currentsize--;
5394
08a90a9e28e4 [gaim-migrate @ 5770]
Nathan Walp <nwalp@pidgin.im>
parents: 5392
diff changeset
1167 group->online--;
08a90a9e28e4 [gaim-migrate @ 5770]
Nathan Walp <nwalp@pidgin.im>
parents: 5392
diff changeset
1168 }
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1169
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1170 ops->remove(gaimbuddylist, node);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1171 g_hash_table_destroy(chat->components);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1172 g_free(chat->alias);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1173 g_free(chat);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1174 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1175
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1176 void gaim_blist_remove_group (GaimGroup *group)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1177 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
1178 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1179 GaimBlistNode *node = (GaimBlistNode*)group;
6885
66dd420d3d23 [gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents: 6872
diff changeset
1180 GList *l;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1181
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1182 if(node->child) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1183 char *buf;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1184 int count = 0;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1185 GaimBlistNode *child = node->child;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1186
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1187 while(child) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1188 count++;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1189 child = child->next;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1190 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1191
6308
a21cf07cd8e1 [gaim-migrate @ 6807]
Mark Doliner <mark@kingant.net>
parents: 6307
diff changeset
1192 buf = g_strdup_printf(ngettext("%d buddy from group %s was not removed "
a21cf07cd8e1 [gaim-migrate @ 6807]
Mark Doliner <mark@kingant.net>
parents: 6307
diff changeset
1193 "because its account was not logged in."
a21cf07cd8e1 [gaim-migrate @ 6807]
Mark Doliner <mark@kingant.net>
parents: 6307
diff changeset
1194 " This buddy and the group were not "
a21cf07cd8e1 [gaim-migrate @ 6807]
Mark Doliner <mark@kingant.net>
parents: 6307
diff changeset
1195 "removed.\n",
a21cf07cd8e1 [gaim-migrate @ 6807]
Mark Doliner <mark@kingant.net>
parents: 6307
diff changeset
1196 "%d buddies from group %s were not "
a21cf07cd8e1 [gaim-migrate @ 6807]
Mark Doliner <mark@kingant.net>
parents: 6307
diff changeset
1197 "removed because their accounts were "
6336
aeb8c2119a58 [gaim-migrate @ 6835]
Mark Doliner <mark@kingant.net>
parents: 6322
diff changeset
1198 "not logged in. These buddies and "
aeb8c2119a58 [gaim-migrate @ 6835]
Mark Doliner <mark@kingant.net>
parents: 6322
diff changeset
1199 "the group were not removed.\n", count),
6308
a21cf07cd8e1 [gaim-migrate @ 6807]
Mark Doliner <mark@kingant.net>
parents: 6307
diff changeset
1200 count, group->name);
5541
aee0ee458974 [gaim-migrate @ 5941]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
1201 gaim_notify_error(NULL, NULL, _("Group not removed"), buf);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1202 g_free(buf);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1203 return;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1204 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1205
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1206 if(gaimbuddylist->root == node)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1207 gaimbuddylist->root = node->next;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1208 if (node->prev)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1209 node->prev->next = node->next;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1210 if (node->next)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1211 node->next->prev = node->prev;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1212
6885
66dd420d3d23 [gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents: 6872
diff changeset
1213 for (l = gaim_connections_get_all(); l != NULL; l = l->next)
66dd420d3d23 [gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents: 6872
diff changeset
1214 {
66dd420d3d23 [gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents: 6872
diff changeset
1215 GaimConnection *gc = (GaimConnection *)l->data;
66dd420d3d23 [gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents: 6872
diff changeset
1216
66dd420d3d23 [gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents: 6872
diff changeset
1217 if (gaim_connection_get_state(gc) == GAIM_CONNECTED)
66dd420d3d23 [gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents: 6872
diff changeset
1218 serv_remove_group(gc, group->name);
66dd420d3d23 [gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents: 6872
diff changeset
1219 }
66dd420d3d23 [gaim-migrate @ 7431]
Christian Hammond <chipx86@chipx86.com>
parents: 6872
diff changeset
1220
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1221 ops->remove(gaimbuddylist, node);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1222 g_free(group->name);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1223 g_free(group);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1224 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1225
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1226 GaimBuddy *gaim_contact_get_priority_buddy(GaimContact *contact) {
6843
549a0bbbf73d [gaim-migrate @ 7388]
Nathan Walp <nwalp@pidgin.im>
parents: 6841
diff changeset
1227 return contact->priority;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1228 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1229
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1230 const char *gaim_get_buddy_alias_only(GaimBuddy *b) {
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5541
diff changeset
1231 if(!b)
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5541
diff changeset
1232 return NULL;
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5541
diff changeset
1233
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5541
diff changeset
1234 if(b->alias && b->alias[0]) {
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5541
diff changeset
1235 return b->alias;
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5541
diff changeset
1236 }
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5541
diff changeset
1237 else if (b->server_alias != NULL &&
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5541
diff changeset
1238 gaim_prefs_get_bool("/core/buddies/use_server_alias")) {
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5541
diff changeset
1239
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5541
diff changeset
1240 return b->server_alias;
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5541
diff changeset
1241 }
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5541
diff changeset
1242
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5541
diff changeset
1243 return NULL;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1244 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1245
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1246 const char * gaim_get_buddy_alias (GaimBuddy *buddy)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1247 {
6755
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
1248 const char *ret;
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
1249
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
1250 if(!buddy)
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
1251 return _("Unknown");
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1252
6755
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
1253 ret= gaim_get_buddy_alias_only(buddy);
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
1254
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
1255 return ret ? ret : buddy->name;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1256 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1257
7125
208cb260d7a7 [gaim-migrate @ 7692]
Nathan Walp <nwalp@pidgin.im>
parents: 7118
diff changeset
1258 const char *gaim_chat_get_name(GaimChat *chat)
6744
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1259 {
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1260 if(chat->alias && *chat->alias) {
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1261 return chat->alias;
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1262 } else {
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1263 struct proto_chat_entry *pce;
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1264 GList *parts, *tmp;
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1265 char *ret;
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1266
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1267 parts = GAIM_PLUGIN_PROTOCOL_INFO(chat->account->gc->prpl)->chat_info(chat->account->gc);
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1268 pce = parts->data;
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1269 ret = g_hash_table_lookup(chat->components, pce->identifier);
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1270 for(tmp = parts; tmp; tmp = tmp->next)
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1271 g_free(tmp->data);
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1272 g_list_free(parts);
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1273
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1274 return ret;
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1275 }
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1276 }
a781689ca455 [gaim-migrate @ 7276]
Nathan Walp <nwalp@pidgin.im>
parents: 6742
diff changeset
1277
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1278 GaimBuddy *gaim_find_buddy(GaimAccount *account, const char *name)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1279 {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1280 GaimBuddy *buddy;
5247
60983a46700e [gaim-migrate @ 5618]
Luke Schierer <lschiere@pidgin.im>
parents: 5237
diff changeset
1281 struct _gaim_hbuddy hb;
5758
666b04f93c55 [gaim-migrate @ 6183]
Sean Egan <seanegan@gmail.com>
parents: 5676
diff changeset
1282 GaimBlistNode *group;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1283
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1284 if (!gaimbuddylist)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1285 return NULL;
6245
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1286
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1287 if (!name)
5985
60d9cbfb6bf8 [gaim-migrate @ 6433]
Christian Hammond <chipx86@chipx86.com>
parents: 5947
diff changeset
1288 return NULL;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1289
7429
58a426e1bd1a [gaim-migrate @ 8033]
Nathan Walp <nwalp@pidgin.im>
parents: 7420
diff changeset
1290 hb.account = account;
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7246
diff changeset
1291 hb.name = g_strdup(gaim_normalize(account, name));
7429
58a426e1bd1a [gaim-migrate @ 8033]
Nathan Walp <nwalp@pidgin.im>
parents: 7420
diff changeset
1292
6245
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1293 for(group = gaimbuddylist->root; group; group = group->next) {
5758
666b04f93c55 [gaim-migrate @ 6183]
Sean Egan <seanegan@gmail.com>
parents: 5676
diff changeset
1294 hb.group = group;
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7153
diff changeset
1295 if ((buddy = g_hash_table_lookup(gaimbuddylist->buddies, &hb))) {
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7153
diff changeset
1296 g_free(hb.name);
5758
666b04f93c55 [gaim-migrate @ 6183]
Sean Egan <seanegan@gmail.com>
parents: 5676
diff changeset
1297 return buddy;
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7153
diff changeset
1298 }
5758
666b04f93c55 [gaim-migrate @ 6183]
Sean Egan <seanegan@gmail.com>
parents: 5676
diff changeset
1299 }
6245
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1300
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7153
diff changeset
1301 g_free(hb.name);
5758
666b04f93c55 [gaim-migrate @ 6183]
Sean Egan <seanegan@gmail.com>
parents: 5676
diff changeset
1302 return NULL;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1303 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1304
6872
dd0eecfbe413 [gaim-migrate @ 7418]
Nathan Walp <nwalp@pidgin.im>
parents: 6870
diff changeset
1305 GaimBuddy *gaim_find_buddy_in_group(GaimAccount *account, const char *name,
dd0eecfbe413 [gaim-migrate @ 7418]
Nathan Walp <nwalp@pidgin.im>
parents: 6870
diff changeset
1306 GaimGroup *group)
dd0eecfbe413 [gaim-migrate @ 7418]
Nathan Walp <nwalp@pidgin.im>
parents: 6870
diff changeset
1307 {
dd0eecfbe413 [gaim-migrate @ 7418]
Nathan Walp <nwalp@pidgin.im>
parents: 6870
diff changeset
1308 struct _gaim_hbuddy hb;
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7153
diff changeset
1309 GaimBuddy *ret;
6872
dd0eecfbe413 [gaim-migrate @ 7418]
Nathan Walp <nwalp@pidgin.im>
parents: 6870
diff changeset
1310
dd0eecfbe413 [gaim-migrate @ 7418]
Nathan Walp <nwalp@pidgin.im>
parents: 6870
diff changeset
1311 if (!gaimbuddylist)
dd0eecfbe413 [gaim-migrate @ 7418]
Nathan Walp <nwalp@pidgin.im>
parents: 6870
diff changeset
1312 return NULL;
dd0eecfbe413 [gaim-migrate @ 7418]
Nathan Walp <nwalp@pidgin.im>
parents: 6870
diff changeset
1313
dd0eecfbe413 [gaim-migrate @ 7418]
Nathan Walp <nwalp@pidgin.im>
parents: 6870
diff changeset
1314 if (!name)
dd0eecfbe413 [gaim-migrate @ 7418]
Nathan Walp <nwalp@pidgin.im>
parents: 6870
diff changeset
1315 return NULL;
dd0eecfbe413 [gaim-migrate @ 7418]
Nathan Walp <nwalp@pidgin.im>
parents: 6870
diff changeset
1316
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7246
diff changeset
1317 hb.name = g_strdup(gaim_normalize(account, name));
6872
dd0eecfbe413 [gaim-migrate @ 7418]
Nathan Walp <nwalp@pidgin.im>
parents: 6870
diff changeset
1318 hb.account = account;
dd0eecfbe413 [gaim-migrate @ 7418]
Nathan Walp <nwalp@pidgin.im>
parents: 6870
diff changeset
1319 hb.group = (GaimBlistNode*)group;
dd0eecfbe413 [gaim-migrate @ 7418]
Nathan Walp <nwalp@pidgin.im>
parents: 6870
diff changeset
1320
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7153
diff changeset
1321 ret = g_hash_table_lookup(gaimbuddylist->buddies, &hb);
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7153
diff changeset
1322 g_free(hb.name);
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7153
diff changeset
1323 return ret;
6872
dd0eecfbe413 [gaim-migrate @ 7418]
Nathan Walp <nwalp@pidgin.im>
parents: 6870
diff changeset
1324 }
dd0eecfbe413 [gaim-migrate @ 7418]
Nathan Walp <nwalp@pidgin.im>
parents: 6870
diff changeset
1325
6245
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1326 GSList *gaim_find_buddies(GaimAccount *account, const char *name)
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1327 {
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1328 struct buddy *buddy;
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1329 struct _gaim_hbuddy hb;
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1330 GaimBlistNode *group;
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1331 GSList *ret = NULL;
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1332
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1333 if (!gaimbuddylist)
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1334 return NULL;
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1335
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1336 if (!name)
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1337 return NULL;
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1338
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7246
diff changeset
1339 hb.name = g_strdup(gaim_normalize(account, name));
6245
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1340 hb.account = account;
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1341
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1342 for(group = gaimbuddylist->root; group; group = group->next) {
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1343 hb.group = group;
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1344 if ((buddy = g_hash_table_lookup(gaimbuddylist->buddies, &hb)) != NULL)
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1345 ret = g_slist_append(ret, buddy);
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1346 }
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1347
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7153
diff changeset
1348 g_free(hb.name);
6245
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1349 return ret;
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1350 }
9083f92e0d58 [gaim-migrate @ 6739]
Nathan Walp <nwalp@pidgin.im>
parents: 6116
diff changeset
1351
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1352 GaimGroup *gaim_find_group(const char *name)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1353 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1354 GaimBlistNode *node;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1355 if (!gaimbuddylist)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1356 return NULL;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1357 node = gaimbuddylist->root;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1358 while(node) {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1359 if (!strcmp(((GaimGroup *)node)->name, name))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1360 return (GaimGroup *)node;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1361 node = node->next;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1362 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1363 return NULL;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1364 }
6456
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1365
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7117
diff changeset
1366 GaimChat *
6456
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1367 gaim_blist_find_chat(GaimAccount *account, const char *name)
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1368 {
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1369 char *chat_name;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7117
diff changeset
1370 GaimChat *chat;
6456
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1371 GaimPlugin *prpl;
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1372 GaimPluginProtocolInfo *prpl_info = NULL;
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1373 struct proto_chat_entry *pce;
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1374 GaimBlistNode *node, *group;
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1375 GList *parts;
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1376
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1377 g_return_val_if_fail(gaim_get_blist() != NULL, NULL);
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1378 g_return_val_if_fail(name != NULL, NULL);
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1379
7970
a6eb0e250417 [gaim-migrate @ 8647]
Nathan Walp <nwalp@pidgin.im>
parents: 7969
diff changeset
1380 if(!gaim_account_is_connected(account))
a6eb0e250417 [gaim-migrate @ 8647]
Nathan Walp <nwalp@pidgin.im>
parents: 7969
diff changeset
1381 return NULL;
a6eb0e250417 [gaim-migrate @ 8647]
Nathan Walp <nwalp@pidgin.im>
parents: 7969
diff changeset
1382
7999
38df71d58500 [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7970
diff changeset
1383 prpl = gaim_find_prpl(gaim_account_get_protocol_id(account));
38df71d58500 [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7970
diff changeset
1384 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
38df71d58500 [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7970
diff changeset
1385
38df71d58500 [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7970
diff changeset
1386 if(prpl_info->find_blist_chat != NULL)
38df71d58500 [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7970
diff changeset
1387 return prpl_info->find_blist_chat(account, name);
38df71d58500 [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7970
diff changeset
1388
6456
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1389 for (group = gaimbuddylist->root; group != NULL; group = group->next) {
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1390 for (node = group->child; node != NULL; node = node->next) {
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1391 if (GAIM_BLIST_NODE_IS_CHAT(node)) {
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1392
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7117
diff changeset
1393 chat = (GaimChat*)node;
6456
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1394
7999
38df71d58500 [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7970
diff changeset
1395 if(account != chat->account)
7970
a6eb0e250417 [gaim-migrate @ 8647]
Nathan Walp <nwalp@pidgin.im>
parents: 7969
diff changeset
1396 continue;
a6eb0e250417 [gaim-migrate @ 8647]
Nathan Walp <nwalp@pidgin.im>
parents: 7969
diff changeset
1397
6456
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1398 parts = prpl_info->chat_info(
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1399 gaim_account_get_connection(chat->account));
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1400
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1401 pce = parts->data;
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1402 chat_name = g_hash_table_lookup(chat->components,
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1403 pce->identifier);
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1404
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1405 if (chat->account == account &&
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1406 name != NULL && !strcmp(chat_name, name)) {
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1407
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1408 return chat;
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1409 }
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1410 }
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1411 }
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1412 }
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1413
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1414 return NULL;
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1415 }
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1416
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1417 GaimGroup *
7125
208cb260d7a7 [gaim-migrate @ 7692]
Nathan Walp <nwalp@pidgin.im>
parents: 7118
diff changeset
1418 gaim_chat_get_group(GaimChat *chat)
6456
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1419 {
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1420 g_return_val_if_fail(chat != NULL, NULL);
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1421
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1422 return (GaimGroup *)(((GaimBlistNode *)chat)->parent);
6456
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1423 }
ccfdf9f2cdd1 [gaim-migrate @ 6965]
Christian Hammond <chipx86@chipx86.com>
parents: 6450
diff changeset
1424
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1425 GaimGroup *gaim_find_buddys_group(GaimBuddy *buddy)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1426 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1427 if (!buddy)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1428 return NULL;
6706
854a435d2cc3 [gaim-migrate @ 7232]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1429
854a435d2cc3 [gaim-migrate @ 7232]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1430 if (((GaimBlistNode *)buddy)->parent == NULL)
854a435d2cc3 [gaim-migrate @ 7232]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1431 return NULL;
854a435d2cc3 [gaim-migrate @ 7232]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1432
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1433 return (GaimGroup *)(((GaimBlistNode*)buddy)->parent->parent);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1434 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1435
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1436 GSList *gaim_group_get_accounts(GaimGroup *g)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1437 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1438 GSList *l = NULL;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1439 GaimBlistNode *gnode, *cnode, *bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1440
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1441 gnode = (GaimBlistNode *)g;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1442
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1443 for(cnode = gnode->child; cnode; cnode = cnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1444 if (GAIM_BLIST_NODE_IS_CHAT(cnode)) {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7117
diff changeset
1445 if(!g_slist_find(l, ((GaimChat *)cnode)->account))
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7117
diff changeset
1446 l = g_slist_append(l, ((GaimChat *)cnode)->account);
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1447 } else if(GAIM_BLIST_NODE_IS_CONTACT(cnode)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1448 for(bnode = cnode->child; bnode; bnode = bnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1449 if(GAIM_BLIST_NODE_IS_BUDDY(bnode)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1450 if(!g_slist_find(l, ((GaimBuddy *)bnode)->account))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1451 l = g_slist_append(l, ((GaimBuddy *)bnode)->account);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1452 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1453 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1454 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1455 }
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1456
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1457 return l;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1458 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1459
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
1460 void gaim_blist_add_account(GaimAccount *account)
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1461 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
1462 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1463 GaimBlistNode *gnode, *cnode, *bnode;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1464
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1465 if(!gaimbuddylist)
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1466 return;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1467
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1468 if(!ops)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1469 return;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1470
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1471 for(gnode = gaimbuddylist->root; gnode; gnode = gnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1472 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1473 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1474 for(cnode = gnode->child; cnode; cnode = cnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1475 if(GAIM_BLIST_NODE_IS_CONTACT(cnode)) {
6956
a084d95d59dc [gaim-migrate @ 7503]
Nathan Walp <nwalp@pidgin.im>
parents: 6945
diff changeset
1476 gboolean recompute = FALSE;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1477 for(bnode = cnode->child; bnode; bnode = bnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1478 if(GAIM_BLIST_NODE_IS_BUDDY(bnode) &&
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1479 ((GaimBuddy*)bnode)->account == account) {
6956
a084d95d59dc [gaim-migrate @ 7503]
Nathan Walp <nwalp@pidgin.im>
parents: 6945
diff changeset
1480 recompute = TRUE;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1481 ((GaimContact*)cnode)->currentsize++;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1482 if(((GaimContact*)cnode)->currentsize == 1)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1483 ((GaimGroup*)gnode)->currentsize++;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1484 ops->update(gaimbuddylist, bnode);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1485 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1486 }
6956
a084d95d59dc [gaim-migrate @ 7503]
Nathan Walp <nwalp@pidgin.im>
parents: 6945
diff changeset
1487 if(recompute) {
a084d95d59dc [gaim-migrate @ 7503]
Nathan Walp <nwalp@pidgin.im>
parents: 6945
diff changeset
1488 gaim_contact_compute_priority_buddy((GaimContact*)cnode);
a084d95d59dc [gaim-migrate @ 7503]
Nathan Walp <nwalp@pidgin.im>
parents: 6945
diff changeset
1489 ops->update(gaimbuddylist, cnode);
a084d95d59dc [gaim-migrate @ 7503]
Nathan Walp <nwalp@pidgin.im>
parents: 6945
diff changeset
1490 }
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1491 } else if(GAIM_BLIST_NODE_IS_CHAT(cnode) &&
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7117
diff changeset
1492 ((GaimChat*)cnode)->account == account) {
6901
5ace3b44cf61 [gaim-migrate @ 7448]
Nathan Walp <nwalp@pidgin.im>
parents: 6886
diff changeset
1493 ((GaimGroup *)gnode)->online++;
5ace3b44cf61 [gaim-migrate @ 7448]
Nathan Walp <nwalp@pidgin.im>
parents: 6886
diff changeset
1494 ((GaimGroup *)gnode)->currentsize++;
5ace3b44cf61 [gaim-migrate @ 7448]
Nathan Walp <nwalp@pidgin.im>
parents: 6886
diff changeset
1495 ops->update(gaimbuddylist, cnode);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1496 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1497 }
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1498 ops->update(gaimbuddylist, gnode);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1499 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1500 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1501
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
1502 void gaim_blist_remove_account(GaimAccount *account)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1503 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
1504 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1505 GaimBlistNode *gnode, *cnode, *bnode;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1506
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1507 if (!gaimbuddylist)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1508 return;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1509
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1510 for(gnode = gaimbuddylist->root; gnode; gnode = gnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1511 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1512 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1513 for(cnode = gnode->child; cnode; cnode = cnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1514 if(GAIM_BLIST_NODE_IS_CONTACT(cnode)) {
6957
166e42b26654 [gaim-migrate @ 7504]
Nathan Walp <nwalp@pidgin.im>
parents: 6956
diff changeset
1515 gboolean recompute = FALSE;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1516 for(bnode = cnode->child; bnode; bnode = bnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1517 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1518 continue;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1519 if(account == ((GaimBuddy *)bnode)->account) {
6957
166e42b26654 [gaim-migrate @ 7504]
Nathan Walp <nwalp@pidgin.im>
parents: 6956
diff changeset
1520 recompute = TRUE;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1521 if(((GaimBuddy*)bnode)->present == GAIM_BUDDY_ONLINE ||
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1522 ((GaimBuddy*)bnode)->present == GAIM_BUDDY_SIGNING_ON) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1523 ((GaimContact*)cnode)->online--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1524 if(((GaimContact*)cnode)->online == 0)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1525 ((GaimGroup*)gnode)->online--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1526 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1527 ((GaimContact*)cnode)->currentsize--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1528 if(((GaimContact*)cnode)->currentsize == 0)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1529 ((GaimGroup*)gnode)->currentsize--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1530
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1531 ((GaimBuddy*)bnode)->present = GAIM_BUDDY_OFFLINE;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1532
6803
fb0ff4414e46 [gaim-migrate @ 7343]
Nathan Walp <nwalp@pidgin.im>
parents: 6794
diff changeset
1533 ((GaimBuddy*)bnode)->uc = 0;
fb0ff4414e46 [gaim-migrate @ 7343]
Nathan Walp <nwalp@pidgin.im>
parents: 6794
diff changeset
1534 ((GaimBuddy*)bnode)->idle = 0;
fb0ff4414e46 [gaim-migrate @ 7343]
Nathan Walp <nwalp@pidgin.im>
parents: 6794
diff changeset
1535 ((GaimBuddy*)bnode)->evil = 0;
fb0ff4414e46 [gaim-migrate @ 7343]
Nathan Walp <nwalp@pidgin.im>
parents: 6794
diff changeset
1536
6945
ed14dda65d8e [gaim-migrate @ 7492]
Nathan Walp <nwalp@pidgin.im>
parents: 6901
diff changeset
1537
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1538 if(ops)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1539 ops->remove(gaimbuddylist, bnode);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1540 }
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1541 }
6983
7db9b3020345 [gaim-migrate @ 7539]
Nathan Walp <nwalp@pidgin.im>
parents: 6975
diff changeset
1542 if(recompute) {
6959
7e18efe2944a [gaim-migrate @ 7506]
Nathan Walp <nwalp@pidgin.im>
parents: 6957
diff changeset
1543 gaim_contact_compute_priority_buddy((GaimContact*)cnode);
6983
7db9b3020345 [gaim-migrate @ 7539]
Nathan Walp <nwalp@pidgin.im>
parents: 6975
diff changeset
1544 if(ops)
7db9b3020345 [gaim-migrate @ 7539]
Nathan Walp <nwalp@pidgin.im>
parents: 6975
diff changeset
1545 ops->update(gaimbuddylist, cnode);
7db9b3020345 [gaim-migrate @ 7539]
Nathan Walp <nwalp@pidgin.im>
parents: 6975
diff changeset
1546 }
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1547 } else if(GAIM_BLIST_NODE_IS_CHAT(cnode) &&
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7117
diff changeset
1548 ((GaimChat*)cnode)->account == account) {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1549 ((GaimGroup*)gnode)->currentsize--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1550 ((GaimGroup*)gnode)->online--;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1551 if(ops)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1552 ops->remove(gaimbuddylist, cnode);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1553 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1554 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1555 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1556 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1557
7117
943085b0ff8b [gaim-migrate @ 7684]
Christian Hammond <chipx86@chipx86.com>
parents: 7115
diff changeset
1558 void gaim_blist_parse_toc_buddy_list(GaimAccount *account, char *config)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1559 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1560 char *c;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1561 char current[256];
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1562 GList *bud = NULL;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1563
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1564
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1565 if (config != NULL) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1566
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1567 /* skip "CONFIG:" (if it exists) */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1568 c = strncmp(config + 6 /* sizeof(struct sflap_hdr) */ , "CONFIG:", strlen("CONFIG:")) ?
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1569 strtok(config, "\n") :
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1570 strtok(config + 6 /* sizeof(struct sflap_hdr) */ + strlen("CONFIG:"), "\n");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1571 do {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1572 if (c == NULL)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1573 break;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1574 if (*c == 'g') {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1575 char *utf8 = NULL;
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1576 utf8 = gaim_utf8_try_convert(c + 2);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1577 if (utf8 == NULL) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1578 g_strlcpy(current, _("Invalid Groupname"), sizeof(current));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1579 } else {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1580 g_strlcpy(current, utf8, sizeof(current));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1581 g_free(utf8);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1582 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1583 if (!gaim_find_group(current)) {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1584 GaimGroup *g = gaim_group_new(current);
5634
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
1585 gaim_blist_add_group(g,
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
1586 gaim_blist_get_last_sibling(gaimbuddylist->root));
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1587 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1588 } else if (*c == 'b') { /*&& !gaim_find_buddy(user, c + 2)) {*/
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1589 char nm[80], sw[388], *a, *utf8 = NULL;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1590
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1591 if ((a = strchr(c + 2, ':')) != NULL) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1592 *a++ = '\0'; /* nul the : */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1593 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1594
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1595 g_strlcpy(nm, c + 2, sizeof(nm));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1596 if (a) {
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
1597 utf8 = gaim_utf8_try_convert(a);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1598 if (utf8 == NULL) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1599 gaim_debug(GAIM_DEBUG_ERROR, "toc blist",
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1600 "Failed to convert alias for "
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1601 "'%s' to UTF-8\n", nm);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1602 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1603 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1604 if (utf8 == NULL) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1605 sw[0] = '\0';
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1606 } else {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1607 /* This can leave a partial sequence at the end,
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1608 * but who cares? */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1609 g_strlcpy(sw, utf8, sizeof(sw));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1610 g_free(utf8);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1611 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1612
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1613 if (!gaim_find_buddy(account, nm)) {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1614 GaimBuddy *b = gaim_buddy_new(account, nm, sw);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1615 GaimGroup *g = gaim_find_group(current);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1616 gaim_blist_add_buddy(b, NULL, g,
5634
5946be17f9ec [gaim-migrate @ 6041]
Nathan Walp <nwalp@pidgin.im>
parents: 5580
diff changeset
1617 gaim_blist_get_last_child((GaimBlistNode*)g));
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1618 bud = g_list_append(bud, g_strdup(nm));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1619 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1620 } else if (*c == 'p') {
6378
01289157fc37 [gaim-migrate @ 6883]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
1621 gaim_privacy_permit_add(account, c + 2, TRUE);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1622 } else if (*c == 'd') {
6378
01289157fc37 [gaim-migrate @ 6883]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
1623 gaim_privacy_deny_add(account, c + 2, TRUE);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1624 } else if (!strncmp("toc", c, 3)) {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
1625 sscanf(c + strlen(c) - 1, "%d", &account->perm_deny);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1626 gaim_debug(GAIM_DEBUG_MISC, "toc blist",
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
1627 "permdeny: %d\n", account->perm_deny);
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
1628 if (account->perm_deny == 0)
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8135
diff changeset
1629 account->perm_deny = GAIM_PRIVACY_ALLOW_ALL;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1630 } else if (*c == 'm') {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
1631 sscanf(c + 2, "%d", &account->perm_deny);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1632 gaim_debug(GAIM_DEBUG_MISC, "toc blist",
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
1633 "permdeny: %d\n", account->perm_deny);
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
1634 if (account->perm_deny == 0)
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8135
diff changeset
1635 account->perm_deny = GAIM_PRIVACY_ALLOW_ALL;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1636 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1637 } while ((c = strtok(NULL, "\n")));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1638
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1639 if(account->gc) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1640 if(bud) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1641 GList *node = bud;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1642 serv_add_buddies(account->gc, bud);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1643 while(node) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1644 g_free(node->data);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1645 node = node->next;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1646 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1647 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1648 serv_set_permit_deny(account->gc);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1649 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1650 g_list_free(bud);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1651 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1652 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1653
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1654 #if 0
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1655 /* translate an AIM 3 buddylist (*.lst) to a Gaim buddylist */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1656 static GString *translate_lst(FILE *src_fp)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1657 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1658 char line[BUF_LEN], *line2;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1659 char *name;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1660 int i;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1661
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1662 GString *dest = g_string_new("m 1\n");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1663
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1664 while (fgets(line, BUF_LEN, src_fp)) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1665 line2 = g_strchug(line);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1666 if (strstr(line2, "group") == line2) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1667 name = strpbrk(line2, " \t\n\r\f") + 1;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1668 dest = g_string_append(dest, "g ");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1669 for (i = 0; i < strcspn(name, "\n\r"); i++)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1670 if (name[i] != '\"')
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1671 dest = g_string_append_c(dest, name[i]);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1672 dest = g_string_append_c(dest, '\n');
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1673 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1674 if (strstr(line2, "buddy") == line2) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1675 name = strpbrk(line2, " \t\n\r\f") + 1;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1676 dest = g_string_append(dest, "b ");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1677 for (i = 0; i < strcspn(name, "\n\r"); i++)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1678 if (name[i] != '\"')
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1679 dest = g_string_append_c(dest, name[i]);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1680 dest = g_string_append_c(dest, '\n');
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1681 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1682 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1683
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1684 return dest;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1685 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1686
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1687
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1688 /* translate an AIM 4 buddylist (*.blt) to Gaim format */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1689 static GString *translate_blt(FILE *src_fp)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1690 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1691 int i;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1692 char line[BUF_LEN];
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1693 char *buddy;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1694
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1695 GString *dest = g_string_new("m 1\n");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1696
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1697 while (strstr(fgets(line, BUF_LEN, src_fp), "Buddy") == NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1698 while (strstr(fgets(line, BUF_LEN, src_fp), "list") == NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1699
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1700 while (1) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1701 fgets(line, BUF_LEN, src_fp); g_strchomp(line);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1702 if (strchr(line, '}') != NULL)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1703 break;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1704
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1705 if (strchr(line, '{') != NULL) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1706 /* Syntax starting with "<group> {" */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1707
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1708 dest = g_string_append(dest, "g ");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1709 buddy = g_strchug(strtok(line, "{"));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1710 for (i = 0; i < strlen(buddy); i++)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1711 if (buddy[i] != '\"')
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1712 dest = g_string_append_c(dest, buddy[i]);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1713 dest = g_string_append_c(dest, '\n');
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1714 while (strchr(fgets(line, BUF_LEN, src_fp), '}') == NULL) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1715 gboolean pounce = FALSE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1716 char *e;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1717 g_strchomp(line);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1718 buddy = g_strchug(line);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1719 gaim_debug(GAIM_DEBUG_MISC, "AIM 4 blt import",
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1720 "buddy: \"%s\"\n", buddy);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1721 dest = g_string_append(dest, "b ");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1722 if (strchr(buddy, '{') != NULL) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1723 /* buddy pounce, etc */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1724 char *pos = strchr(buddy, '{') - 1;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1725 *pos = 0;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1726 pounce = TRUE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1727 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1728 if ((e = strchr(buddy, '\"')) != NULL) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1729 *e = '\0';
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1730 buddy++;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1731 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1732 dest = g_string_append(dest, buddy);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1733 dest = g_string_append_c(dest, '\n');
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1734 if (pounce)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1735 do
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1736 fgets(line, BUF_LEN, src_fp);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1737 while (!strchr(line, '}'));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1738 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1739 } else {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1740
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1741 /* Syntax "group buddy buddy ..." */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1742 buddy = g_strchug(strtok(line, " \n"));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1743 dest = g_string_append(dest, "g ");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1744 if (strchr(buddy, '\"') != NULL) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1745 dest = g_string_append(dest, &buddy[1]);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1746 dest = g_string_append_c(dest, ' ');
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1747 buddy = g_strchug(strtok(NULL, " \n"));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1748 while (strchr(buddy, '\"') == NULL) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1749 dest = g_string_append(dest, buddy);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1750 dest = g_string_append_c(dest, ' ');
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1751 buddy = g_strchug(strtok(NULL, " \n"));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1752 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1753 buddy[strlen(buddy) - 1] = '\0';
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1754 dest = g_string_append(dest, buddy);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1755 } else {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1756 dest = g_string_append(dest, buddy);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1757 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1758 dest = g_string_append_c(dest, '\n');
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1759 while ((buddy = g_strchug(strtok(NULL, " \n"))) != NULL) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1760 dest = g_string_append(dest, "b ");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1761 if (strchr(buddy, '\"') != NULL) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1762 dest = g_string_append(dest, &buddy[1]);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1763 dest = g_string_append_c(dest, ' ');
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1764 buddy = g_strchug(strtok(NULL, " \n"));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1765 while (strchr(buddy, '\"') == NULL) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1766 dest = g_string_append(dest, buddy);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1767 dest = g_string_append_c(dest, ' ');
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1768 buddy = g_strchug(strtok(NULL, " \n"));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1769 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1770 buddy[strlen(buddy) - 1] = '\0';
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1771 dest = g_string_append(dest, buddy);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1772 } else {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1773 dest = g_string_append(dest, buddy);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1774 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1775 dest = g_string_append_c(dest, '\n');
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1776 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1777 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1778 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1779
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1780 return dest;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1781 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1782
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1783 static GString *translate_gnomeicu(FILE *src_fp)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1784 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1785 char line[BUF_LEN];
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1786 GString *dest = g_string_new("m 1\ng Buddies\n");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1787
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1788 while (strstr(fgets(line, BUF_LEN, src_fp), "NewContacts") == NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1789
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1790 while (fgets(line, BUF_LEN, src_fp)) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1791 char *eq;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1792 g_strchomp(line);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1793 if (line[0] == '\n' || line[0] == '[')
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1794 break;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1795 eq = strchr(line, '=');
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1796 if (!eq)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1797 break;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1798 *eq = ':';
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1799 eq = strchr(eq, ',');
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1800 if (eq)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1801 *eq = '\0';
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1802 dest = g_string_append(dest, "b ");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1803 dest = g_string_append(dest, line);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1804 dest = g_string_append_c(dest, '\n');
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1805 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1806
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1807 return dest;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1808 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1809 #endif
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1810
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1811 static gchar *get_screenname_filename(const char *name)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1812 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1813 gchar **split;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1814 gchar *good;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1815 gchar *ret;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1816
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1817 split = g_strsplit(name, G_DIR_SEPARATOR_S, -1);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1818 good = g_strjoinv(NULL, split);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1819 g_strfreev(split);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1820
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1821 ret = g_utf8_strup(good, -1);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1822
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1823 g_free(good);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1824
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1825 return ret;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1826 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1827
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1828 static gboolean gaim_blist_read(const char *filename);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1829
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1830
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
1831 static void do_import(GaimAccount *account, const char *filename)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1832 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1833 GString *buf = NULL;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1834 char first[64];
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1835 char path[PATHSIZE];
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1836 int len;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1837 FILE *f;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1838 struct stat st;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1839
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1840 if (filename) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1841 g_snprintf(path, sizeof(path), "%s", filename);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1842 } else {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1843 char *g_screenname = get_screenname_filename(account->username);
5943
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5906
diff changeset
1844 const char *username;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1845 char *file = gaim_user_dir();
5943
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5906
diff changeset
1846 GaimProtocol prpl_num;
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5906
diff changeset
1847 int protocol;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1848
5943
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5906
diff changeset
1849 prpl_num = gaim_account_get_protocol(account);
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5906
diff changeset
1850
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5906
diff changeset
1851 protocol = prpl_num;
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5906
diff changeset
1852
6450
e7b87c8e8c0a [gaim-migrate @ 6959]
Christian Hammond <chipx86@chipx86.com>
parents: 6392
diff changeset
1853 /* TODO Somehow move this checking into prpls */
5943
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5906
diff changeset
1854 if (prpl_num == GAIM_PROTO_OSCAR) {
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5906
diff changeset
1855 if ((username = gaim_account_get_username(account)) != NULL) {
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5906
diff changeset
1856 protocol = (isalpha(*username)
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5906
diff changeset
1857 ? GAIM_PROTO_TOC : GAIM_PROTO_ICQ);
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5906
diff changeset
1858 }
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5906
diff changeset
1859 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1860
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1861 if (file != (char *)NULL) {
5435
a2f26666de42 [gaim-migrate @ 5817]
Mark Doliner <mark@kingant.net>
parents: 5394
diff changeset
1862 snprintf(path, PATHSIZE, "%s" G_DIR_SEPARATOR_S "%s.%d.blist", file, g_screenname, protocol);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1863 g_free(g_screenname);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1864 } else {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1865 g_free(g_screenname);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1866 return;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1867 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1868 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1869
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1870 if (stat(path, &st)) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1871 gaim_debug(GAIM_DEBUG_ERROR, "blist import", "Unable to stat %s.\n",
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1872 path);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1873 return;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1874 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1875
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1876 if (!(f = fopen(path, "r"))) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1877 gaim_debug(GAIM_DEBUG_ERROR, "blist import", "Unable to open %s.\n",
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1878 path);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1879 return;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1880 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1881
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1882 fgets(first, 64, f);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1883
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1884 if ((first[0] == '\n') || (first[0] == '\r' && first[1] == '\n'))
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1885 fgets(first, 64, f);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1886
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1887 #if 0
8430
87bd4d4ff499 [gaim-migrate @ 9160]
Mark Doliner <mark@kingant.net>
parents: 8341
diff changeset
1888 if (!g_ascii_strncasecmp(first, "<xml", strlen("<xml"))) {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1889 /* new gaim XML buddy list */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1890 gaim_blist_read(path);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1891
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1892 /* We really don't need to bother doing stuf like translating AIM 3 buddy lists anymore */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1893
8430
87bd4d4ff499 [gaim-migrate @ 9160]
Mark Doliner <mark@kingant.net>
parents: 8341
diff changeset
1894 } else if (!g_ascii_strncasecmp(first, "Config {", strlen("Config {"))) {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1895 /* AIM 4 buddy list */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1896 gaim_debug(GAIM_DEBUG_MISC, "blist import", "aim 4\n");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1897 rewind(f);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1898 buf = translate_blt(f);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1899 } else if (strstr(first, "group") != NULL) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1900 /* AIM 3 buddy list */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1901 gaim_debug(GAIM_DEBUG_MISC, "blist import", "aim 3\n");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1902 rewind(f);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1903 buf = translate_lst(f);
8430
87bd4d4ff499 [gaim-migrate @ 9160]
Mark Doliner <mark@kingant.net>
parents: 8341
diff changeset
1904 } else if (!g_ascii_strncasecmp(first, "[User]", strlen("[User]"))) {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1905 /* GnomeICU (hopefully) */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1906 gaim_debug(GAIM_DEBUG_MISC, "blist import", "gnomeicu\n");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1907 rewind(f);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1908 buf = translate_gnomeicu(f);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1909
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1910 } else
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1911 #endif
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1912 if (first[0] == 'm') {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1913 /* Gaim buddy list - no translation */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1914 char buf2[BUF_LONG * 2];
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1915 buf = g_string_new("");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1916 rewind(f);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1917 while (1) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1918 len = fread(buf2, 1, BUF_LONG * 2 - 1, f);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1919 if (len <= 0)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1920 break;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1921 buf2[len] = '\0';
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1922 buf = g_string_append(buf, buf2);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1923 if (len != BUF_LONG * 2 - 1)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1924 break;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1925 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1926 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1927
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1928 fclose(f);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1929
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1930 if (buf) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1931 buf = g_string_prepend(buf, "toc_set_config {");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1932 buf = g_string_append(buf, "}\n");
7117
943085b0ff8b [gaim-migrate @ 7684]
Christian Hammond <chipx86@chipx86.com>
parents: 7115
diff changeset
1933 gaim_blist_parse_toc_buddy_list(account, buf->str);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1934 g_string_free(buf, TRUE);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1935 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1936 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1937
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1938 gboolean gaim_group_on_account(GaimGroup *g, GaimAccount *account) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1939 GaimBlistNode *cnode, *bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1940 for(cnode = ((GaimBlistNode *)g)->child; cnode; cnode = cnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1941 if(GAIM_BLIST_NODE_IS_CONTACT(cnode)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1942 for(bnode = cnode->child; bnode; bnode = bnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1943 if(GAIM_BLIST_NODE_IS_BUDDY(bnode)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1944 GaimBuddy *buddy = (GaimBuddy *)bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1945 if((!account && gaim_account_is_connected(buddy->account))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1946 || buddy->account == account)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1947 return TRUE;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1948 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1949 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1950 } else if(GAIM_BLIST_NODE_IS_CHAT(cnode)) {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7117
diff changeset
1951 GaimChat *chat = (GaimChat *)cnode;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1952 if((!account && gaim_account_is_connected(chat->account))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1953 || chat->account == account)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1954 return TRUE;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1955 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1956 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1957 return FALSE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1958 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1959
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1960 static gboolean blist_safe_to_write = FALSE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1961
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1962 static void parse_setting(GaimBlistNode *node, xmlnode *setting)
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1963 {
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1964 const char *name = xmlnode_get_attrib(setting, "name");
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
1965 const char *type = xmlnode_get_attrib(setting, "type");
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1966 char *value = xmlnode_get_data(setting);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1967
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
1968 if(!value)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
1969 return;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
1970
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
1971 if(!type || !strcmp(type, "string"))
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
1972 gaim_blist_node_set_string(node, name, value);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
1973 else if(!strcmp(type, "bool"))
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
1974 gaim_blist_node_set_bool(node, name, atoi(value));
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
1975 else if(!strcmp(type, "int"))
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
1976 gaim_blist_node_set_int(node, name, atoi(value));
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1977
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1978 g_free(value);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1979 }
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1980
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1981 static void parse_buddy(GaimGroup *group, GaimContact *contact, xmlnode *bnode)
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1982 {
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1983 GaimAccount *account;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1984 GaimBuddy *buddy;
7727
72c0d2c66f45 [gaim-migrate @ 8372]
Luke Schierer <lschiere@pidgin.im>
parents: 7726
diff changeset
1985 char *name = NULL, *alias = NULL;
7153
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
1986 const char *acct_name, *proto, *protocol;
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1987 xmlnode *x;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1988
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1989 acct_name = xmlnode_get_attrib(bnode, "account");
7153
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
1990 protocol = xmlnode_get_attrib(bnode, "protocol");
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
1991 proto = xmlnode_get_attrib(bnode, "proto");
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
1992
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
1993 if(!acct_name || (!proto && !protocol))
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1994 return;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1995
7153
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
1996 account = gaim_accounts_find(acct_name, proto ? proto : protocol);
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1997
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1998 if(!account)
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
1999 return;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2000
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2001 if((x = xmlnode_get_child(bnode, "name")))
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2002 name = xmlnode_get_data(x);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2003
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2004 if(!name)
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2005 return;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2006
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2007 if((x = xmlnode_get_child(bnode, "alias")))
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2008 alias = xmlnode_get_data(x);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2009
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2010 buddy = gaim_buddy_new(account, name, alias);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2011 gaim_blist_add_buddy(buddy, contact, group,
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2012 gaim_blist_get_last_child((GaimBlistNode*)contact));
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2013
8135
8f4ce853e685 [gaim-migrate @ 8840]
Nathan Walp <nwalp@pidgin.im>
parents: 8129
diff changeset
2014 for(x = xmlnode_get_child(bnode, "setting"); x; x = xmlnode_get_next_twin(x)) {
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2015 parse_setting((GaimBlistNode*)buddy, x);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2016 }
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2017
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2018 g_free(name);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2019 if(alias)
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2020 g_free(alias);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2021 }
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2022
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2023 static void parse_contact(GaimGroup *group, xmlnode *cnode)
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2024 {
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2025 GaimContact *contact = gaim_contact_new();
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2026 xmlnode *x;
7245
747b9e00ef60 [gaim-migrate @ 7822]
Nathan Walp <nwalp@pidgin.im>
parents: 7162
diff changeset
2027 const char *alias;
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2028
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2029 gaim_blist_add_contact(contact, group,
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2030 gaim_blist_get_last_child((GaimBlistNode*)group));
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2031
7245
747b9e00ef60 [gaim-migrate @ 7822]
Nathan Walp <nwalp@pidgin.im>
parents: 7162
diff changeset
2032 if((alias = xmlnode_get_attrib(cnode, "alias"))) {
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2033 gaim_contact_set_alias(contact, alias);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2034 }
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2035
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2036 for(x = cnode->child; x; x = x->next) {
8135
8f4ce853e685 [gaim-migrate @ 8840]
Nathan Walp <nwalp@pidgin.im>
parents: 8129
diff changeset
2037 if(x->type != XMLNODE_TYPE_TAG)
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2038 continue;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2039 if(!strcmp(x->name, "buddy"))
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2040 parse_buddy(group, contact, x);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2041 else if(strcmp(x->name, "setting"))
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2042 parse_setting((GaimBlistNode*)contact, x);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2043 }
7825
d2710b3dcc5c [gaim-migrate @ 8477]
Nathan Walp <nwalp@pidgin.im>
parents: 7727
diff changeset
2044
d2710b3dcc5c [gaim-migrate @ 8477]
Nathan Walp <nwalp@pidgin.im>
parents: 7727
diff changeset
2045 /* if the contact is empty, don't keep it around. it causes problems */
d2710b3dcc5c [gaim-migrate @ 8477]
Nathan Walp <nwalp@pidgin.im>
parents: 7727
diff changeset
2046 if(!((GaimBlistNode*)contact)->child)
d2710b3dcc5c [gaim-migrate @ 8477]
Nathan Walp <nwalp@pidgin.im>
parents: 7727
diff changeset
2047 gaim_blist_remove_contact(contact);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2048 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2049
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2050 static void parse_chat(GaimGroup *group, xmlnode *cnode)
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2051 {
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2052 GaimChat *chat;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2053 GaimAccount *account;
7153
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2054 const char *acct_name, *proto, *protocol;
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2055 xmlnode *x;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2056 char *alias = NULL;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2057 GHashTable *components;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2058
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2059 acct_name = xmlnode_get_attrib(cnode, "account");
7153
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2060 protocol = xmlnode_get_attrib(cnode, "protocol");
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2061 proto = xmlnode_get_attrib(cnode, "proto");
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2062
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2063 if(!acct_name || (!proto && !protocol))
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2064 return;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2065
7153
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2066 account = gaim_accounts_find(acct_name, proto ? proto : protocol);
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2067
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2068 if(!account)
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2069 return;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2070
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2071 if((x = xmlnode_get_child(cnode, "alias")))
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2072 alias = xmlnode_get_data(x);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2073
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2074 components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2075
8135
8f4ce853e685 [gaim-migrate @ 8840]
Nathan Walp <nwalp@pidgin.im>
parents: 8129
diff changeset
2076 for(x = xmlnode_get_child(cnode, "component"); x; x = xmlnode_get_next_twin(x)) {
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2077 const char *name;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2078 char *value;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2079
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2080 name = xmlnode_get_attrib(x, "name");
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2081 value = xmlnode_get_data(x);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2082 g_hash_table_replace(components, g_strdup(name), value);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2083 }
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2084
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2085 chat = gaim_chat_new(account, alias, components);
7151
a583416b6d6d [gaim-migrate @ 7718]
Nathan Walp <nwalp@pidgin.im>
parents: 7133
diff changeset
2086 gaim_blist_add_chat(chat, group,
a583416b6d6d [gaim-migrate @ 7718]
Nathan Walp <nwalp@pidgin.im>
parents: 7133
diff changeset
2087 gaim_blist_get_last_child((GaimBlistNode*)group));
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2088
8135
8f4ce853e685 [gaim-migrate @ 8840]
Nathan Walp <nwalp@pidgin.im>
parents: 8129
diff changeset
2089 for(x = xmlnode_get_child(cnode, "setting"); x; x = xmlnode_get_next_twin(x)) {
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2090 parse_setting((GaimBlistNode*)chat, x);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2091 }
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2092
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2093 if(alias)
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2094 g_free(alias);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2095 }
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2096
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2097
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2098 static void parse_group(xmlnode *groupnode)
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2099 {
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2100 const char *name = xmlnode_get_attrib(groupnode, "name");
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2101 GaimGroup *group;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2102 xmlnode *cnode;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2103
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2104 if(!name)
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2105 name = _("Buddies");
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2106
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2107 group = gaim_group_new(name);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2108 gaim_blist_add_group(group,
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2109 gaim_blist_get_last_sibling(gaimbuddylist->root));
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2110
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2111 for(cnode = groupnode->child; cnode; cnode = cnode->next) {
8135
8f4ce853e685 [gaim-migrate @ 8840]
Nathan Walp <nwalp@pidgin.im>
parents: 8129
diff changeset
2112 if(cnode->type != XMLNODE_TYPE_TAG)
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2113 continue;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2114 if(!strcmp(cnode->name, "setting"))
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2115 parse_setting((GaimBlistNode*)group, cnode);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2116 else if(!strcmp(cnode->name, "contact") ||
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2117 !strcmp(cnode->name, "person"))
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2118 parse_contact(group, cnode);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2119 else if(!strcmp(cnode->name, "chat"))
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2120 parse_chat(group, cnode);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2121 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2122 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2123
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2124 static gboolean gaim_blist_read(const char *filename) {
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2125 GError *error;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2126 gchar *contents = NULL;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2127 gsize length;
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2128 xmlnode *gaim, *blist, *privacy;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2129
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2130 gaim_debug(GAIM_DEBUG_INFO, "blist import",
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2131 "Reading %s\n", filename);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2132 if(!g_file_get_contents(filename, &contents, &length, &error)) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2133 gaim_debug(GAIM_DEBUG_ERROR, "blist import",
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2134 "Error reading blist: %s\n", error->message);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2135 g_error_free(error);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2136 return FALSE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2137 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2138
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2139 gaim = xmlnode_from_str(contents, length);
8826
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2140
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2141 if(!gaim) {
8826
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2142 FILE *backup;
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2143 char *name;
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2144 gaim_debug(GAIM_DEBUG_ERROR, "blist import", "Error parsing %s\n",
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2145 filename);
8826
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2146 name = g_build_filename(gaim_user_dir(), "blist.xml~", NULL);
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2147
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2148 if((backup = fopen(name, "w"))) {
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2149 fwrite(contents, length, 1, backup);
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2150 fclose(backup);
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2151 chmod(name, S_IRUSR | S_IWUSR);
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2152 } else {
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2153 gaim_debug(GAIM_DEBUG_ERROR, "blist load", "Unable to write backup %s\n",
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2154 name);
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2155 }
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2156 g_free(name);
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2157 g_free(contents);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2158 return FALSE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2159 }
8826
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2160
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2161 g_free(contents);
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2162
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2163 blist = xmlnode_get_child(gaim, "blist");
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2164 if(blist) {
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2165 xmlnode *groupnode;
8135
8f4ce853e685 [gaim-migrate @ 8840]
Nathan Walp <nwalp@pidgin.im>
parents: 8129
diff changeset
2166 for(groupnode = xmlnode_get_child(blist, "group"); groupnode;
8f4ce853e685 [gaim-migrate @ 8840]
Nathan Walp <nwalp@pidgin.im>
parents: 8129
diff changeset
2167 groupnode = xmlnode_get_next_twin(groupnode)) {
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2168 parse_group(groupnode);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2169 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2170 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2171
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2172 privacy = xmlnode_get_child(gaim, "privacy");
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2173 if(privacy) {
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2174 xmlnode *anode;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2175 for(anode = privacy->child; anode; anode = anode->next) {
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2176 xmlnode *x;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2177 GaimAccount *account;
7153
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2178 const char *acct_name, *proto, *mode, *protocol;
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2179
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2180 acct_name = xmlnode_get_attrib(anode, "name");
7153
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2181 protocol = xmlnode_get_attrib(anode, "protocol");
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2182 proto = xmlnode_get_attrib(anode, "proto");
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2183 mode = xmlnode_get_attrib(anode, "mode");
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2184
7153
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2185 if(!acct_name || (!proto && !protocol) || !mode)
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2186 continue;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2187
7153
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2188 account = gaim_accounts_find(acct_name, proto ? proto : protocol);
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2189
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2190 if(!account)
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2191 continue;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2192
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2193 account->perm_deny = atoi(mode);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2194
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2195 for(x = anode->child; x; x = x->next) {
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2196 char *name;
8135
8f4ce853e685 [gaim-migrate @ 8840]
Nathan Walp <nwalp@pidgin.im>
parents: 8129
diff changeset
2197 if(x->type != XMLNODE_TYPE_TAG)
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2198 continue;
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2199
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2200 if(!strcmp(x->name, "permit")) {
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2201 name = xmlnode_get_data(x);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2202 gaim_privacy_permit_add(account, name, TRUE);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2203 g_free(name);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2204 } else if(!strcmp(x->name, "block")) {
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2205 name = xmlnode_get_data(x);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2206 gaim_privacy_deny_add(account, name, TRUE);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2207 g_free(name);
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2208 }
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2209 }
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2210 }
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7125
diff changeset
2211 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2212
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2213 gaim_debug(GAIM_DEBUG_INFO, "blist import", "Finished reading %s\n",
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2214 filename);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2215
8200
82627be0f420 [gaim-migrate @ 8923]
Nathan Walp <nwalp@pidgin.im>
parents: 8194
diff changeset
2216 xmlnode_free(gaim);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2217 return TRUE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2218 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2219
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2220 void gaim_blist_load() {
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5563
diff changeset
2221 GList *accts;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2222 char *user_dir = gaim_user_dir();
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2223 char *filename;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2224 char *msg;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2225
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2226 blist_safe_to_write = TRUE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2227
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2228 if(!user_dir)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2229 return;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2230
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2231 filename = g_build_filename(user_dir, "blist.xml", NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2232
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2233 if(g_file_test(filename, G_FILE_TEST_EXISTS)) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2234 if(!gaim_blist_read(filename)) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2235 msg = g_strdup_printf(_("An error was encountered parsing your "
8826
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2236 "buddy list. It has not been loaded, "
c0f5132fd5a3 [gaim-migrate @ 9590]
Sean Egan <seanegan@gmail.com>
parents: 8735
diff changeset
2237 "and the old file has moved to blist.xml~."));
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2238 gaim_notify_error(NULL, NULL, _("Buddy List Error"), msg);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2239 g_free(msg);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2240 }
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5563
diff changeset
2241 } else if(g_list_length(gaim_accounts_get_all())) {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2242 /* read in the old lists, then save to the new format */
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5563
diff changeset
2243 for(accts = gaim_accounts_get_all(); accts; accts = accts->next) {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2244 do_import(accts->data, NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2245 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2246 gaim_blist_save();
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2247 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2248
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2249 g_free(filename);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2250 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2251
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2252 void
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2253 gaim_blist_request_add_buddy(GaimAccount *account, const char *username,
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2254 const char *group, const char *alias)
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2255 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
2256 GaimBlistUiOps *ui_ops;
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2257
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2258 ui_ops = gaim_blist_get_ui_ops();
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2259
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2260 if (ui_ops != NULL && ui_ops->request_add_buddy != NULL)
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2261 ui_ops->request_add_buddy(account, username, group, alias);
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2262 }
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2263
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2264 void
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7849
diff changeset
2265 gaim_blist_request_add_chat(GaimAccount *account, GaimGroup *group, const char *alias)
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2266 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
2267 GaimBlistUiOps *ui_ops;
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2268
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2269 ui_ops = gaim_blist_get_ui_ops();
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2270
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2271 if (ui_ops != NULL && ui_ops->request_add_chat != NULL)
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7849
diff changeset
2272 ui_ops->request_add_chat(account, group, alias);
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2273 }
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2274
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2275 void
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2276 gaim_blist_request_add_group(void)
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2277 {
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
2278 GaimBlistUiOps *ui_ops;
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2279
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2280 ui_ops = gaim_blist_get_ui_ops();
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2281
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2282 if (ui_ops != NULL && ui_ops->request_add_group != NULL)
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2283 ui_ops->request_add_group();
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2284 }
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
2285
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2286 static void blist_print_setting(const char *key,
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2287 struct gaim_blist_node_setting *setting, FILE *file, int indent)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2288 {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2289 char *key_val, *data_val = NULL;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2290 const char *type = NULL;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2291 int i;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2292
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2293 if(!key)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2294 return;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2295
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2296 switch(setting->type) {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2297 case GAIM_BLIST_NODE_SETTING_BOOL:
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2298 type = "bool";
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2299 data_val = g_strdup_printf("%d", setting->value.boolean);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2300 break;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2301 case GAIM_BLIST_NODE_SETTING_INT:
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2302 type = "int";
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2303 data_val = g_strdup_printf("%d", setting->value.integer);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2304 break;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2305 case GAIM_BLIST_NODE_SETTING_STRING:
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2306 if(!setting->value.string)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2307 return;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2308
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2309 type = "string";
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2310 data_val = g_markup_escape_text(setting->value.string, -1);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2311 break;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2312 }
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2313
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2314 /* this can't happen */
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2315 if(!type || !data_val)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2316 return;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2317
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2318 for(i=0; i<indent; i++) fprintf(file, "\t");
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2319
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2320 key_val = g_markup_escape_text(key, -1);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2321 fprintf(file, "<setting name=\"%s\" type=\"%s\">%s</setting>\n", key_val, type,
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2322 data_val);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2323
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2324 g_free(key_val);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2325 g_free(data_val);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2326 }
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2327
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2328 static void blist_print_group_settings(gpointer key, gpointer data,
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2329 gpointer user_data) {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2330 blist_print_setting(key, data, user_data, 3);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2331 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2332
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2333 static void blist_print_buddy_settings(gpointer key, gpointer data,
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2334 gpointer user_data) {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2335 blist_print_setting(key, data, user_data, 5);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2336 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2337
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2338 static void blist_print_cnode_settings(gpointer key, gpointer data,
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2339 gpointer user_data) {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2340 blist_print_setting(key, data, user_data, 4);
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2341 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2342
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2343 static void blist_print_chat_components(gpointer key, gpointer data,
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2344 gpointer user_data) {
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2345 char *key_val;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2346 char *data_val;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2347 FILE *file = user_data;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2348
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2349 if(!key || !data)
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2350 return;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2351
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2352 key_val = g_markup_escape_text(key, -1);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2353 data_val = g_markup_escape_text(data, -1);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2354
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2355 fprintf(file, "\t\t\t\t<component name=\"%s\">%s</component>\n", key_val,
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2356 data_val);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2357 g_free(key_val);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2358 g_free(data_val);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2359 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2360
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2361 static void print_buddy(FILE *file, GaimBuddy *buddy) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2362 char *bud_name = g_markup_escape_text(buddy->name, -1);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2363 char *bud_alias = NULL;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2364 char *acct_name = g_markup_escape_text(buddy->account->username, -1);
7153
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2365 int proto_num = gaim_account_get_protocol(buddy->account);
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2366 if(buddy->alias)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2367 bud_alias= g_markup_escape_text(buddy->alias, -1);
7153
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2368 fprintf(file, "\t\t\t\t<buddy account=\"%s\" proto=\"%s\"", acct_name,
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2369 gaim_account_get_protocol_id(buddy->account));
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2370 if(proto_num != -1)
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2371 fprintf(file, " protocol=\"%d\"", proto_num);
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2372 fprintf(file, ">\n");
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2373
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2374 fprintf(file, "\t\t\t\t\t<name>%s</name>\n", bud_name);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2375 if(bud_alias) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2376 fprintf(file, "\t\t\t\t\t<alias>%s</alias>\n", bud_alias);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2377 }
7726
dcfdbcd223cd [gaim-migrate @ 8371]
Luke Schierer <lschiere@pidgin.im>
parents: 7725
diff changeset
2378 g_hash_table_foreach(buddy->node.settings, blist_print_buddy_settings, file);
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2379 fprintf(file, "\t\t\t\t</buddy>\n");
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2380 g_free(bud_name);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2381 g_free(bud_alias);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2382 g_free(acct_name);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2383 }
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2384
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
2385 static void gaim_blist_write(FILE *file, GaimAccount *exp_acct) {
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5563
diff changeset
2386 GList *accounts;
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5563
diff changeset
2387 GSList *buds;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2388 GaimBlistNode *gnode, *cnode, *bnode;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2389 fprintf(file, "<?xml version='1.0' encoding='UTF-8' ?>\n");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2390 fprintf(file, "<gaim version=\"1\">\n");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2391 fprintf(file, "\t<blist>\n");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2392
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2393 for(gnode = gaimbuddylist->root; gnode; gnode = gnode->next) {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2394 GaimGroup *group;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2395
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2396 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2397 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2398
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2399 group = (GaimGroup *)gnode;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2400 if(!exp_acct || gaim_group_on_account(group, exp_acct)) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2401 char *group_name = g_markup_escape_text(group->name, -1);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2402 fprintf(file, "\t\t<group name=\"%s\">\n", group_name);
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2403 g_hash_table_foreach(group->node.settings,
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2404 blist_print_group_settings, file);
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2405 for(cnode = gnode->child; cnode; cnode = cnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2406 if(GAIM_BLIST_NODE_IS_CONTACT(cnode)) {
6755
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
2407 GaimContact *contact = (GaimContact*)cnode;
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
2408 fprintf(file, "\t\t\t<contact");
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
2409 if(contact->alias) {
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
2410 char *alias = g_markup_escape_text(contact->alias, -1);
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
2411 fprintf(file, " alias=\"%s\"", alias);
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
2412 g_free(alias);
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
2413 }
ea289c6f2382 [gaim-migrate @ 7287]
Nathan Walp <nwalp@pidgin.im>
parents: 6744
diff changeset
2414 fprintf(file, ">\n");
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2415
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2416 for(bnode = cnode->child; bnode; bnode = bnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2417 if(GAIM_BLIST_NODE_IS_BUDDY(bnode)) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2418 GaimBuddy *buddy = (GaimBuddy *)bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2419 if(!exp_acct || buddy->account == exp_acct) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2420 print_buddy(file, buddy);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2421 }
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2422 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2423 }
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2424
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2425 fprintf(file, "\t\t\t</contact>\n");
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2426 } else if(GAIM_BLIST_NODE_IS_CHAT(cnode)) {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7117
diff changeset
2427 GaimChat *chat = (GaimChat *)cnode;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2428 if(!exp_acct || chat->account == exp_acct) {
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2429 char *acct_name = g_markup_escape_text(chat->account->username, -1);
7153
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2430 int proto_num = gaim_account_get_protocol(chat->account);
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2431 fprintf(file, "\t\t\t<chat proto=\"%s\" account=\"%s\"",
7133
28dd20b5f4cf [gaim-migrate @ 7700]
Nathan Walp <nwalp@pidgin.im>
parents: 7132
diff changeset
2432 gaim_account_get_protocol_id(chat->account),
5943
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5906
diff changeset
2433 acct_name);
7153
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2434 if(proto_num != -1)
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2435 fprintf(file, " protocol=\"%d\"", proto_num);
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2436 fprintf(file, ">\n");
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2437
5237
757d680f923d [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
2438 if(chat->alias) {
757d680f923d [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
2439 char *chat_alias = g_markup_escape_text(chat->alias, -1);
757d680f923d [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
2440 fprintf(file, "\t\t\t\t<alias>%s</alias>\n", chat_alias);
757d680f923d [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
2441 g_free(chat_alias);
757d680f923d [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
2442 }
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2443 g_hash_table_foreach(chat->components,
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2444 blist_print_chat_components, file);
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2445 g_hash_table_foreach(chat->node.settings,
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2446 blist_print_cnode_settings, file);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2447 fprintf(file, "\t\t\t</chat>\n");
5237
757d680f923d [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
2448 g_free(acct_name);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2449 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2450 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2451 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2452 fprintf(file, "\t\t</group>\n");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2453 g_free(group_name);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2454 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2455 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2456
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2457 fprintf(file, "\t</blist>\n");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2458 fprintf(file, "\t<privacy>\n");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2459
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5563
diff changeset
2460 for(accounts = gaim_accounts_get_all();
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5563
diff changeset
2461 accounts != NULL;
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5563
diff changeset
2462 accounts = accounts->next) {
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5563
diff changeset
2463
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5545
diff changeset
2464 GaimAccount *account = accounts->data;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2465 char *acct_name = g_markup_escape_text(account->username, -1);
7153
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2466 int proto_num = gaim_account_get_protocol(account);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2467 if(!exp_acct || account == exp_acct) {
7153
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2468 fprintf(file, "\t\t<account proto=\"%s\" name=\"%s\" "
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2469 "mode=\"%d\"", gaim_account_get_protocol_id(account),
5943
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5906
diff changeset
2470 acct_name, account->perm_deny);
7153
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2471 if(proto_num != -1)
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2472 fprintf(file, " protocol=\"%d\"", proto_num);
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2473 fprintf(file, ">\n");
d4bb24ecc6aa [gaim-migrate @ 7720]
Nathan Walp <nwalp@pidgin.im>
parents: 7151
diff changeset
2474
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2475 for(buds = account->permit; buds; buds = buds->next) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2476 char *bud_name = g_markup_escape_text(buds->data, -1);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2477 fprintf(file, "\t\t\t<permit>%s</permit>\n", bud_name);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2478 g_free(bud_name);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2479 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2480 for(buds = account->deny; buds; buds = buds->next) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2481 char *bud_name = g_markup_escape_text(buds->data, -1);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2482 fprintf(file, "\t\t\t<block>%s</block>\n", bud_name);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2483 g_free(bud_name);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2484 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2485 fprintf(file, "\t\t</account>\n");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2486 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2487 g_free(acct_name);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2488 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2489
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2490 fprintf(file, "\t</privacy>\n");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2491 fprintf(file, "</gaim>\n");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2492 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2493
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2494 void gaim_blist_save() {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2495 FILE *file;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2496 char *user_dir = gaim_user_dir();
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2497 char *filename;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2498 char *filename_real;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2499
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2500 if(!user_dir)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2501 return;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2502 if(!blist_safe_to_write) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2503 gaim_debug(GAIM_DEBUG_WARNING, "blist save",
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2504 "AHH!! Tried to write the blist before we read it!\n");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2505 return;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2506 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2507
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2508 file = fopen(user_dir, "r");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2509 if(!file)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2510 mkdir(user_dir, S_IRUSR | S_IWUSR | S_IXUSR);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2511 else
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2512 fclose(file);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2513
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2514 filename = g_build_filename(user_dir, "blist.xml.save", NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2515
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2516 if((file = fopen(filename, "w"))) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2517 gaim_blist_write(file, NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2518 fclose(file);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2519 chmod(filename, S_IRUSR | S_IWUSR);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2520 } else {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2521 gaim_debug(GAIM_DEBUG_ERROR, "blist save", "Unable to write %s\n",
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2522 filename);
8549
1a016d979ce0 [gaim-migrate @ 9291]
Nathan Walp <nwalp@pidgin.im>
parents: 8430
diff changeset
2523 g_free(filename);
1a016d979ce0 [gaim-migrate @ 9291]
Nathan Walp <nwalp@pidgin.im>
parents: 8430
diff changeset
2524 return;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2525 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2526
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2527 filename_real = g_build_filename(user_dir, "blist.xml", NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2528
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2529 if(rename(filename, filename_real) < 0)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2530 gaim_debug(GAIM_DEBUG_ERROR, "blist save",
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2531 "Error renaming %s to %s\n", filename, filename_real);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2532
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2533
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2534 g_free(filename);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2535 g_free(filename_real);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2536 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2537
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2538
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2539 static void gaim_blist_node_setting_free(struct gaim_blist_node_setting *setting)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2540 {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2541 switch(setting->type) {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2542 case GAIM_BLIST_NODE_SETTING_BOOL:
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2543 case GAIM_BLIST_NODE_SETTING_INT:
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2544 break;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2545 case GAIM_BLIST_NODE_SETTING_STRING:
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2546 g_free(setting->value.string);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2547 break;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2548 }
8020
35c2526dba16 [gaim-migrate @ 8700]
Nathan Walp <nwalp@pidgin.im>
parents: 7999
diff changeset
2549 g_free(setting);
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2550 }
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2551
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2552 static void gaim_blist_node_initialize_settings(GaimBlistNode* node)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2553 {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2554 if(node->settings)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2555 return;
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2556
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2557 node->settings = g_hash_table_new_full(g_str_hash, g_str_equal, g_free,
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2558 (GDestroyNotify)gaim_blist_node_setting_free);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2559 }
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2560
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2561 void gaim_blist_node_remove_setting(GaimBlistNode *node, const char *key)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2562 {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2563 g_return_if_fail(node != NULL);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2564 g_return_if_fail(node->settings != NULL);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2565 g_return_if_fail(key != NULL);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2566
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2567 g_hash_table_remove(node->settings, key);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2568 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2569
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2570
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2571 void gaim_blist_node_set_bool(GaimBlistNode* node, const char *key, gboolean value)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2572 {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2573 struct gaim_blist_node_setting *setting;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2574
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2575 g_return_if_fail(node != NULL);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2576 g_return_if_fail(node->settings != NULL);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2577 g_return_if_fail(key != NULL);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2578
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2579 setting = g_new0(struct gaim_blist_node_setting, 1);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2580 setting->type = GAIM_BLIST_NODE_SETTING_BOOL;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2581 setting->value.boolean = value;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2582
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2583 g_hash_table_replace(node->settings, g_strdup(key), setting);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2584 }
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2585
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2586 gboolean gaim_blist_node_get_bool(GaimBlistNode* node, const char *key)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2587 {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2588 struct gaim_blist_node_setting *setting;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2589
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2590 g_return_val_if_fail(node != NULL, FALSE);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2591 g_return_val_if_fail(node->settings != NULL, FALSE);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2592 g_return_val_if_fail(key != NULL, FALSE);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2593
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2594 setting = g_hash_table_lookup(node->settings, key);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2595
7849
2920debcb3c3 [gaim-migrate @ 8503]
Nathan Walp <nwalp@pidgin.im>
parents: 7848
diff changeset
2596 if(!setting)
2920debcb3c3 [gaim-migrate @ 8503]
Nathan Walp <nwalp@pidgin.im>
parents: 7848
diff changeset
2597 return FALSE;
2920debcb3c3 [gaim-migrate @ 8503]
Nathan Walp <nwalp@pidgin.im>
parents: 7848
diff changeset
2598
7848
64d1a90f5a78 [gaim-migrate @ 8502]
Nathan Walp <nwalp@pidgin.im>
parents: 7826
diff changeset
2599 g_return_val_if_fail(setting->type == GAIM_BLIST_NODE_SETTING_BOOL, FALSE);
64d1a90f5a78 [gaim-migrate @ 8502]
Nathan Walp <nwalp@pidgin.im>
parents: 7826
diff changeset
2600
64d1a90f5a78 [gaim-migrate @ 8502]
Nathan Walp <nwalp@pidgin.im>
parents: 7826
diff changeset
2601 return setting->value.boolean;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2602 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2603
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2604 void gaim_blist_node_set_int(GaimBlistNode* node, const char *key, int value)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2605 {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2606 struct gaim_blist_node_setting *setting;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2607
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2608 g_return_if_fail(node != NULL);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2609 g_return_if_fail(node->settings != NULL);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2610 g_return_if_fail(key != NULL);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2611
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2612 setting = g_new0(struct gaim_blist_node_setting, 1);
8071
4dede940939c [gaim-migrate @ 8769]
Luke Schierer <lschiere@pidgin.im>
parents: 8046
diff changeset
2613 setting->type = GAIM_BLIST_NODE_SETTING_INT;
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2614 setting->value.integer = value;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2615
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2616 g_hash_table_replace(node->settings, g_strdup(key), setting);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2617 }
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2618
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2619 int gaim_blist_node_get_int(GaimBlistNode* node, const char *key)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2620 {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2621 struct gaim_blist_node_setting *setting;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2622
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2623 g_return_val_if_fail(node != NULL, 0);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2624 g_return_val_if_fail(node->settings != NULL, 0);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2625 g_return_val_if_fail(key != NULL, 0);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2626
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2627 setting = g_hash_table_lookup(node->settings, key);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2628
7849
2920debcb3c3 [gaim-migrate @ 8503]
Nathan Walp <nwalp@pidgin.im>
parents: 7848
diff changeset
2629 if(!setting)
2920debcb3c3 [gaim-migrate @ 8503]
Nathan Walp <nwalp@pidgin.im>
parents: 7848
diff changeset
2630 return 0;
2920debcb3c3 [gaim-migrate @ 8503]
Nathan Walp <nwalp@pidgin.im>
parents: 7848
diff changeset
2631
7848
64d1a90f5a78 [gaim-migrate @ 8502]
Nathan Walp <nwalp@pidgin.im>
parents: 7826
diff changeset
2632 g_return_val_if_fail(setting->type == GAIM_BLIST_NODE_SETTING_INT, 0);
64d1a90f5a78 [gaim-migrate @ 8502]
Nathan Walp <nwalp@pidgin.im>
parents: 7826
diff changeset
2633
64d1a90f5a78 [gaim-migrate @ 8502]
Nathan Walp <nwalp@pidgin.im>
parents: 7826
diff changeset
2634 return setting->value.integer;
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2635 }
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2636
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2637 void gaim_blist_node_set_string(GaimBlistNode* node, const char *key,
5906
390d32a6b130 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5874
diff changeset
2638 const char *value)
390d32a6b130 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5874
diff changeset
2639 {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2640 struct gaim_blist_node_setting *setting;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2641
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2642 g_return_if_fail(node != NULL);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2643 g_return_if_fail(node->settings != NULL);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2644 g_return_if_fail(key != NULL);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2645
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2646 setting = g_new0(struct gaim_blist_node_setting, 1);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2647 setting->type = GAIM_BLIST_NODE_SETTING_STRING;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2648 setting->value.string = g_strdup(value);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2649
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2650 g_hash_table_replace(node->settings, g_strdup(key), setting);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2651 }
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2652
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2653 const char *gaim_blist_node_get_string(GaimBlistNode* node, const char *key)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2654 {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2655 struct gaim_blist_node_setting *setting;
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2656
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2657 g_return_val_if_fail(node != NULL, NULL);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2658 g_return_val_if_fail(node->settings != NULL, NULL);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2659 g_return_val_if_fail(key != NULL, NULL);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2660
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2661 setting = g_hash_table_lookup(node->settings, key);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2662
7849
2920debcb3c3 [gaim-migrate @ 8503]
Nathan Walp <nwalp@pidgin.im>
parents: 7848
diff changeset
2663 if(!setting)
2920debcb3c3 [gaim-migrate @ 8503]
Nathan Walp <nwalp@pidgin.im>
parents: 7848
diff changeset
2664 return NULL;
2920debcb3c3 [gaim-migrate @ 8503]
Nathan Walp <nwalp@pidgin.im>
parents: 7848
diff changeset
2665
7848
64d1a90f5a78 [gaim-migrate @ 8502]
Nathan Walp <nwalp@pidgin.im>
parents: 7826
diff changeset
2666 g_return_val_if_fail(setting->type == GAIM_BLIST_NODE_SETTING_STRING, NULL);
64d1a90f5a78 [gaim-migrate @ 8502]
Nathan Walp <nwalp@pidgin.im>
parents: 7826
diff changeset
2667
64d1a90f5a78 [gaim-migrate @ 8502]
Nathan Walp <nwalp@pidgin.im>
parents: 7826
diff changeset
2668 return setting->value.string;
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2669 }
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2670
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2671
8735
92cbf9713795 [gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents: 8710
diff changeset
2672 /* XXX: this is compatibility stuff. Remove after.... oh, I dunno... 0.77 or so */
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2673
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2674 void gaim_group_set_setting(GaimGroup *g, const char *key, const char *value)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2675 {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2676 gaim_debug_warning("blist", "gaim_group_set_setting() is deprecated\n");
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2677
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2678 gaim_blist_node_set_string((GaimBlistNode*)g, key, value);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2679 }
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2680
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2681 const char *gaim_group_get_setting(GaimGroup *g, const char *key)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2682 {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2683 gaim_debug_warning("blist", "gaim_group_get_setting() is deprecated\n");
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2684
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2685 return gaim_blist_node_get_string((GaimBlistNode*)g, key);
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2686 }
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2687
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2688 void gaim_chat_set_setting(GaimChat *c, const char *key, const char *value)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2689 {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2690 gaim_debug_warning("blist", "gaim_chat_set_setting() is deprecated\n");
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2691
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2692 gaim_blist_node_set_string((GaimBlistNode*)c, key, value);
5906
390d32a6b130 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5874
diff changeset
2693 }
390d32a6b130 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5874
diff changeset
2694
7125
208cb260d7a7 [gaim-migrate @ 7692]
Nathan Walp <nwalp@pidgin.im>
parents: 7118
diff changeset
2695 const char *gaim_chat_get_setting(GaimChat *c, const char *key)
5906
390d32a6b130 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5874
diff changeset
2696 {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2697 gaim_debug_warning("blist", "gaim_chat_get_setting() is deprecated\n");
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2698
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2699 return gaim_blist_node_get_string((GaimBlistNode*)c, key);
5906
390d32a6b130 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5874
diff changeset
2700 }
390d32a6b130 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5874
diff changeset
2701
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2702 void gaim_buddy_set_setting(GaimBuddy *b, const char *key, const char *value)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2703 {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2704 gaim_debug_warning("blist", "gaim_buddy_set_setting() is deprecated\n");
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2705
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2706 gaim_blist_node_set_string((GaimBlistNode*)b, key, value);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2707 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2708
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2709 const char *gaim_buddy_get_setting(GaimBuddy *b, const char *key)
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2710 {
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2711 gaim_debug_warning("blist", "gaim_buddy_get_setting() is deprecated\n");
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2712
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2713 return gaim_blist_node_get_string((GaimBlistNode*)b, key);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2714 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2715
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2716 /* XXX: end compat crap */
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7671
diff changeset
2717
8710
36b043fe2740 [gaim-migrate @ 9464]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
2718
36b043fe2740 [gaim-migrate @ 9464]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
2719 GList *gaim_buddy_get_extended_menu(GaimBuddy *b) {
36b043fe2740 [gaim-migrate @ 9464]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
2720 GList *menu = NULL;
36b043fe2740 [gaim-migrate @ 9464]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
2721 gaim_signal_emit(gaim_blist_get_handle(), "buddy-extended-menu",
36b043fe2740 [gaim-migrate @ 9464]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
2722 b, &menu);
36b043fe2740 [gaim-migrate @ 9464]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
2723 return menu;
36b043fe2740 [gaim-migrate @ 9464]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
2724 }
36b043fe2740 [gaim-migrate @ 9464]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
2725
8952
e3f4657fa555 [gaim-migrate @ 9724]
Luke Schierer <lschiere@pidgin.im>
parents: 8826
diff changeset
2726 GList *gaim_group_get_extended_menu(GaimGroup *g) {
e3f4657fa555 [gaim-migrate @ 9724]
Luke Schierer <lschiere@pidgin.im>
parents: 8826
diff changeset
2727 GList *menu = NULL;
e3f4657fa555 [gaim-migrate @ 9724]
Luke Schierer <lschiere@pidgin.im>
parents: 8826
diff changeset
2728 gaim_signal_emit(gaim_blist_get_handle(), "group-extended-menu",
e3f4657fa555 [gaim-migrate @ 9724]
Luke Schierer <lschiere@pidgin.im>
parents: 8826
diff changeset
2729 g, &menu);
e3f4657fa555 [gaim-migrate @ 9724]
Luke Schierer <lschiere@pidgin.im>
parents: 8826
diff changeset
2730 return menu;
e3f4657fa555 [gaim-migrate @ 9724]
Luke Schierer <lschiere@pidgin.im>
parents: 8826
diff changeset
2731 }
e3f4657fa555 [gaim-migrate @ 9724]
Luke Schierer <lschiere@pidgin.im>
parents: 8826
diff changeset
2732
8710
36b043fe2740 [gaim-migrate @ 9464]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
2733
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2734 int gaim_blist_get_group_size(GaimGroup *group, gboolean offline) {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2735 if(!group)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2736 return 0;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2737
5277
d7771fe33cbd [gaim-migrate @ 5649]
Luke Schierer <lschiere@pidgin.im>
parents: 5266
diff changeset
2738 return offline ? group->totalsize : group->currentsize;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2739 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2740
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2741 int gaim_blist_get_group_online_count(GaimGroup *group) {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2742 if(!group)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2743 return 0;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2744
5277
d7771fe33cbd [gaim-migrate @ 5649]
Luke Schierer <lschiere@pidgin.im>
parents: 5266
diff changeset
2745 return group->online;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2746 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2747
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7003
diff changeset
2748 void
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
2749 gaim_blist_set_ui_ops(GaimBlistUiOps *ops)
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7003
diff changeset
2750 {
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7003
diff changeset
2751 blist_ui_ops = ops;
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7003
diff changeset
2752 }
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7003
diff changeset
2753
7098
770233dad86c [gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
2754 GaimBlistUiOps *
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7003
diff changeset
2755 gaim_blist_get_ui_ops(void)
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7003
diff changeset
2756 {
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7003
diff changeset
2757 return blist_ui_ops;
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7003
diff changeset
2758 }
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7003
diff changeset
2759
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7003
diff changeset
2760
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2761 void *
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2762 gaim_blist_get_handle(void)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2763 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2764 static int handle;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2765
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2766 return &handle;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2767 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2768
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2769 void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2770 gaim_blist_init(void)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2771 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2772 void *handle = gaim_blist_get_handle();
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2773
6564
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2774 gaim_signal_register(handle, "buddy-away",
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2775 gaim_marshal_VOID__POINTER, NULL, 1,
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2776 gaim_value_new(GAIM_TYPE_SUBTYPE,
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2777 GAIM_SUBTYPE_BLIST_BUDDY));
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2778
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2779 gaim_signal_register(handle, "buddy-back",
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2780 gaim_marshal_VOID__POINTER, NULL, 1,
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2781 gaim_value_new(GAIM_TYPE_SUBTYPE,
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2782 GAIM_SUBTYPE_BLIST_BUDDY));
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2783
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2784 gaim_signal_register(handle, "buddy-idle",
6564
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2785 gaim_marshal_VOID__POINTER, NULL, 1,
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2786 gaim_value_new(GAIM_TYPE_SUBTYPE,
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2787 GAIM_SUBTYPE_BLIST_BUDDY));
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2788 gaim_signal_register(handle, "buddy-unidle",
6564
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2789 gaim_marshal_VOID__POINTER, NULL, 1,
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2790 gaim_value_new(GAIM_TYPE_SUBTYPE,
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2791 GAIM_SUBTYPE_BLIST_BUDDY));
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2792
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2793 gaim_signal_register(handle, "buddy-signed-on",
6564
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2794 gaim_marshal_VOID__POINTER, NULL, 1,
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2795 gaim_value_new(GAIM_TYPE_SUBTYPE,
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2796 GAIM_SUBTYPE_BLIST_BUDDY));
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2797
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2798 gaim_signal_register(handle, "buddy-signed-off",
6564
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2799 gaim_marshal_VOID__POINTER, NULL, 1,
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2800 gaim_value_new(GAIM_TYPE_SUBTYPE,
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2801 GAIM_SUBTYPE_BLIST_BUDDY));
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2802
6564
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6506
diff changeset
2803 gaim_signal_register(handle, "update-idle", gaim_marshal_VOID, NULL, 0);
8710
36b043fe2740 [gaim-migrate @ 9464]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
2804 gaim_signal_register(handle, "buddy-extended-menu",
36b043fe2740 [gaim-migrate @ 9464]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
2805 gaim_marshal_VOID__POINTER_POINTER, NULL, 2,
36b043fe2740 [gaim-migrate @ 9464]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
2806 gaim_value_new(GAIM_TYPE_SUBTYPE,
36b043fe2740 [gaim-migrate @ 9464]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
2807 GAIM_SUBTYPE_BLIST_BUDDY),
36b043fe2740 [gaim-migrate @ 9464]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
2808 gaim_value_new(GAIM_TYPE_BOXED, "GList **"));
8952
e3f4657fa555 [gaim-migrate @ 9724]
Luke Schierer <lschiere@pidgin.im>
parents: 8826
diff changeset
2809 gaim_signal_register(handle, "group-extended-menu",
e3f4657fa555 [gaim-migrate @ 9724]
Luke Schierer <lschiere@pidgin.im>
parents: 8826
diff changeset
2810 gaim_marshal_VOID__POINTER_POINTER, NULL, 2,
e3f4657fa555 [gaim-migrate @ 9724]
Luke Schierer <lschiere@pidgin.im>
parents: 8826
diff changeset
2811 gaim_value_new(GAIM_TYPE_SUBTYPE,
e3f4657fa555 [gaim-migrate @ 9724]
Luke Schierer <lschiere@pidgin.im>
parents: 8826
diff changeset
2812 GAIM_SUBTYPE_BLIST_GROUP),
e3f4657fa555 [gaim-migrate @ 9724]
Luke Schierer <lschiere@pidgin.im>
parents: 8826
diff changeset
2813 gaim_value_new(GAIM_TYPE_BOXED, "GList **"));
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2814 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2815
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2816 void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2817 gaim_blist_uninit(void)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2818 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2819 gaim_signals_unregister_by_instance(gaim_blist_get_handle());
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6473
diff changeset
2820 }