Mercurial > pidgin
comparison src/buddy.c @ 940:9fca1293f871
[gaim-migrate @ 950]
Patches from kylev
committer: Tailor Script <tailor@pidgin.im>
author | Rob Flynn <gaim@robflynn.com> |
---|---|
date | Sun, 01 Oct 2000 00:20:03 +0000 |
parents | 5e6ca3dd4d02 |
children | f8de52dbd0cb |
comparison
equal
deleted
inserted
replaced
939:69955d88ab42 | 940:9fca1293f871 |
---|---|
115 imchatbox = NULL; | 115 imchatbox = NULL; |
116 } | 116 } |
117 | 117 |
118 void update_num_groups() | 118 void update_num_groups() |
119 { | 119 { |
120 GList *grp = groups; | 120 GSList *grp = groups; |
121 GList *mem; | 121 GList *mem; |
122 struct buddy *b; | 122 struct buddy *b; |
123 struct group *g; | 123 struct group *g; |
124 int pres, total; | 124 int pres, total; |
125 char buf[BUF_LONG]; | 125 char buf[BUF_LONG]; |
153 onl += pres; | 153 onl += pres; |
154 all += total; | 154 all += total; |
155 if (display_options & OPT_DISP_SHOW_GRPNUM) | 155 if (display_options & OPT_DISP_SHOW_GRPNUM) |
156 #endif | 156 #endif |
157 gtk_label_set(GTK_LABEL(g->label), buf); | 157 gtk_label_set(GTK_LABEL(g->label), buf); |
158 grp = grp->next; | 158 grp = g_slist_next(grp); |
159 } | 159 } |
160 #ifdef USE_APPLET | 160 #ifdef USE_APPLET |
161 g_snprintf(buf, sizeof(buf), _("%d/%d Buddies Online"), onl, all); | 161 g_snprintf(buf, sizeof(buf), _("%d/%d Buddies Online"), onl, all); |
162 applet_set_tooltips(buf); | 162 applet_set_tooltips(buf); |
163 #endif | 163 #endif |
164 } | 164 } |
165 | 165 |
166 void update_show_idlepix() | 166 void update_show_idlepix() |
167 { | 167 { |
168 GList *grp = groups; | 168 GSList *grp = groups; |
169 GList *mem; | 169 GList *mem; |
170 struct group *g; | 170 struct group *g; |
171 struct buddy *b; | 171 struct buddy *b; |
172 | 172 |
173 while (grp) { | 173 while (grp) { |
186 gtk_widget_show(b->pix); | 186 gtk_widget_show(b->pix); |
187 else | 187 else |
188 gtk_widget_hide(b->pix); | 188 gtk_widget_hide(b->pix); |
189 mem = mem->next; | 189 mem = mem->next; |
190 } | 190 } |
191 grp = grp->next; | 191 grp = g_slist_next(grp); |
192 } | 192 } |
193 } | 193 } |
194 | 194 |
195 void update_all_buddies() | 195 void update_all_buddies() |
196 { | 196 { |
197 GList *grp = groups; | 197 GSList *grp = groups; |
198 GList *mem; | 198 GList *mem; |
199 struct buddy *b; | 199 struct buddy *b; |
200 struct group *g; | 200 struct group *g; |
201 int count; | 201 int count; |
202 | 202 |
217 /* this is a fall-back in case we missed any */ | 217 /* this is a fall-back in case we missed any */ |
218 if (!count && (display_options & OPT_DISP_NO_MT_GRP)) | 218 if (!count && (display_options & OPT_DISP_NO_MT_GRP)) |
219 gtk_widget_hide(g->item); | 219 gtk_widget_hide(g->item); |
220 else gtk_widget_show(g->item); | 220 else gtk_widget_show(g->item); |
221 | 221 |
222 grp = grp->next; | 222 grp = g_slist_next(grp); |
223 } | 223 } |
224 | 224 |
225 | 225 |
226 } | 226 } |
227 | 227 |
296 while(mem) { | 296 while(mem) { |
297 g_free(mem->data); | 297 g_free(mem->data); |
298 mem = g_list_remove(mem, mem->data); | 298 mem = g_list_remove(mem, mem->data); |
299 } | 299 } |
300 g_free(groups->data); | 300 g_free(groups->data); |
301 groups = g_list_remove(groups, groups->data); | 301 groups = g_slist_remove(groups, groups->data); |
302 } | 302 } |
303 | 303 |
304 sprintf(debug_buff, "date: %s\n", full_date()); | 304 sprintf(debug_buff, "date: %s\n", full_date()); |
305 debug_print(debug_buff); | 305 debug_print(debug_buff); |
306 update_keepalive(FALSE); | 306 update_keepalive(FALSE); |
476 | 476 |
477 | 477 |
478 | 478 |
479 void remove_buddy(struct group *rem_g, struct buddy *rem_b) | 479 void remove_buddy(struct group *rem_g, struct buddy *rem_b) |
480 { | 480 { |
481 GList *grp; | 481 GSList *grp; |
482 GList *mem; | 482 GList *mem; |
483 struct buddy *b; | 483 struct buddy *b; |
484 int count = 0; | 484 int count = 0; |
485 | 485 |
486 struct group *delg; | 486 struct group *delg; |
487 struct buddy *delb; | 487 struct buddy *delb; |
488 | 488 |
489 grp = g_list_find(groups, rem_g); | 489 grp = g_slist_find(groups, rem_g); |
490 delg = (struct group *)grp->data; | 490 delg = (struct group *)grp->data; |
491 mem = delg->members; | 491 mem = delg->members; |
492 | 492 |
493 mem = g_list_find(mem, rem_b); | 493 mem = g_list_find(mem, rem_b); |
494 delb = (struct buddy *)mem->data; | 494 delb = (struct buddy *)mem->data; |
512 // flush buddy list to cache | 512 // flush buddy list to cache |
513 | 513 |
514 do_export( (GtkWidget *) NULL, 0 ); | 514 do_export( (GtkWidget *) NULL, 0 ); |
515 | 515 |
516 update_num_groups(); | 516 update_num_groups(); |
517 | |
518 | |
519 } | 517 } |
520 | 518 |
521 void remove_group(struct group *rem_g) | 519 void remove_group(struct group *rem_g) |
522 { | 520 { |
523 GList *grp; | 521 GSList *grp; |
524 GList *mem; | 522 GList *mem; |
525 | 523 |
526 struct group *delg; | 524 struct group *delg; |
527 struct buddy *delb; | 525 struct buddy *delb; |
528 | 526 |
529 grp = g_list_find(groups, rem_g); | 527 grp = g_slist_find(groups, rem_g); |
530 delg = (struct group *)grp->data; | 528 delg = (struct group *)grp->data; |
531 mem = delg->members; | 529 mem = delg->members; |
532 | 530 |
533 while(delg->members) { | 531 while(delg->members) { |
534 delb = (struct buddy *)delg->members->data; | 532 delb = (struct buddy *)delg->members->data; |
538 g_free(delb); | 536 g_free(delb); |
539 } | 537 } |
540 | 538 |
541 | 539 |
542 gtk_tree_remove_items(GTK_TREE(buddies), g_list_append(NULL, delg->item)); | 540 gtk_tree_remove_items(GTK_TREE(buddies), g_list_append(NULL, delg->item)); |
543 groups = g_list_remove(groups, delg); | 541 groups = g_slist_remove(groups, delg); |
544 g_free(delg); | 542 g_free(delg); |
545 | 543 |
546 serv_save_config(); | 544 serv_save_config(); |
547 | 545 |
548 // flush buddy list to cache | 546 // flush buddy list to cache |
594 gtk_ctree_get_node_info (ctree, sibling, &target2, | 592 gtk_ctree_get_node_info (ctree, sibling, &target2, |
595 NULL, NULL, NULL, NULL, NULL, NULL, NULL); | 593 NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
596 | 594 |
597 | 595 |
598 if (!parent) { | 596 if (!parent) { |
599 GList *grps, *buds; | 597 GSList *grps; |
598 GList *buds; | |
600 struct group *g, *g2; | 599 struct group *g, *g2; |
601 GList *tmp, *mem; | 600 GList *tmp, *mem; |
602 int pos, count; | 601 int pos, count; |
603 struct buddy *b; | 602 struct buddy *b; |
604 /* Okay we've moved group order... */ | 603 /* Okay we've moved group order... */ |
624 | 623 |
625 tmp = g_list_append(NULL, g->item); | 624 tmp = g_list_append(NULL, g->item); |
626 gtk_tree_remove_items(GTK_TREE(buddies), tmp); | 625 gtk_tree_remove_items(GTK_TREE(buddies), tmp); |
627 g_list_free(tmp); | 626 g_list_free(tmp); |
628 | 627 |
629 groups = g_list_remove(groups, g); | 628 groups = g_slist_remove(groups, g); |
630 | 629 |
631 g->item = gtk_tree_item_new_with_label(g->name); | 630 g->item = gtk_tree_item_new_with_label(g->name); |
632 mem = g->members; count = 0; | 631 mem = g->members; count = 0; |
633 while (mem && !count) { | 632 while (mem && !count) { |
634 b = (struct buddy *)mem->data; | 633 b = (struct buddy *)mem->data; |
637 } | 636 } |
638 if (!count) gtk_widget_show(g->item); | 637 if (!count) gtk_widget_show(g->item); |
639 | 638 |
640 if (sibling) { | 639 if (sibling) { |
641 g2 = find_group(target2); | 640 g2 = find_group(target2); |
642 pos = g_list_index(groups, g2); | 641 pos = g_slist_index(groups, g2); |
643 if (pos == 0) { | 642 if (pos == 0) { |
644 groups = g_list_prepend(groups, g); | 643 groups = g_slist_prepend(groups, g); |
645 gtk_tree_prepend(GTK_TREE(buddies), g->item); | 644 gtk_tree_prepend(GTK_TREE(buddies), g->item); |
646 } else { | 645 } else { |
647 groups = g_list_insert(groups, g, pos); | 646 groups = g_slist_insert(groups, g, pos); |
648 gtk_tree_insert(GTK_TREE(buddies), g->item, pos); | 647 gtk_tree_insert(GTK_TREE(buddies), g->item, pos); |
649 } | 648 } |
650 | 649 |
651 } else { | 650 } else { |
652 groups = g_list_append(groups, g); | 651 groups = g_slist_append(groups, g); |
653 gtk_tree_append(GTK_TREE(buddies), g->item); | 652 gtk_tree_append(GTK_TREE(buddies), g->item); |
654 | 653 |
655 } | 654 } |
656 | 655 |
657 gtk_tree_item_set_subtree (GTK_TREE_ITEM(g->item), g->tree); | 656 gtk_tree_item_set_subtree (GTK_TREE_ITEM(g->item), g->tree); |
663 | 662 |
664 gtk_widget_unref(g->tree); | 663 gtk_widget_unref(g->tree); |
665 | 664 |
666 update_num_groups(); | 665 update_num_groups(); |
667 | 666 |
668 | |
669 buds = g->members; | 667 buds = g->members; |
670 | 668 |
671 while(buds) { | 669 while(buds) { |
672 b = (struct buddy *)buds->data; | 670 b = (struct buddy *)buds->data; |
673 set_buddy(b); | 671 set_buddy(b); |
675 } | 673 } |
676 | 674 |
677 grps = groups; | 675 grps = groups; |
678 while(grps) { | 676 while(grps) { |
679 g = (struct group *)grps->data; | 677 g = (struct group *)grps->data; |
680 grps = grps->next; | 678 grps = g_slist_next(grps); |
681 } | 679 } |
682 | 680 |
683 } else { | 681 } else { |
684 struct group *new_g, *old_g; | 682 struct group *new_g, *old_g; |
685 struct buddy *b, *s; | 683 struct buddy *b, *s; |
772 | 770 |
773 | 771 |
774 void build_edit_tree() | 772 void build_edit_tree() |
775 { | 773 { |
776 GtkCTreeNode *p = NULL, *n; | 774 GtkCTreeNode *p = NULL, *n; |
777 GList *grp = groups; | 775 GSList *grp = groups; |
778 GList *mem; | 776 GList *mem; |
779 struct group *g; | 777 struct group *g; |
780 struct buddy *b; | 778 struct buddy *b; |
781 char *text[1]; | 779 char *text[1]; |
782 | 780 |
808 NULL, NULL, 1, 1); | 806 NULL, NULL, 1, 1); |
809 | 807 |
810 mem = mem->next; | 808 mem = mem->next; |
811 | 809 |
812 } | 810 } |
813 grp = grp->next; | 811 grp = g_slist_next(grp); |
814 } | 812 } |
815 | 813 |
816 gtk_clist_thaw(GTK_CLIST(edittree)); | 814 gtk_clist_thaw(GTK_CLIST(edittree)); |
817 | 815 |
818 } | 816 } |
895 g = (struct group *)g_new0(struct group, 1); | 893 g = (struct group *)g_new0(struct group, 1); |
896 if (!g) | 894 if (!g) |
897 return NULL; | 895 return NULL; |
898 | 896 |
899 strncpy(g->name, group, sizeof(g->name)); | 897 strncpy(g->name, group, sizeof(g->name)); |
900 groups = g_list_append(groups, g); | 898 groups = g_slist_append(groups, g); |
901 | 899 |
902 if (blist == NULL) | 900 if (blist == NULL) |
903 return g; | 901 return g; |
904 | 902 |
905 g->item = gtk_tree_item_new(); | 903 g->item = gtk_tree_item_new(); |
1092 } | 1090 } |
1093 | 1091 |
1094 struct group *find_group(char *group) | 1092 struct group *find_group(char *group) |
1095 { | 1093 { |
1096 struct group *g; | 1094 struct group *g; |
1097 GList *grp = groups; | 1095 GSList *grp = groups; |
1098 char *grpname = g_malloc(strlen(group) + 1); | 1096 char *grpname = g_malloc(strlen(group) + 1); |
1099 | 1097 |
1100 strcpy(grpname, normalize(group)); | 1098 strcpy(grpname, normalize(group)); |
1101 while (grp) { | 1099 while (grp) { |
1102 g = (struct group *)grp->data; | 1100 g = (struct group *)grp->data; |
1103 if (!strcasecmp(normalize(g->name), grpname)) { | 1101 if (!strcasecmp(normalize(g->name), grpname)) { |
1104 g_free(grpname); | 1102 g_free(grpname); |
1105 return g; | 1103 return g; |
1106 } | 1104 } |
1107 grp = grp->next; | 1105 grp = g_slist_next(grp); |
1108 } | 1106 } |
1109 | 1107 |
1110 g_free(grpname); | 1108 g_free(grpname); |
1111 return NULL; | 1109 return NULL; |
1112 | 1110 |
1115 | 1113 |
1116 struct group *find_group_by_buddy(char *who) | 1114 struct group *find_group_by_buddy(char *who) |
1117 { | 1115 { |
1118 struct group *g; | 1116 struct group *g; |
1119 struct buddy *b; | 1117 struct buddy *b; |
1120 GList *grp = groups; | 1118 GSList *grp = groups; |
1121 GList *mem; | 1119 GList *mem; |
1122 char *whoname = g_malloc(strlen(who) + 1); | 1120 char *whoname = g_malloc(strlen(who) + 1); |
1123 | 1121 |
1124 strcpy(whoname, normalize(who)); | 1122 strcpy(whoname, normalize(who)); |
1125 | 1123 |
1133 g_free(whoname); | 1131 g_free(whoname); |
1134 return g; | 1132 return g; |
1135 } | 1133 } |
1136 mem = mem->next; | 1134 mem = mem->next; |
1137 } | 1135 } |
1138 grp = grp->next; | 1136 grp = g_slist_next(grp); |
1139 } | 1137 } |
1140 g_free(whoname); | 1138 g_free(whoname); |
1141 return NULL; | 1139 return NULL; |
1142 } | 1140 } |
1143 | 1141 |
1144 | 1142 |
1145 struct buddy *find_buddy(char *who) | 1143 struct buddy *find_buddy(char *who) |
1146 { | 1144 { |
1147 struct group *g; | 1145 struct group *g; |
1148 struct buddy *b; | 1146 struct buddy *b; |
1149 GList *grp = groups; | 1147 GSList *grp = groups; |
1150 GList *mem; | 1148 GList *mem; |
1151 char *whoname = g_malloc(strlen(who) + 1); | 1149 char *whoname = g_malloc(strlen(who) + 1); |
1152 | 1150 |
1153 strcpy(whoname, normalize(who)); | 1151 strcpy(whoname, normalize(who)); |
1154 | 1152 |
1162 g_free(whoname); | 1160 g_free(whoname); |
1163 return b; | 1161 return b; |
1164 } | 1162 } |
1165 mem = mem->next; | 1163 mem = mem->next; |
1166 } | 1164 } |
1167 grp = grp->next; | 1165 grp = g_slist_next(grp); |
1168 } | 1166 } |
1169 g_free(whoname); | 1167 g_free(whoname); |
1170 return NULL; | 1168 return NULL; |
1171 } | 1169 } |
1172 | 1170 |