comparison src/buddy.c @ 1037:1c663beef29d

[gaim-migrate @ 1047] out of chaos i have established order. i must be god. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Tue, 31 Oct 2000 09:48:42 +0000
parents faa5afc2b89e
children 67ed2ee5be9f
comparison
equal deleted inserted replaced
1036:faa5afc2b89e 1037:1c663beef29d
1251 } 1251 }
1252 1252
1253 return b; 1253 return b;
1254 } 1254 }
1255 1255
1256 static int group_number(char *group) {
1257 GSList *c = connections;
1258 struct gaim_connection *g;
1259 GSList *m;
1260 struct group *p;
1261 int pos = 0;
1262
1263 while (c) {
1264 g = (struct gaim_connection *)c->data;
1265 m = g->groups;
1266 while (m) {
1267 p = (struct group *)m->data;
1268 if (!strcmp(p->name, group))
1269 return pos;
1270 if (find_group_show(p->name))
1271 pos++;
1272 m = m->next;
1273 }
1274 c = c->next;
1275 }
1276 /* um..... we'll never get here */
1277 return -1;
1278 }
1279
1280 static int buddy_number(char *group, char *buddy) {
1281 GSList *c = connections;
1282 struct gaim_connection *g;
1283 struct group *p;
1284 GSList *z;
1285 struct buddy *b;
1286 int pos = 0;
1287 char *tmp1 = g_strdup(normalize(buddy));
1288 struct group_show *gs = find_group_show(group);
1289
1290 while (c) {
1291 g = (struct gaim_connection *)c->data;
1292 p = find_group(g, group);
1293 z = p->members;
1294 while (z) {
1295 b = (struct buddy *)z->data;
1296 if (!strcmp(tmp1, normalize(b->name))) {
1297 g_free(tmp1);
1298 return pos;
1299 }
1300 if (find_buddy_show(gs, b->name))
1301 pos++;
1302 z = z->next;
1303 }
1304 c = c->next;
1305 }
1306 /* we shouldn't ever get here */
1307 debug_printf("got to bad place in buddy_number\n");
1308 g_free(tmp1);
1309 return -1;
1310 }
1311
1256 static struct group_show *new_group_show(char *group) { 1312 static struct group_show *new_group_show(char *group) {
1257 struct group_show *g = g_new0(struct group_show, 1); 1313 struct group_show *g = g_new0(struct group_show, 1);
1314 int pos = group_number(group);
1258 1315
1259 g->name = g_strdup(group); 1316 g->name = g_strdup(group);
1260 1317
1261 g->item = gtk_tree_item_new(); 1318 g->item = gtk_tree_item_new();
1262 /* FIXME */ 1319 gtk_tree_insert(GTK_TREE(buddies), g->item, pos);
1263 gtk_tree_append(GTK_TREE(buddies), g->item);
1264 gtk_signal_connect(GTK_OBJECT(g->item), "button_press_event", 1320 gtk_signal_connect(GTK_OBJECT(g->item), "button_press_event",
1265 GTK_SIGNAL_FUNC(handle_click_group), NULL); 1321 GTK_SIGNAL_FUNC(handle_click_group), NULL);
1266 gtk_widget_show(g->item); 1322 gtk_widget_show(g->item);
1267 1323
1268 g->label = gtk_label_new(group); 1324 g->label = gtk_label_new(group);
1273 g->tree = gtk_tree_new(); 1329 g->tree = gtk_tree_new();
1274 gtk_tree_item_set_subtree(GTK_TREE_ITEM(g->item), g->tree); 1330 gtk_tree_item_set_subtree(GTK_TREE_ITEM(g->item), g->tree);
1275 gtk_tree_item_expand(GTK_TREE_ITEM(g->item)); 1331 gtk_tree_item_expand(GTK_TREE_ITEM(g->item));
1276 gtk_widget_show(g->tree); 1332 gtk_widget_show(g->tree);
1277 1333
1278 /* FIXME */ 1334 shows = g_slist_insert(shows, g, pos);
1279 shows = g_slist_append(shows, g);
1280 return g; 1335 return g;
1281 } 1336 }
1282 1337
1283 static struct buddy_show *new_buddy_show(struct group_show *gs, struct buddy *buddy) { 1338 static struct buddy_show *new_buddy_show(struct group_show *gs, struct buddy *buddy) {
1284 struct buddy_show *b = g_new0(struct buddy_show, 1); 1339 struct buddy_show *b = g_new0(struct buddy_show, 1);
1285 GtkWidget *box; 1340 GtkWidget *box;
1286 GdkPixmap *pm; 1341 GdkPixmap *pm;
1287 GdkBitmap *bm; 1342 GdkBitmap *bm;
1343 int pos = buddy_number(gs->name, buddy->name);
1288 1344
1289 b->name = g_strdup(buddy->name); 1345 b->name = g_strdup(buddy->name);
1290 b->show = g_strdup(buddy->show); 1346 b->show = g_strdup(buddy->show);
1291 1347
1292 b->item = gtk_tree_item_new(); 1348 b->item = gtk_tree_item_new();
1293 /* FIXME */ 1349 gtk_tree_insert(GTK_TREE(gs->tree), b->item, pos);
1294 gtk_tree_append(GTK_TREE(gs->tree), b->item);
1295 gtk_object_set_user_data(GTK_OBJECT(b->item), b); 1350 gtk_object_set_user_data(GTK_OBJECT(b->item), b);
1296 gtk_signal_connect(GTK_OBJECT(b->item), "button_press_event", 1351 gtk_signal_connect(GTK_OBJECT(b->item), "button_press_event",
1297 GTK_SIGNAL_FUNC(handle_click_buddy), b); 1352 GTK_SIGNAL_FUNC(handle_click_buddy), b);
1298 gtk_widget_show(b->item); 1353 gtk_widget_show(b->item);
1299 1354
1311 b->label = gtk_label_new(buddy->show); 1366 b->label = gtk_label_new(buddy->show);
1312 gtk_misc_set_alignment(GTK_MISC(b->label), 0.0, 0.5); 1367 gtk_misc_set_alignment(GTK_MISC(b->label), 0.0, 0.5);
1313 gtk_box_pack_start(GTK_BOX(box), b->label, TRUE, TRUE, 1); 1368 gtk_box_pack_start(GTK_BOX(box), b->label, TRUE, TRUE, 1);
1314 gtk_widget_show(b->label); 1369 gtk_widget_show(b->label);
1315 1370
1316 /* FIXME */ 1371 gs->members = g_slist_insert(gs->members, b, pos);
1317 gs->members = g_slist_append(gs->members, b);
1318 return b; 1372 return b;
1319 } 1373 }
1320 1374
1321 static struct group_show *find_gs_by_bs(struct buddy_show *b) { 1375 static struct group_show *find_gs_by_bs(struct buddy_show *b) {
1322 GSList *m, *n; 1376 GSList *m, *n;