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