Mercurial > pidgin
comparison src/list.c @ 4695:4bdd9a5fd026
[gaim-migrate @ 5006]
This may very well have issues, but it's a slightly better core/ui split,
removing global variables and fixing some GTK+ runtime errors and a couple
segfaults. It's some progress.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Mon, 10 Mar 2003 18:16:29 +0000 |
parents | e19f91053ad0 |
children | ac7ca2bd6d4f |
comparison
equal
deleted
inserted
replaced
4694:8f523dbb970e | 4695:4bdd9a5fd026 |
---|---|
87 *****************************************************************************/ | 87 *****************************************************************************/ |
88 | 88 |
89 struct gaim_buddy_list *gaim_blist_new() | 89 struct gaim_buddy_list *gaim_blist_new() |
90 { | 90 { |
91 struct gaim_buddy_list *gbl = g_new0(struct gaim_buddy_list, 1); | 91 struct gaim_buddy_list *gbl = g_new0(struct gaim_buddy_list, 1); |
92 gbl->ui_ops = blist_ui_ops; | 92 |
93 gbl->ui_ops = gaim_get_blist_ui_ops(); | |
94 | |
95 if (gbl->ui_ops != NULL && gbl->ui_ops->new_list != NULL) | |
96 gbl->ui_ops->new_list(gbl); | |
97 | |
93 return gbl; | 98 return gbl; |
99 } | |
100 | |
101 void | |
102 gaim_set_blist(struct gaim_buddy_list *list) | |
103 { | |
104 gaimbuddylist = list; | |
105 } | |
106 | |
107 struct gaim_buddy_list * | |
108 gaim_get_blist(void) | |
109 { | |
110 return gaimbuddylist; | |
94 } | 111 } |
95 | 112 |
96 void gaim_blist_show () | 113 void gaim_blist_show () |
97 { | 114 { |
98 struct gaim_blist_ui_ops *ops = gaimbuddylist->ui_ops; | 115 struct gaim_blist_ui_ops *ops = gaimbuddylist->ui_ops; |
171 if (ops) | 188 if (ops) |
172 ops->update(gaimbuddylist, (GaimBlistNode*)group); | 189 ops->update(gaimbuddylist, (GaimBlistNode*)group); |
173 } | 190 } |
174 struct buddy *gaim_buddy_new(struct gaim_account *account, const char *screenname, const char *alias) | 191 struct buddy *gaim_buddy_new(struct gaim_account *account, const char *screenname, const char *alias) |
175 { | 192 { |
176 struct buddy *b = g_new0(struct buddy, 1); | 193 struct buddy *b; |
194 struct gaim_blist_ui_ops *ops; | |
195 | |
196 b = g_new0(struct buddy, 1); | |
177 b->account = account; | 197 b->account = account; |
178 b->name = g_strdup(screenname); | 198 b->name = g_strdup(screenname); |
179 b->alias = g_strdup(alias); | 199 b->alias = g_strdup(alias); |
180 b->settings = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); | 200 b->settings = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); |
181 ((GaimBlistNode*)b)->type = GAIM_BLIST_BUDDY_NODE; | 201 ((GaimBlistNode*)b)->type = GAIM_BLIST_BUDDY_NODE; |
202 | |
203 ops = gaim_get_blist_ui_ops(); | |
204 | |
205 if (ops != NULL && ops->new_node != NULL) | |
206 ops->new_node((GaimBlistNode *)b); | |
182 | 207 |
183 return b; | 208 return b; |
184 } | 209 } |
185 void gaim_blist_add_buddy (struct buddy *buddy, struct group *group, GaimBlistNode *node) | 210 void gaim_blist_add_buddy (struct buddy *buddy, struct group *group, GaimBlistNode *node) |
186 { | 211 { |
222 } | 247 } |
223 | 248 |
224 struct group *gaim_group_new(const char *name) | 249 struct group *gaim_group_new(const char *name) |
225 { | 250 { |
226 struct group *g = gaim_find_group(name); | 251 struct group *g = gaim_find_group(name); |
252 | |
227 if (!g) { | 253 if (!g) { |
254 struct gaim_blist_ui_ops *ops; | |
228 g= g_new0(struct group, 1); | 255 g= g_new0(struct group, 1); |
229 g->name = g_strdup(name); | 256 g->name = g_strdup(name); |
230 ((GaimBlistNode*)g)->type = GAIM_BLIST_GROUP_NODE; | 257 ((GaimBlistNode*)g)->type = GAIM_BLIST_GROUP_NODE; |
258 | |
259 ops = gaim_get_blist_ui_ops(); | |
260 | |
261 if (ops != NULL && ops->new_node != NULL) | |
262 ops->new_node((GaimBlistNode *)g); | |
231 | 263 |
232 } | 264 } |
233 return g; | 265 return g; |
234 } | 266 } |
235 | 267 |
1241 return g_strdup(g_hash_table_lookup(b->settings, key)); | 1273 return g_strdup(g_hash_table_lookup(b->settings, key)); |
1242 } | 1274 } |
1243 | 1275 |
1244 void gaim_set_blist_ui_ops(struct gaim_blist_ui_ops *ops) | 1276 void gaim_set_blist_ui_ops(struct gaim_blist_ui_ops *ops) |
1245 { | 1277 { |
1246 gaimbuddylist->ui_ops = blist_ui_ops = ops; | 1278 blist_ui_ops = ops; |
1247 } | 1279 } |
1280 | |
1281 struct gaim_blist_ui_ops * | |
1282 gaim_get_blist_ui_ops(void) | |
1283 { | |
1284 return blist_ui_ops; | |
1285 } |