comparison src/conversation.c @ 7118:bf630f7dfdcd

[gaim-migrate @ 7685] Here's a commit that I think will make faceprint happy. GaimWindow -> GaimConvWindow, GaimIm -> GaimConvIm, GaimChat -> GaimConvChat, GaimBlistChat -> GaimChat, and updated the API functions as well. Plugin authors are going to hunt me down and murder me. I can feel it.. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Thu, 02 Oct 2003 02:54:07 +0000
parents 9220c7490cd1
children 208cb260d7a7
comparison
equal deleted inserted replaced
7117:943085b0ff8b 7118:bf630f7dfdcd
40 40
41 } ConvPlacementData; 41 } ConvPlacementData;
42 42
43 #define SEND_TYPED_TIMEOUT 5000 43 #define SEND_TYPED_TIMEOUT 5000
44 44
45 static GaimWindowUiOps *win_ui_ops = NULL; 45 static GaimConvWindowUiOps *win_ui_ops = NULL;
46 46
47 static GList *conversations = NULL; 47 static GList *conversations = NULL;
48 static GList *ims = NULL; 48 static GList *ims = NULL;
49 static GList *chats = NULL; 49 static GList *chats = NULL;
50 static GList *windows = NULL; 50 static GList *windows = NULL;
137 137
138 static gboolean 138 static gboolean
139 reset_typing(gpointer data) 139 reset_typing(gpointer data)
140 { 140 {
141 GaimConversation *c = (GaimConversation *)data; 141 GaimConversation *c = (GaimConversation *)data;
142 GaimIm *im; 142 GaimConvIm *im;
143 143
144 if (!g_list_find(conversations, c)) 144 if (!g_list_find(conversations, c))
145 return FALSE; 145 return FALSE;
146 146
147 im = GAIM_IM(c); 147 im = GAIM_CONV_IM(c);
148 148
149 gaim_im_set_typing_state(im, GAIM_NOT_TYPING); 149 gaim_conv_im_set_typing_state(im, GAIM_NOT_TYPING);
150 gaim_im_update_typing(im); 150 gaim_conv_im_update_typing(im);
151 gaim_im_stop_typing_timeout(im); 151 gaim_conv_im_stop_typing_timeout(im);
152 152
153 return FALSE; 153 return FALSE;
154 } 154 }
155 155
156 static gboolean 156 static gboolean
162 162
163 gc = gaim_conversation_get_gc(conv); 163 gc = gaim_conversation_get_gc(conv);
164 name = gaim_conversation_get_name(conv); 164 name = gaim_conversation_get_name(conv);
165 165
166 if (conv != NULL && gc != NULL && name != NULL) { 166 if (conv != NULL && gc != NULL && name != NULL) {
167 gaim_im_set_type_again(GAIM_IM(conv), TRUE); 167 gaim_conv_im_set_type_again(GAIM_CONV_IM(conv), TRUE);
168 168
169 serv_send_typing(gc, name, GAIM_TYPED); 169 serv_send_typing(gc, name, GAIM_TYPED);
170 170
171 gaim_debug(GAIM_DEBUG_MISC, "conversation", "typed...\n"); 171 gaim_debug(GAIM_DEBUG_MISC, "conversation", "typed...\n");
172 } 172 }
250 gaim_signal_emit(gaim_conversations_get_handle(), 250 gaim_signal_emit(gaim_conversations_get_handle(),
251 (type == GAIM_CONV_IM ? "displayed-im-msg" : "displayed-chat-msg"), 251 (type == GAIM_CONV_IM ? "displayed-im-msg" : "displayed-chat-msg"),
252 gaim_conversation_get_account(conv), conv, buffy); 252 gaim_conversation_get_account(conv), conv, buffy);
253 253
254 if (type == GAIM_CONV_IM) { 254 if (type == GAIM_CONV_IM) {
255 GaimIm *im = GAIM_IM(conv); 255 GaimConvIm *im = GAIM_CONV_IM(conv);
256 256
257 buffy = g_strdup(buf); 257 buffy = g_strdup(buf);
258 gaim_signal_emit(gaim_conversations_get_handle(), "sending-im-msg", 258 gaim_signal_emit(gaim_conversations_get_handle(), "sending-im-msg",
259 gaim_conversation_get_account(conv), 259 gaim_conversation_get_account(conv),
260 gaim_conversation_get_name(conv), &buffy); 260 gaim_conversation_get_name(conv), &buffy);
261 261
262 if (buffy != NULL) { 262 if (buffy != NULL) {
263 GaimImFlags imflags = 0; 263 GaimConvImFlags imflags = 0;
264 GaimMessageFlags msgflags = GAIM_MESSAGE_SEND; 264 GaimMessageFlags msgflags = GAIM_MESSAGE_SEND;
265 265
266 if (im->images != NULL) { 266 if (im->images != NULL) {
267 imflags |= GAIM_IM_IMAGES; 267 imflags |= GAIM_CONV_IM_IMAGES;
268 msgflags |= GAIM_MESSAGE_IMAGES; 268 msgflags |= GAIM_MESSAGE_IMAGES;
269 } 269 }
270 270
271 err = serv_send_im(gc, gaim_conversation_get_name(conv), 271 err = serv_send_im(gc, gaim_conversation_get_name(conv),
272 buffy, imflags); 272 buffy, imflags);
273 273
274 if (err > 0) 274 if (err > 0)
275 gaim_im_write(im, NULL, buf, msgflags, time(NULL)); 275 gaim_conv_im_write(im, NULL, buf, msgflags, time(NULL));
276 276
277 if (im->images != NULL) { 277 if (im->images != NULL) {
278 GSList *tempy; 278 GSList *tempy;
279 int image; 279 int image;
280 280
300 else { 300 else {
301 buffy = g_strdup(buf); 301 buffy = g_strdup(buf);
302 302
303 gaim_signal_emit(gaim_conversations_get_handle(), "sending-chat-msg", 303 gaim_signal_emit(gaim_conversations_get_handle(), "sending-chat-msg",
304 gaim_conversation_get_account(conv), &buffy, 304 gaim_conversation_get_account(conv), &buffy,
305 gaim_chat_get_id(GAIM_CHAT(conv))); 305 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)));
306 306
307 if (buffy != NULL) { 307 if (buffy != NULL) {
308 err = serv_chat_send(gc, gaim_chat_get_id(GAIM_CHAT(conv)), buffy); 308 err = serv_chat_send(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), buffy);
309 309
310 gaim_signal_emit(gaim_conversations_get_handle(), "sent-chat-msg", 310 gaim_signal_emit(gaim_conversations_get_handle(), "sent-chat-msg",
311 gaim_conversation_get_account(conv), buf, 311 gaim_conversation_get_account(conv), buf,
312 gaim_chat_get_id(GAIM_CHAT(conv))); 312 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)));
313 313
314 g_free(buffy); 314 g_free(buffy);
315 } 315 }
316 } 316 }
317 317
345 } 345 }
346 } 346 }
347 } 347 }
348 348
349 static void 349 static void
350 update_conv_indexes(GaimWindow *win) 350 update_conv_indexes(GaimConvWindow *win)
351 { 351 {
352 GList *l; 352 GList *l;
353 int i; 353 int i;
354 354
355 for (l = gaim_window_get_conversations(win), i = 0; 355 for (l = gaim_conv_window_get_conversations(win), i = 0;
356 l != NULL; 356 l != NULL;
357 l = l->next, i++) { 357 l = l->next, i++) {
358 358
359 GaimConversation *conv = (GaimConversation *)l->data; 359 GaimConversation *conv = (GaimConversation *)l->data;
360 360
361 conv->conversation_pos = i; 361 conv->conversation_pos = i;
362 } 362 }
363 } 363 }
364 364
365 GaimWindow * 365 GaimConvWindow *
366 gaim_window_new(void) 366 gaim_conv_window_new(void)
367 { 367 {
368 GaimWindow *win; 368 GaimConvWindow *win;
369 369
370 win = g_new0(GaimWindow, 1); 370 win = g_new0(GaimConvWindow, 1);
371 371
372 windows = g_list_append(windows, win); 372 windows = g_list_append(windows, win);
373 373
374 win->ui_ops = gaim_conversations_get_win_ui_ops(); 374 win->ui_ops = gaim_conversations_get_win_ui_ops();
375 375
378 378
379 return win; 379 return win;
380 } 380 }
381 381
382 void 382 void
383 gaim_window_destroy(GaimWindow *win) 383 gaim_conv_window_destroy(GaimConvWindow *win)
384 { 384 {
385 GaimWindowUiOps *ops; 385 GaimConvWindowUiOps *ops;
386 GList *node; 386 GList *node;
387 387
388 g_return_if_fail(win != NULL); 388 g_return_if_fail(win != NULL);
389 389
390 ops = gaim_window_get_ui_ops(win); 390 ops = gaim_conv_window_get_ui_ops(win);
391 391
392 /* 392 /*
393 * If there are any conversations in this, destroy them all. The last 393 * If there are any conversations in this, destroy them all. The last
394 * conversation will call gaim_window_destroy(), but this time, this 394 * conversation will call gaim_conv_window_destroy(), but this time, this
395 * check will fail and the window will actually be destroyed. 395 * check will fail and the window will actually be destroyed.
396 * 396 *
397 * This is needed because chats may not close right away. They may 397 * This is needed because chats may not close right away. They may
398 * wait for notification first. When they get that, the window is 398 * wait for notification first. When they get that, the window is
399 * already destroyed, and gaim either crashes or spits out gtk warnings. 399 * already destroyed, and gaim either crashes or spits out gtk warnings.
400 * The problem is fixed with this check. 400 * The problem is fixed with this check.
401 */ 401 */
402 if (gaim_window_get_conversation_count(win) > 0) { 402 if (gaim_conv_window_get_conversation_count(win) > 0) {
403 403
404 node = g_list_first(gaim_window_get_conversations(win)); 404 node = g_list_first(gaim_conv_window_get_conversations(win));
405 while(node != NULL) 405 while(node != NULL)
406 { 406 {
407 GaimConversation *conv = node->data; 407 GaimConversation *conv = node->data;
408 408
409 node = g_list_next(node); 409 node = g_list_next(node);
414 else 414 else
415 { 415 {
416 if (ops != NULL && ops->destroy_window != NULL) 416 if (ops != NULL && ops->destroy_window != NULL)
417 ops->destroy_window(win); 417 ops->destroy_window(win);
418 418
419 g_list_free(gaim_window_get_conversations(win)); 419 g_list_free(gaim_conv_window_get_conversations(win));
420 420
421 windows = g_list_remove(windows, win); 421 windows = g_list_remove(windows, win);
422 422
423 g_free(win); 423 g_free(win);
424 } 424 }
425 } 425 }
426 426
427 void 427 void
428 gaim_window_show(GaimWindow *win) 428 gaim_conv_window_show(GaimConvWindow *win)
429 { 429 {
430 GaimWindowUiOps *ops; 430 GaimConvWindowUiOps *ops;
431 431
432 g_return_if_fail(win != NULL); 432 g_return_if_fail(win != NULL);
433 433
434 ops = gaim_window_get_ui_ops(win); 434 ops = gaim_conv_window_get_ui_ops(win);
435 435
436 if (ops == NULL || ops->show == NULL) 436 if (ops == NULL || ops->show == NULL)
437 return; 437 return;
438 438
439 ops->show(win); 439 ops->show(win);
440 } 440 }
441 441
442 void 442 void
443 gaim_window_hide(GaimWindow *win) 443 gaim_conv_window_hide(GaimConvWindow *win)
444 { 444 {
445 GaimWindowUiOps *ops; 445 GaimConvWindowUiOps *ops;
446 446
447 g_return_if_fail(win != NULL); 447 g_return_if_fail(win != NULL);
448 448
449 ops = gaim_window_get_ui_ops(win); 449 ops = gaim_conv_window_get_ui_ops(win);
450 450
451 if (ops == NULL || ops->hide == NULL) 451 if (ops == NULL || ops->hide == NULL)
452 return; 452 return;
453 453
454 ops->hide(win); 454 ops->hide(win);
455 } 455 }
456 456
457 void 457 void
458 gaim_window_raise(GaimWindow *win) 458 gaim_conv_window_raise(GaimConvWindow *win)
459 { 459 {
460 GaimWindowUiOps *ops; 460 GaimConvWindowUiOps *ops;
461 461
462 g_return_if_fail(win != NULL); 462 g_return_if_fail(win != NULL);
463 463
464 ops = gaim_window_get_ui_ops(win); 464 ops = gaim_conv_window_get_ui_ops(win);
465 465
466 if (ops == NULL || ops->raise == NULL) 466 if (ops == NULL || ops->raise == NULL)
467 return; 467 return;
468 468
469 ops->raise(win); 469 ops->raise(win);
470 } 470 }
471 471
472 void 472 void
473 gaim_window_flash(GaimWindow *win) 473 gaim_conv_window_flash(GaimConvWindow *win)
474 { 474 {
475 GaimWindowUiOps *ops; 475 GaimConvWindowUiOps *ops;
476 476
477 g_return_if_fail(win != NULL); 477 g_return_if_fail(win != NULL);
478 478
479 ops = gaim_window_get_ui_ops(win); 479 ops = gaim_conv_window_get_ui_ops(win);
480 480
481 if (ops == NULL || ops->flash == NULL) 481 if (ops == NULL || ops->flash == NULL)
482 return; 482 return;
483 483
484 ops->flash(win); 484 ops->flash(win);
485 } 485 }
486 486
487 void 487 void
488 gaim_window_set_ui_ops(GaimWindow *win, GaimWindowUiOps *ops) 488 gaim_conv_window_set_ui_ops(GaimConvWindow *win, GaimConvWindowUiOps *ops)
489 { 489 {
490 GaimConversationUiOps *conv_ops = NULL; 490 GaimConversationUiOps *conv_ops = NULL;
491 GList *l; 491 GList *l;
492 492
493 g_return_if_fail(win != NULL); 493 g_return_if_fail(win != NULL);
504 win->ui_ops = ops; 504 win->ui_ops = ops;
505 505
506 if (win->ui_ops != NULL && win->ui_ops->new_window != NULL) 506 if (win->ui_ops != NULL && win->ui_ops->new_window != NULL)
507 win->ui_ops->new_window(win); 507 win->ui_ops->new_window(win);
508 508
509 for (l = gaim_window_get_conversations(win); 509 for (l = gaim_conv_window_get_conversations(win);
510 l != NULL; 510 l != NULL;
511 l = l->next) { 511 l = l->next) {
512 512
513 GaimConversation *conv = (GaimConversation *)l; 513 GaimConversation *conv = (GaimConversation *)l;
514 514
517 if (win->ui_ops != NULL && win->ui_ops->add_conversation != NULL) 517 if (win->ui_ops != NULL && win->ui_ops->add_conversation != NULL)
518 win->ui_ops->add_conversation(win, conv); 518 win->ui_ops->add_conversation(win, conv);
519 } 519 }
520 } 520 }
521 521
522 GaimWindowUiOps * 522 GaimConvWindowUiOps *
523 gaim_window_get_ui_ops(const GaimWindow *win) 523 gaim_conv_window_get_ui_ops(const GaimConvWindow *win)
524 { 524 {
525 g_return_val_if_fail(win != NULL, NULL); 525 g_return_val_if_fail(win != NULL, NULL);
526 526
527 return win->ui_ops; 527 return win->ui_ops;
528 } 528 }
529 529
530 int 530 int
531 gaim_window_add_conversation(GaimWindow *win, GaimConversation *conv) 531 gaim_conv_window_add_conversation(GaimConvWindow *win, GaimConversation *conv)
532 { 532 {
533 GaimWindowUiOps *ops; 533 GaimConvWindowUiOps *ops;
534 534
535 g_return_val_if_fail(win != NULL, -1); 535 g_return_val_if_fail(win != NULL, -1);
536 g_return_val_if_fail(conv != NULL, -1); 536 g_return_val_if_fail(conv != NULL, -1);
537 537
538 if (gaim_conversation_get_window(conv) != NULL) { 538 if (gaim_conversation_get_window(conv) != NULL) {
539 gaim_window_remove_conversation( 539 gaim_conv_window_remove_conversation(
540 gaim_conversation_get_window(conv), 540 gaim_conversation_get_window(conv),
541 gaim_conversation_get_index(conv)); 541 gaim_conversation_get_index(conv));
542 } 542 }
543 543
544 ops = gaim_window_get_ui_ops(win); 544 ops = gaim_conv_window_get_ui_ops(win);
545 545
546 win->conversations = g_list_append(win->conversations, conv); 546 win->conversations = g_list_append(win->conversations, conv);
547 win->conversation_count++; 547 win->conversation_count++;
548 548
549 conv->conversation_pos = win->conversation_count - 1; 549 conv->conversation_pos = win->conversation_count - 1;
560 560
561 return win->conversation_count - 1; 561 return win->conversation_count - 1;
562 } 562 }
563 563
564 GaimConversation * 564 GaimConversation *
565 gaim_window_remove_conversation(GaimWindow *win, unsigned int index) 565 gaim_conv_window_remove_conversation(GaimConvWindow *win, unsigned int index)
566 { 566 {
567 GaimWindowUiOps *ops; 567 GaimConvWindowUiOps *ops;
568 GaimConversation *conv; 568 GaimConversation *conv;
569 GList *node; 569 GList *node;
570 570
571 g_return_val_if_fail(win != NULL, NULL); 571 g_return_val_if_fail(win != NULL, NULL);
572 g_return_val_if_fail(index < gaim_window_get_conversation_count(win), NULL); 572 g_return_val_if_fail(index < gaim_conv_window_get_conversation_count(win), NULL);
573 573
574 ops = gaim_window_get_ui_ops(win); 574 ops = gaim_conv_window_get_ui_ops(win);
575 575
576 node = g_list_nth(gaim_window_get_conversations(win), index); 576 node = g_list_nth(gaim_conv_window_get_conversations(win), index);
577 conv = (GaimConversation *)node->data; 577 conv = (GaimConversation *)node->data;
578 578
579 if (ops != NULL && ops->remove_conversation != NULL) 579 if (ops != NULL && ops->remove_conversation != NULL)
580 ops->remove_conversation(win, conv); 580 ops->remove_conversation(win, conv);
581 581
585 585
586 win->conversation_count--; 586 win->conversation_count--;
587 587
588 conv->window = NULL; 588 conv->window = NULL;
589 589
590 if (gaim_window_get_conversation_count(win) == 0) 590 if (gaim_conv_window_get_conversation_count(win) == 0)
591 gaim_window_destroy(win); 591 gaim_conv_window_destroy(win);
592 else { 592 else {
593 /* Change all the indexes. */ 593 /* Change all the indexes. */
594 update_conv_indexes(win); 594 update_conv_indexes(win);
595 } 595 }
596 596
597 return conv; 597 return conv;
598 } 598 }
599 599
600 void 600 void
601 gaim_window_move_conversation(GaimWindow *win, unsigned int index, 601 gaim_conv_window_move_conversation(GaimConvWindow *win, unsigned int index,
602 unsigned int new_index) 602 unsigned int new_index)
603 { 603 {
604 GaimWindowUiOps *ops; 604 GaimConvWindowUiOps *ops;
605 GaimConversation *conv; 605 GaimConversation *conv;
606 GList *l; 606 GList *l;
607 607
608 g_return_if_fail(win != NULL); 608 g_return_if_fail(win != NULL);
609 g_return_if_fail(index < gaim_window_get_conversation_count(win)); 609 g_return_if_fail(index < gaim_conv_window_get_conversation_count(win));
610 g_return_if_fail(index != new_index); 610 g_return_if_fail(index != new_index);
611 611
612 /* We can't move this past the last index. */ 612 /* We can't move this past the last index. */
613 if (new_index > gaim_window_get_conversation_count(win)) 613 if (new_index > gaim_conv_window_get_conversation_count(win))
614 new_index = gaim_window_get_conversation_count(win); 614 new_index = gaim_conv_window_get_conversation_count(win);
615 615
616 /* Get the list item for this conversation at its current index. */ 616 /* Get the list item for this conversation at its current index. */
617 l = g_list_nth(gaim_window_get_conversations(win), index); 617 l = g_list_nth(gaim_conv_window_get_conversations(win), index);
618 618
619 if (l == NULL) { 619 if (l == NULL) {
620 /* Should never happen. */ 620 /* Should never happen. */
621 gaim_debug(GAIM_DEBUG_ERROR, "conversation", 621 gaim_debug(GAIM_DEBUG_ERROR, "conversation",
622 "Misordered conversations list in window %p\n", win); 622 "Misordered conversations list in window %p\n", win);
625 } 625 }
626 626
627 conv = (GaimConversation *)l->data; 627 conv = (GaimConversation *)l->data;
628 628
629 /* Update the UI part of this. */ 629 /* Update the UI part of this. */
630 ops = gaim_window_get_ui_ops(win); 630 ops = gaim_conv_window_get_ui_ops(win);
631 631
632 if (ops != NULL && ops->move_conversation != NULL) 632 if (ops != NULL && ops->move_conversation != NULL)
633 ops->move_conversation(win, conv, new_index); 633 ops->move_conversation(win, conv, new_index);
634 634
635 if (new_index > index) 635 if (new_index > index)
643 643
644 update_conv_indexes(win); 644 update_conv_indexes(win);
645 } 645 }
646 646
647 GaimConversation * 647 GaimConversation *
648 gaim_window_get_conversation_at(const GaimWindow *win, unsigned int index) 648 gaim_conv_window_get_conversation_at(const GaimConvWindow *win, unsigned int index)
649 { 649 {
650 g_return_val_if_fail(win != NULL, NULL); 650 g_return_val_if_fail(win != NULL, NULL);
651 g_return_val_if_fail(index >= 0 && 651 g_return_val_if_fail(index >= 0 &&
652 index < gaim_window_get_conversation_count(win), 652 index < gaim_conv_window_get_conversation_count(win),
653 NULL); 653 NULL);
654 654
655 return (GaimConversation *)g_list_nth_data( 655 return (GaimConversation *)g_list_nth_data(
656 gaim_window_get_conversations(win), index); 656 gaim_conv_window_get_conversations(win), index);
657 } 657 }
658 658
659 size_t 659 size_t
660 gaim_window_get_conversation_count(const GaimWindow *win) 660 gaim_conv_window_get_conversation_count(const GaimConvWindow *win)
661 { 661 {
662 g_return_val_if_fail(win != NULL, 0); 662 g_return_val_if_fail(win != NULL, 0);
663 663
664 return win->conversation_count; 664 return win->conversation_count;
665 } 665 }
666 666
667 void 667 void
668 gaim_window_switch_conversation(GaimWindow *win, unsigned int index) 668 gaim_conv_window_switch_conversation(GaimConvWindow *win, unsigned int index)
669 { 669 {
670 GaimWindowUiOps *ops; 670 GaimConvWindowUiOps *ops;
671 GaimConversation *old_conv, *conv; 671 GaimConversation *old_conv, *conv;
672 672
673 g_return_if_fail(win != NULL); 673 g_return_if_fail(win != NULL);
674 g_return_if_fail(index >= 0 && 674 g_return_if_fail(index >= 0 &&
675 index < gaim_window_get_conversation_count(win)); 675 index < gaim_conv_window_get_conversation_count(win));
676 676
677 old_conv = gaim_window_get_active_conversation(win); 677 old_conv = gaim_conv_window_get_active_conversation(win);
678 conv = gaim_window_get_conversation_at(win, index); 678 conv = gaim_conv_window_get_conversation_at(win, index);
679 679
680 gaim_signal_emit(gaim_conversations_get_handle(), 680 gaim_signal_emit(gaim_conversations_get_handle(),
681 "conversation-switching", old_conv, conv); 681 "conversation-switching", old_conv, conv);
682 682
683 ops = gaim_window_get_ui_ops(win); 683 ops = gaim_conv_window_get_ui_ops(win);
684 684
685 if (ops != NULL && ops->switch_conversation != NULL) 685 if (ops != NULL && ops->switch_conversation != NULL)
686 ops->switch_conversation(win, index); 686 ops->switch_conversation(win, index);
687 687
688 gaim_conversation_set_unseen(conv, GAIM_UNSEEN_NONE); 688 gaim_conversation_set_unseen(conv, GAIM_UNSEEN_NONE);
690 gaim_signal_emit(gaim_conversations_get_handle(), 690 gaim_signal_emit(gaim_conversations_get_handle(),
691 "conversation-switched", old_conv, conv); 691 "conversation-switched", old_conv, conv);
692 } 692 }
693 693
694 GaimConversation * 694 GaimConversation *
695 gaim_window_get_active_conversation(const GaimWindow *win) 695 gaim_conv_window_get_active_conversation(const GaimConvWindow *win)
696 { 696 {
697 GaimWindowUiOps *ops; 697 GaimConvWindowUiOps *ops;
698 698
699 g_return_val_if_fail(win != NULL, NULL); 699 g_return_val_if_fail(win != NULL, NULL);
700 700
701 if (gaim_window_get_conversation_count(win) == 0) 701 if (gaim_conv_window_get_conversation_count(win) == 0)
702 return NULL; 702 return NULL;
703 703
704 ops = gaim_window_get_ui_ops(win); 704 ops = gaim_conv_window_get_ui_ops(win);
705 705
706 if (ops != NULL && ops->get_active_index != NULL) 706 if (ops != NULL && ops->get_active_index != NULL)
707 return gaim_window_get_conversation_at(win, ops->get_active_index(win)); 707 return gaim_conv_window_get_conversation_at(win, ops->get_active_index(win));
708 708
709 return NULL; 709 return NULL;
710 } 710 }
711 711
712 GList * 712 GList *
713 gaim_window_get_conversations(const GaimWindow *win) 713 gaim_conv_window_get_conversations(const GaimConvWindow *win)
714 { 714 {
715 g_return_val_if_fail(win != NULL, NULL); 715 g_return_val_if_fail(win != NULL, NULL);
716 716
717 return win->conversations; 717 return win->conversations;
718 } 718 }
721 gaim_get_windows(void) 721 gaim_get_windows(void)
722 { 722 {
723 return windows; 723 return windows;
724 } 724 }
725 725
726 GaimWindow * 726 GaimConvWindow *
727 gaim_get_first_window_with_type(GaimConversationType type) 727 gaim_get_first_window_with_type(GaimConversationType type)
728 { 728 {
729 GList *wins, *convs; 729 GList *wins, *convs;
730 GaimWindow *win; 730 GaimConvWindow *win;
731 GaimConversation *conv; 731 GaimConversation *conv;
732 732
733 if (type == GAIM_CONV_UNKNOWN) 733 if (type == GAIM_CONV_UNKNOWN)
734 return NULL; 734 return NULL;
735 735
736 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) { 736 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) {
737 win = (GaimWindow *)wins->data; 737 win = (GaimConvWindow *)wins->data;
738 738
739 for (convs = gaim_window_get_conversations(win); 739 for (convs = gaim_conv_window_get_conversations(win);
740 convs != NULL; 740 convs != NULL;
741 convs = convs->next) { 741 convs = convs->next) {
742 742
743 conv = (GaimConversation *)convs->data; 743 conv = (GaimConversation *)convs->data;
744 744
748 } 748 }
749 749
750 return NULL; 750 return NULL;
751 } 751 }
752 752
753 GaimWindow * 753 GaimConvWindow *
754 gaim_get_last_window_with_type(GaimConversationType type) 754 gaim_get_last_window_with_type(GaimConversationType type)
755 { 755 {
756 GList *wins, *convs; 756 GList *wins, *convs;
757 GaimWindow *win; 757 GaimConvWindow *win;
758 GaimConversation *conv; 758 GaimConversation *conv;
759 759
760 if (type == GAIM_CONV_UNKNOWN) 760 if (type == GAIM_CONV_UNKNOWN)
761 return NULL; 761 return NULL;
762 762
763 for (wins = g_list_last(gaim_get_windows()); 763 for (wins = g_list_last(gaim_get_windows());
764 wins != NULL; 764 wins != NULL;
765 wins = wins->prev) { 765 wins = wins->prev) {
766 766
767 win = (GaimWindow *)wins->data; 767 win = (GaimConvWindow *)wins->data;
768 768
769 for (convs = gaim_window_get_conversations(win); 769 for (convs = gaim_conv_window_get_conversations(win);
770 convs != NULL; 770 convs != NULL;
771 convs = convs->next) { 771 convs = convs->next) {
772 772
773 conv = (GaimConversation *)convs->data; 773 conv = (GaimConversation *)convs->data;
774 774
808 conv->data = g_hash_table_new_full(g_str_hash, g_str_equal, 808 conv->data = g_hash_table_new_full(g_str_hash, g_str_equal,
809 g_free, NULL); 809 g_free, NULL);
810 810
811 if (type == GAIM_CONV_IM) 811 if (type == GAIM_CONV_IM)
812 { 812 {
813 conv->u.im = g_new0(GaimIm, 1); 813 conv->u.im = g_new0(GaimConvIm, 1);
814 conv->u.im->conv = conv; 814 conv->u.im->conv = conv;
815 815
816 ims = g_list_append(ims, conv); 816 ims = g_list_append(ims, conv);
817 817
818 gaim_conversation_set_logging(conv, 818 gaim_conversation_set_logging(conv,
819 gaim_prefs_get_bool("/gaim/gtk/logging/log_ims")); 819 gaim_prefs_get_bool("/gaim/gtk/logging/log_ims"));
820 } 820 }
821 else if (type == GAIM_CONV_CHAT) 821 else if (type == GAIM_CONV_CHAT)
822 { 822 {
823 conv->u.chat = g_new0(GaimChat, 1); 823 conv->u.chat = g_new0(GaimConvChat, 1);
824 conv->u.chat->conv = conv; 824 conv->u.chat->conv = conv;
825 825
826 chats = g_list_append(chats, conv); 826 chats = g_list_append(chats, conv);
827 827
828 gaim_conversation_set_logging(conv, 828 gaim_conversation_set_logging(conv,
837 /* 837 /*
838 * Create a window if one does not exist. If it does, use the last 838 * Create a window if one does not exist. If it does, use the last
839 * created window. 839 * created window.
840 */ 840 */
841 if (windows == NULL) { 841 if (windows == NULL) {
842 GaimWindow *win; 842 GaimConvWindow *win;
843 843
844 win = gaim_window_new(); 844 win = gaim_conv_window_new();
845 gaim_window_add_conversation(win, conv); 845 gaim_conv_window_add_conversation(win, conv);
846 846
847 /* Ensure the window is visible. */ 847 /* Ensure the window is visible. */
848 gaim_window_show(win); 848 gaim_conv_window_show(win);
849 } 849 }
850 else { 850 else {
851 if (place_conv == NULL) 851 if (place_conv == NULL)
852 gaim_prefs_set_string("/core/conversations/placement", "last"); 852 gaim_prefs_set_string("/core/conversations/placement", "last");
853 853
866 866
867 void 867 void
868 gaim_conversation_destroy(GaimConversation *conv) 868 gaim_conversation_destroy(GaimConversation *conv)
869 { 869 {
870 GaimPluginProtocolInfo *prpl_info = NULL; 870 GaimPluginProtocolInfo *prpl_info = NULL;
871 GaimWindow *win; 871 GaimConvWindow *win;
872 GaimConversationUiOps *ops; 872 GaimConversationUiOps *ops;
873 GaimConnection *gc; 873 GaimConnection *gc;
874 const char *name; 874 const char *name;
875 GList *node; 875 GList *node;
876 876
910 * 910 *
911 * -- ChipX86 911 * -- ChipX86
912 */ 912 */
913 913
914 if (gc && g_slist_find(gc->buddy_chats, conv) != NULL) { 914 if (gc && g_slist_find(gc->buddy_chats, conv) != NULL) {
915 serv_chat_leave(gc, gaim_chat_get_id(GAIM_CHAT(conv))); 915 serv_chat_leave(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)));
916 916
917 return; 917 return;
918 } 918 }
919 } 919 }
920 } 920 }
942 942
943 if (conv->type == GAIM_CONV_IM) { 943 if (conv->type == GAIM_CONV_IM) {
944 GSList *tempy; 944 GSList *tempy;
945 int image; 945 int image;
946 946
947 gaim_im_stop_typing_timeout(conv->u.im); 947 gaim_conv_im_stop_typing_timeout(conv->u.im);
948 gaim_im_stop_type_again_timeout(conv->u.im); 948 gaim_conv_im_stop_type_again_timeout(conv->u.im);
949 949
950 for (tempy = conv->u.im->images; 950 for (tempy = conv->u.im->images;
951 tempy != NULL; 951 tempy != NULL;
952 tempy = tempy->next) { 952 tempy = tempy->next) {
953 953
991 } 991 }
992 992
993 g_hash_table_destroy(conv->data); 993 g_hash_table_destroy(conv->data);
994 994
995 if (win != NULL) { 995 if (win != NULL) {
996 gaim_window_remove_conversation(win, 996 gaim_conv_window_remove_conversation(win,
997 gaim_conversation_get_index(conv)); 997 gaim_conversation_get_index(conv));
998 } 998 }
999 999
1000 if (ops != NULL && ops->destroy_conversation != NULL) 1000 if (ops != NULL && ops->destroy_conversation != NULL)
1001 ops->destroy_conversation(conv); 1001 ops->destroy_conversation(conv);
1211 g_return_val_if_fail(conv != NULL, NULL); 1211 g_return_val_if_fail(conv != NULL, NULL);
1212 1212
1213 return conv->history; 1213 return conv->history;
1214 } 1214 }
1215 1215
1216 GaimWindow * 1216 GaimConvWindow *
1217 gaim_conversation_get_window(const GaimConversation *conv) 1217 gaim_conversation_get_window(const GaimConversation *conv)
1218 { 1218 {
1219 g_return_val_if_fail(conv != NULL, NULL); 1219 g_return_val_if_fail(conv != NULL, NULL);
1220 1220
1221 return conv->window; 1221 return conv->window;
1222 } 1222 }
1223 1223
1224 GaimIm * 1224 GaimConvIm *
1225 gaim_conversation_get_im_data(const GaimConversation *conv) 1225 gaim_conversation_get_im_data(const GaimConversation *conv)
1226 { 1226 {
1227 g_return_val_if_fail(conv != NULL, NULL); 1227 g_return_val_if_fail(conv != NULL, NULL);
1228 1228
1229 if (gaim_conversation_get_type(conv) != GAIM_CONV_IM) 1229 if (gaim_conversation_get_type(conv) != GAIM_CONV_IM)
1230 return NULL; 1230 return NULL;
1231 1231
1232 return conv->u.im; 1232 return conv->u.im;
1233 } 1233 }
1234 1234
1235 GaimChat * 1235 GaimConvChat *
1236 gaim_conversation_get_chat_data(const GaimConversation *conv) 1236 gaim_conversation_get_chat_data(const GaimConversation *conv)
1237 { 1237 {
1238 g_return_val_if_fail(conv != NULL, NULL); 1238 g_return_val_if_fail(conv != NULL, NULL);
1239 1239
1240 if (gaim_conversation_get_type(conv) != GAIM_CONV_CHAT) 1240 if (gaim_conversation_get_type(conv) != GAIM_CONV_CHAT)
1342 { 1342 {
1343 GaimPluginProtocolInfo *prpl_info = NULL; 1343 GaimPluginProtocolInfo *prpl_info = NULL;
1344 GaimConnection *gc = NULL; 1344 GaimConnection *gc = NULL;
1345 GaimAccount *account; 1345 GaimAccount *account;
1346 GaimConversationUiOps *ops; 1346 GaimConversationUiOps *ops;
1347 GaimWindow *win; 1347 GaimConvWindow *win;
1348 GaimBuddy *b; 1348 GaimBuddy *b;
1349 GaimUnseenState unseen; 1349 GaimUnseenState unseen;
1350 /* int logging_font_options = 0; */ 1350 /* int logging_font_options = 0; */
1351 1351
1352 g_return_if_fail(conv != NULL); 1352 g_return_if_fail(conv != NULL);
1417 if (!(flags & GAIM_MESSAGE_RECV) && !(flags & GAIM_MESSAGE_SYSTEM)) 1417 if (!(flags & GAIM_MESSAGE_RECV) && !(flags & GAIM_MESSAGE_SYSTEM))
1418 return; 1418 return;
1419 1419
1420 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { 1420 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
1421 if ((flags & GAIM_MESSAGE_RECV) == GAIM_MESSAGE_RECV) 1421 if ((flags & GAIM_MESSAGE_RECV) == GAIM_MESSAGE_RECV)
1422 gaim_im_set_typing_state(GAIM_IM(conv), GAIM_NOT_TYPING); 1422 gaim_conv_im_set_typing_state(GAIM_CONV_IM(conv), GAIM_NOT_TYPING);
1423 } 1423 }
1424 1424
1425 if (gaim_window_get_active_conversation(win) != conv) { 1425 if (gaim_conv_window_get_active_conversation(win) != conv) {
1426 if ((flags & GAIM_MESSAGE_NICK) == GAIM_MESSAGE_NICK || 1426 if ((flags & GAIM_MESSAGE_NICK) == GAIM_MESSAGE_NICK ||
1427 gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_NICK) 1427 gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_NICK)
1428 unseen = GAIM_UNSEEN_NICK; 1428 unseen = GAIM_UNSEEN_NICK;
1429 else if ((flags & GAIM_MESSAGE_SYSTEM) == GAIM_MESSAGE_SYSTEM && 1429 else if ((flags & GAIM_MESSAGE_SYSTEM) == GAIM_MESSAGE_SYSTEM &&
1430 gaim_conversation_get_unseen(conv) != GAIM_UNSEEN_TEXT) 1430 gaim_conversation_get_unseen(conv) != GAIM_UNSEEN_TEXT)
1471 1471
1472 /************************************************************************** 1472 /**************************************************************************
1473 * IM Conversation API 1473 * IM Conversation API
1474 **************************************************************************/ 1474 **************************************************************************/
1475 GaimConversation * 1475 GaimConversation *
1476 gaim_im_get_conversation(const GaimIm *im) 1476 gaim_conv_im_get_conversation(const GaimConvIm *im)
1477 { 1477 {
1478 g_return_val_if_fail(im != NULL, NULL); 1478 g_return_val_if_fail(im != NULL, NULL);
1479 1479
1480 return im->conv; 1480 return im->conv;
1481 } 1481 }
1482 1482
1483 void 1483 void
1484 gaim_im_set_icon(GaimIm *im, GaimBuddyIcon *icon) 1484 gaim_conv_im_set_icon(GaimConvIm *im, GaimBuddyIcon *icon)
1485 { 1485 {
1486 g_return_if_fail(im != NULL); 1486 g_return_if_fail(im != NULL);
1487 1487
1488 if (im->icon == icon) 1488 if (im->icon == icon)
1489 return; 1489 return;
1491 if (im->icon != NULL) 1491 if (im->icon != NULL)
1492 gaim_buddy_icon_unref(im->icon); 1492 gaim_buddy_icon_unref(im->icon);
1493 1493
1494 im->icon = (icon == NULL ? NULL : gaim_buddy_icon_ref(icon)); 1494 im->icon = (icon == NULL ? NULL : gaim_buddy_icon_ref(icon));
1495 1495
1496 gaim_conversation_update(gaim_im_get_conversation(im), 1496 gaim_conversation_update(gaim_conv_im_get_conversation(im),
1497 GAIM_CONV_UPDATE_ICON); 1497 GAIM_CONV_UPDATE_ICON);
1498 } 1498 }
1499 1499
1500 GaimBuddyIcon * 1500 GaimBuddyIcon *
1501 gaim_im_get_icon(const GaimIm *im) 1501 gaim_conv_im_get_icon(const GaimConvIm *im)
1502 { 1502 {
1503 g_return_val_if_fail(im != NULL, NULL); 1503 g_return_val_if_fail(im != NULL, NULL);
1504 1504
1505 return im->icon; 1505 return im->icon;
1506 } 1506 }
1507 1507
1508 void 1508 void
1509 gaim_im_set_typing_state(GaimIm *im, int state) 1509 gaim_conv_im_set_typing_state(GaimConvIm *im, int state)
1510 { 1510 {
1511 g_return_if_fail(im != NULL); 1511 g_return_if_fail(im != NULL);
1512 1512
1513 im->typing_state = state; 1513 im->typing_state = state;
1514 } 1514 }
1515 1515
1516 int 1516 int
1517 gaim_im_get_typing_state(const GaimIm *im) 1517 gaim_conv_im_get_typing_state(const GaimConvIm *im)
1518 { 1518 {
1519 g_return_val_if_fail(im != NULL, 0); 1519 g_return_val_if_fail(im != NULL, 0);
1520 1520
1521 return im->typing_state; 1521 return im->typing_state;
1522 } 1522 }
1523 1523
1524 void 1524 void
1525 gaim_im_start_typing_timeout(GaimIm *im, int timeout) 1525 gaim_conv_im_start_typing_timeout(GaimConvIm *im, int timeout)
1526 { 1526 {
1527 GaimConversation *conv; 1527 GaimConversation *conv;
1528 const char *name; 1528 const char *name;
1529 1529
1530 g_return_if_fail(im != NULL); 1530 g_return_if_fail(im != NULL);
1531 1531
1532 if (im->typing_timeout > 0) 1532 if (im->typing_timeout > 0)
1533 gaim_im_stop_typing_timeout(im); 1533 gaim_conv_im_stop_typing_timeout(im);
1534 1534
1535 conv = gaim_im_get_conversation(im); 1535 conv = gaim_conv_im_get_conversation(im);
1536 name = gaim_conversation_get_name(conv); 1536 name = gaim_conversation_get_name(conv);
1537 1537
1538 im->typing_timeout = g_timeout_add_full(G_PRIORITY_DEFAULT_IDLE, 1538 im->typing_timeout = g_timeout_add_full(G_PRIORITY_DEFAULT_IDLE,
1539 timeout * 1000, reset_typing, conv, NULL); 1539 timeout * 1000, reset_typing, conv, NULL);
1540 } 1540 }
1541 1541
1542 void 1542 void
1543 gaim_im_stop_typing_timeout(GaimIm *im) 1543 gaim_conv_im_stop_typing_timeout(GaimConvIm *im)
1544 { 1544 {
1545 g_return_if_fail(im != NULL); 1545 g_return_if_fail(im != NULL);
1546 1546
1547 if (im->typing_timeout == 0) 1547 if (im->typing_timeout == 0)
1548 return; 1548 return;
1550 g_source_remove(im->typing_timeout); 1550 g_source_remove(im->typing_timeout);
1551 im->typing_timeout = 0; 1551 im->typing_timeout = 0;
1552 } 1552 }
1553 1553
1554 guint 1554 guint
1555 gaim_im_get_typing_timeout(const GaimIm *im) 1555 gaim_conv_im_get_typing_timeout(const GaimConvIm *im)
1556 { 1556 {
1557 g_return_val_if_fail(im != NULL, 0); 1557 g_return_val_if_fail(im != NULL, 0);
1558 1558
1559 return im->typing_timeout; 1559 return im->typing_timeout;
1560 } 1560 }
1561 1561
1562 void 1562 void
1563 gaim_im_set_type_again(GaimIm *im, time_t val) 1563 gaim_conv_im_set_type_again(GaimConvIm *im, time_t val)
1564 { 1564 {
1565 g_return_if_fail(im != NULL); 1565 g_return_if_fail(im != NULL);
1566 1566
1567 im->type_again = val; 1567 im->type_again = val;
1568 } 1568 }
1569 1569
1570 time_t 1570 time_t
1571 gaim_im_get_type_again(const GaimIm *im) 1571 gaim_conv_im_get_type_again(const GaimConvIm *im)
1572 { 1572 {
1573 g_return_val_if_fail(im != NULL, 0); 1573 g_return_val_if_fail(im != NULL, 0);
1574 1574
1575 return im->type_again; 1575 return im->type_again;
1576 } 1576 }
1577 1577
1578 void 1578 void
1579 gaim_im_start_type_again_timeout(GaimIm *im) 1579 gaim_conv_im_start_type_again_timeout(GaimConvIm *im)
1580 { 1580 {
1581 g_return_if_fail(im != NULL); 1581 g_return_if_fail(im != NULL);
1582 1582
1583 im->type_again_timeout = g_timeout_add(SEND_TYPED_TIMEOUT, send_typed, 1583 im->type_again_timeout = g_timeout_add(SEND_TYPED_TIMEOUT, send_typed,
1584 gaim_im_get_conversation(im)); 1584 gaim_conv_im_get_conversation(im));
1585 } 1585 }
1586 1586
1587 void 1587 void
1588 gaim_im_stop_type_again_timeout(GaimIm *im) 1588 gaim_conv_im_stop_type_again_timeout(GaimConvIm *im)
1589 { 1589 {
1590 g_return_if_fail(im != NULL); 1590 g_return_if_fail(im != NULL);
1591 1591
1592 if (im->type_again_timeout == 0) 1592 if (im->type_again_timeout == 0)
1593 return; 1593 return;
1595 g_source_remove(im->type_again_timeout); 1595 g_source_remove(im->type_again_timeout);
1596 im->type_again_timeout = 0; 1596 im->type_again_timeout = 0;
1597 } 1597 }
1598 1598
1599 guint 1599 guint
1600 gaim_im_get_type_again_timeout(const GaimIm *im) 1600 gaim_conv_im_get_type_again_timeout(const GaimConvIm *im)
1601 { 1601 {
1602 g_return_val_if_fail(im != NULL, 0); 1602 g_return_val_if_fail(im != NULL, 0);
1603 1603
1604 return im->type_again_timeout; 1604 return im->type_again_timeout;
1605 } 1605 }
1606 1606
1607 void 1607 void
1608 gaim_im_update_typing(GaimIm *im) 1608 gaim_conv_im_update_typing(GaimConvIm *im)
1609 { 1609 {
1610 g_return_if_fail(im != NULL); 1610 g_return_if_fail(im != NULL);
1611 1611
1612 gaim_conversation_update(gaim_im_get_conversation(im), 1612 gaim_conversation_update(gaim_conv_im_get_conversation(im),
1613 GAIM_CONV_UPDATE_TYPING); 1613 GAIM_CONV_UPDATE_TYPING);
1614 } 1614 }
1615 1615
1616 void 1616 void
1617 gaim_im_write(GaimIm *im, const char *who, const char *message, 1617 gaim_conv_im_write(GaimConvIm *im, const char *who, const char *message,
1618 GaimMessageFlags flags, time_t mtime) 1618 GaimMessageFlags flags, time_t mtime)
1619 { 1619 {
1620 GaimConversation *c; 1620 GaimConversation *c;
1621 1621
1622 g_return_if_fail(im != NULL); 1622 g_return_if_fail(im != NULL);
1623 g_return_if_fail(message != NULL); 1623 g_return_if_fail(message != NULL);
1624 1624
1625 c = gaim_im_get_conversation(im); 1625 c = gaim_conv_im_get_conversation(im);
1626 1626
1627 /* Raise the window, if specified in prefs. */ 1627 /* Raise the window, if specified in prefs. */
1628 if (c->ui_ops != NULL && c->ui_ops->write_im != NULL) 1628 if (c->ui_ops != NULL && c->ui_ops->write_im != NULL)
1629 c->ui_ops->write_im(c, who, message, flags, mtime); 1629 c->ui_ops->write_im(c, who, message, flags, mtime);
1630 else 1630 else
1631 gaim_conversation_write(c, who, message, flags, mtime); 1631 gaim_conversation_write(c, who, message, flags, mtime);
1632 } 1632 }
1633 1633
1634 void 1634 void
1635 gaim_im_send(GaimIm *im, const char *message) 1635 gaim_conv_im_send(GaimConvIm *im, const char *message)
1636 { 1636 {
1637 g_return_if_fail(im != NULL); 1637 g_return_if_fail(im != NULL);
1638 g_return_if_fail(message != NULL); 1638 g_return_if_fail(message != NULL);
1639 1639
1640 common_send(gaim_im_get_conversation(im), message); 1640 common_send(gaim_conv_im_get_conversation(im), message);
1641 } 1641 }
1642 1642
1643 /************************************************************************** 1643 /**************************************************************************
1644 * Chat Conversation API 1644 * Chat Conversation API
1645 **************************************************************************/ 1645 **************************************************************************/
1646 1646
1647 GaimConversation * 1647 GaimConversation *
1648 gaim_chat_get_conversation(const GaimChat *chat) 1648 gaim_conv_chat_get_conversation(const GaimConvChat *chat)
1649 { 1649 {
1650 g_return_val_if_fail(chat != NULL, NULL); 1650 g_return_val_if_fail(chat != NULL, NULL);
1651 1651
1652 return chat->conv; 1652 return chat->conv;
1653 } 1653 }
1654 1654
1655 GList * 1655 GList *
1656 gaim_chat_set_users(GaimChat *chat, GList *users) 1656 gaim_conv_chat_set_users(GaimConvChat *chat, GList *users)
1657 { 1657 {
1658 g_return_val_if_fail(chat != NULL, NULL); 1658 g_return_val_if_fail(chat != NULL, NULL);
1659 1659
1660 chat->in_room = users; 1660 chat->in_room = users;
1661 1661
1662 return users; 1662 return users;
1663 } 1663 }
1664 1664
1665 GList * 1665 GList *
1666 gaim_chat_get_users(const GaimChat *chat) 1666 gaim_conv_chat_get_users(const GaimConvChat *chat)
1667 { 1667 {
1668 g_return_val_if_fail(chat != NULL, NULL); 1668 g_return_val_if_fail(chat != NULL, NULL);
1669 1669
1670 return chat->in_room; 1670 return chat->in_room;
1671 } 1671 }
1672 1672
1673 void 1673 void
1674 gaim_chat_ignore(GaimChat *chat, const char *name) 1674 gaim_conv_chat_ignore(GaimConvChat *chat, const char *name)
1675 { 1675 {
1676 g_return_if_fail(chat != NULL); 1676 g_return_if_fail(chat != NULL);
1677 g_return_if_fail(name != NULL); 1677 g_return_if_fail(name != NULL);
1678 1678
1679 /* Make sure the user isn't already ignored. */ 1679 /* Make sure the user isn't already ignored. */
1680 if (gaim_chat_is_user_ignored(chat, name)) 1680 if (gaim_conv_chat_is_user_ignored(chat, name))
1681 return; 1681 return;
1682 1682
1683 gaim_chat_set_ignored(chat, 1683 gaim_conv_chat_set_ignored(chat,
1684 g_list_append(gaim_chat_get_ignored(chat), g_strdup(name))); 1684 g_list_append(gaim_conv_chat_get_ignored(chat), g_strdup(name)));
1685 } 1685 }
1686 1686
1687 void 1687 void
1688 gaim_chat_unignore(GaimChat *chat, const char *name) 1688 gaim_conv_chat_unignore(GaimConvChat *chat, const char *name)
1689 { 1689 {
1690 GList *item; 1690 GList *item;
1691 1691
1692 g_return_if_fail(chat != NULL); 1692 g_return_if_fail(chat != NULL);
1693 g_return_if_fail(name != NULL); 1693 g_return_if_fail(name != NULL);
1694 1694
1695 /* Make sure the user is actually ignored. */ 1695 /* Make sure the user is actually ignored. */
1696 if (!gaim_chat_is_user_ignored(chat, name)) 1696 if (!gaim_conv_chat_is_user_ignored(chat, name))
1697 return; 1697 return;
1698 1698
1699 item = g_list_find(gaim_chat_get_ignored(chat), 1699 item = g_list_find(gaim_conv_chat_get_ignored(chat),
1700 gaim_chat_get_ignored_user(chat, name)); 1700 gaim_conv_chat_get_ignored_user(chat, name));
1701 1701
1702 gaim_chat_set_ignored(chat, 1702 gaim_conv_chat_set_ignored(chat,
1703 g_list_remove_link(gaim_chat_get_ignored(chat), item)); 1703 g_list_remove_link(gaim_conv_chat_get_ignored(chat), item));
1704 1704
1705 g_free(item->data); 1705 g_free(item->data);
1706 g_list_free_1(item); 1706 g_list_free_1(item);
1707 } 1707 }
1708 1708
1709 GList * 1709 GList *
1710 gaim_chat_set_ignored(GaimChat *chat, GList *ignored) 1710 gaim_conv_chat_set_ignored(GaimConvChat *chat, GList *ignored)
1711 { 1711 {
1712 g_return_val_if_fail(chat != NULL, NULL); 1712 g_return_val_if_fail(chat != NULL, NULL);
1713 1713
1714 chat->ignored = ignored; 1714 chat->ignored = ignored;
1715 1715
1716 return ignored; 1716 return ignored;
1717 } 1717 }
1718 1718
1719 GList * 1719 GList *
1720 gaim_chat_get_ignored(const GaimChat *chat) 1720 gaim_conv_chat_get_ignored(const GaimConvChat *chat)
1721 { 1721 {
1722 g_return_val_if_fail(chat != NULL, NULL); 1722 g_return_val_if_fail(chat != NULL, NULL);
1723 1723
1724 return chat->ignored; 1724 return chat->ignored;
1725 } 1725 }
1726 1726
1727 const char * 1727 const char *
1728 gaim_chat_get_ignored_user(const GaimChat *chat, const char *user) 1728 gaim_conv_chat_get_ignored_user(const GaimConvChat *chat, const char *user)
1729 { 1729 {
1730 GList *ignored; 1730 GList *ignored;
1731 1731
1732 g_return_val_if_fail(chat != NULL, NULL); 1732 g_return_val_if_fail(chat != NULL, NULL);
1733 g_return_val_if_fail(user != NULL, NULL); 1733 g_return_val_if_fail(user != NULL, NULL);
1734 1734
1735 for (ignored = gaim_chat_get_ignored(chat); 1735 for (ignored = gaim_conv_chat_get_ignored(chat);
1736 ignored != NULL; 1736 ignored != NULL;
1737 ignored = ignored->next) { 1737 ignored = ignored->next) {
1738 1738
1739 const char *ign = (const char *)ignored->data; 1739 const char *ign = (const char *)ignored->data;
1740 1740
1753 1753
1754 return NULL; 1754 return NULL;
1755 } 1755 }
1756 1756
1757 gboolean 1757 gboolean
1758 gaim_chat_is_user_ignored(const GaimChat *chat, const char *user) 1758 gaim_conv_chat_is_user_ignored(const GaimConvChat *chat, const char *user)
1759 { 1759 {
1760 g_return_val_if_fail(chat != NULL, FALSE); 1760 g_return_val_if_fail(chat != NULL, FALSE);
1761 g_return_val_if_fail(user != NULL, FALSE); 1761 g_return_val_if_fail(user != NULL, FALSE);
1762 1762
1763 return (gaim_chat_get_ignored_user(chat, user) != NULL); 1763 return (gaim_conv_chat_get_ignored_user(chat, user) != NULL);
1764 } 1764 }
1765 1765
1766 void 1766 void
1767 gaim_chat_set_topic(GaimChat *chat, const char *who, const char *topic) 1767 gaim_conv_chat_set_topic(GaimConvChat *chat, const char *who, const char *topic)
1768 { 1768 {
1769 g_return_if_fail(chat != NULL); 1769 g_return_if_fail(chat != NULL);
1770 1770
1771 if (chat->who != NULL) free(chat->who); 1771 if (chat->who != NULL) free(chat->who);
1772 if (chat->topic != NULL) free(chat->topic); 1772 if (chat->topic != NULL) free(chat->topic);
1773 1773
1774 chat->who = (who == NULL ? NULL : g_strdup(who)); 1774 chat->who = (who == NULL ? NULL : g_strdup(who));
1775 chat->topic = (topic == NULL ? NULL : g_strdup(topic)); 1775 chat->topic = (topic == NULL ? NULL : g_strdup(topic));
1776 1776
1777 gaim_conversation_update(gaim_chat_get_conversation(chat), 1777 gaim_conversation_update(gaim_conv_chat_get_conversation(chat),
1778 GAIM_CONV_UPDATE_TOPIC); 1778 GAIM_CONV_UPDATE_TOPIC);
1779 } 1779 }
1780 1780
1781 const char * 1781 const char *
1782 gaim_chat_get_topic(const GaimChat *chat) 1782 gaim_conv_chat_get_topic(const GaimConvChat *chat)
1783 { 1783 {
1784 g_return_val_if_fail(chat != NULL, NULL); 1784 g_return_val_if_fail(chat != NULL, NULL);
1785 1785
1786 return chat->topic; 1786 return chat->topic;
1787 } 1787 }
1788 1788
1789 void 1789 void
1790 gaim_chat_set_id(GaimChat *chat, int id) 1790 gaim_conv_chat_set_id(GaimConvChat *chat, int id)
1791 { 1791 {
1792 g_return_if_fail(chat != NULL); 1792 g_return_if_fail(chat != NULL);
1793 1793
1794 chat->id = id; 1794 chat->id = id;
1795 } 1795 }
1796 1796
1797 int 1797 int
1798 gaim_chat_get_id(const GaimChat *chat) 1798 gaim_conv_chat_get_id(const GaimConvChat *chat)
1799 { 1799 {
1800 g_return_val_if_fail(chat != NULL, -1); 1800 g_return_val_if_fail(chat != NULL, -1);
1801 1801
1802 return chat->id; 1802 return chat->id;
1803 } 1803 }
1804 1804
1805 void 1805 void
1806 gaim_chat_write(GaimChat *chat, const char *who, const char *message, 1806 gaim_conv_chat_write(GaimConvChat *chat, const char *who, const char *message,
1807 GaimMessageFlags flags, time_t mtime) 1807 GaimMessageFlags flags, time_t mtime)
1808 { 1808 {
1809 GaimAccount *account; 1809 GaimAccount *account;
1810 GaimConversation *conv; 1810 GaimConversation *conv;
1811 GaimConnection *gc; 1811 GaimConnection *gc;
1812 1812
1813 g_return_if_fail(chat != NULL); 1813 g_return_if_fail(chat != NULL);
1814 g_return_if_fail(who != NULL); 1814 g_return_if_fail(who != NULL);
1815 g_return_if_fail(message != NULL); 1815 g_return_if_fail(message != NULL);
1816 1816
1817 conv = gaim_chat_get_conversation(chat); 1817 conv = gaim_conv_chat_get_conversation(chat);
1818 gc = gaim_conversation_get_gc(conv); 1818 gc = gaim_conversation_get_gc(conv);
1819 account = gaim_connection_get_account(gc); 1819 account = gaim_connection_get_account(gc);
1820 1820
1821 /* Don't display this if the person who wrote it is ignored. */ 1821 /* Don't display this if the person who wrote it is ignored. */
1822 if (gaim_chat_is_user_ignored(chat, who)) 1822 if (gaim_conv_chat_is_user_ignored(chat, who))
1823 return; 1823 return;
1824 1824
1825 if (!(flags & GAIM_MESSAGE_WHISPER)) { 1825 if (!(flags & GAIM_MESSAGE_WHISPER)) {
1826 char *str; 1826 char *str;
1827 const char *disp; 1827 const char *disp;
1850 else 1850 else
1851 gaim_conversation_write(conv, who, message, flags, mtime); 1851 gaim_conversation_write(conv, who, message, flags, mtime);
1852 } 1852 }
1853 1853
1854 void 1854 void
1855 gaim_chat_send(GaimChat *chat, const char *message) 1855 gaim_conv_chat_send(GaimConvChat *chat, const char *message)
1856 { 1856 {
1857 g_return_if_fail(chat != NULL); 1857 g_return_if_fail(chat != NULL);
1858 g_return_if_fail(message != NULL); 1858 g_return_if_fail(message != NULL);
1859 1859
1860 common_send(gaim_chat_get_conversation(chat), message); 1860 common_send(gaim_conv_chat_get_conversation(chat), message);
1861 } 1861 }
1862 1862
1863 void 1863 void
1864 gaim_chat_add_user(GaimChat *chat, const char *user, const char *extra_msg) 1864 gaim_conv_chat_add_user(GaimConvChat *chat, const char *user, const char *extra_msg)
1865 { 1865 {
1866 GaimConversation *conv; 1866 GaimConversation *conv;
1867 GaimConversationUiOps *ops; 1867 GaimConversationUiOps *ops;
1868 char tmp[BUF_LONG]; 1868 char tmp[BUF_LONG];
1869 1869
1870 g_return_if_fail(chat != NULL); 1870 g_return_if_fail(chat != NULL);
1871 g_return_if_fail(user != NULL); 1871 g_return_if_fail(user != NULL);
1872 1872
1873 conv = gaim_chat_get_conversation(chat); 1873 conv = gaim_conv_chat_get_conversation(chat);
1874 ops = gaim_conversation_get_ui_ops(conv); 1874 ops = gaim_conversation_get_ui_ops(conv);
1875 1875
1876 gaim_signal_emit(gaim_conversations_get_handle(), 1876 gaim_signal_emit(gaim_conversations_get_handle(),
1877 "chat-buddy-joining", conv, user); 1877 "chat-buddy-joining", conv, user);
1878 1878
1879 gaim_chat_set_users(chat, 1879 gaim_conv_chat_set_users(chat,
1880 g_list_insert_sorted(gaim_chat_get_users(chat), g_strdup(user), 1880 g_list_insert_sorted(gaim_conv_chat_get_users(chat), g_strdup(user),
1881 insertname_compare)); 1881 insertname_compare));
1882 1882
1883 if (ops != NULL && ops->chat_add_user != NULL) 1883 if (ops != NULL && ops->chat_add_user != NULL)
1884 ops->chat_add_user(conv, user); 1884 ops->chat_add_user(conv, user);
1885 1885
1897 gaim_signal_emit(gaim_conversations_get_handle(), 1897 gaim_signal_emit(gaim_conversations_get_handle(),
1898 "chat-buddy-joined", conv, user); 1898 "chat-buddy-joined", conv, user);
1899 } 1899 }
1900 1900
1901 void 1901 void
1902 gaim_chat_add_users(GaimChat *chat, GList *users) 1902 gaim_conv_chat_add_users(GaimConvChat *chat, GList *users)
1903 { 1903 {
1904 GaimConversation *conv; 1904 GaimConversation *conv;
1905 GaimConversationUiOps *ops; 1905 GaimConversationUiOps *ops;
1906 GList *l; 1906 GList *l;
1907 1907
1908 g_return_if_fail(chat != NULL); 1908 g_return_if_fail(chat != NULL);
1909 g_return_if_fail(users != NULL); 1909 g_return_if_fail(users != NULL);
1910 1910
1911 conv = gaim_chat_get_conversation(chat); 1911 conv = gaim_conv_chat_get_conversation(chat);
1912 ops = gaim_conversation_get_ui_ops(conv); 1912 ops = gaim_conversation_get_ui_ops(conv);
1913 1913
1914 for (l = users; l != NULL; l = l->next) { 1914 for (l = users; l != NULL; l = l->next) {
1915 const char *user = (const char *)l->data; 1915 const char *user = (const char *)l->data;
1916 1916
1917 gaim_signal_emit(gaim_conversations_get_handle(), 1917 gaim_signal_emit(gaim_conversations_get_handle(),
1918 "chat-buddy-joining", conv, user); 1918 "chat-buddy-joining", conv, user);
1919 1919
1920 gaim_chat_set_users(chat, 1920 gaim_conv_chat_set_users(chat,
1921 g_list_insert_sorted(gaim_chat_get_users(chat), 1921 g_list_insert_sorted(gaim_conv_chat_get_users(chat),
1922 g_strdup((char *)l->data), 1922 g_strdup((char *)l->data),
1923 insertname_compare)); 1923 insertname_compare));
1924 1924
1925 gaim_signal_emit(gaim_conversations_get_handle(), 1925 gaim_signal_emit(gaim_conversations_get_handle(),
1926 "chat-buddy-joined", conv, user); 1926 "chat-buddy-joined", conv, user);
1929 if (ops != NULL && ops->chat_add_users != NULL) 1929 if (ops != NULL && ops->chat_add_users != NULL)
1930 ops->chat_add_users(conv, users); 1930 ops->chat_add_users(conv, users);
1931 } 1931 }
1932 1932
1933 void 1933 void
1934 gaim_chat_rename_user(GaimChat *chat, const char *old_user, 1934 gaim_conv_chat_rename_user(GaimConvChat *chat, const char *old_user,
1935 const char *new_user) 1935 const char *new_user)
1936 { 1936 {
1937 GaimConversation *conv; 1937 GaimConversation *conv;
1938 GaimConversationUiOps *ops; 1938 GaimConversationUiOps *ops;
1939 char tmp[BUF_LONG]; 1939 char tmp[BUF_LONG];
1941 1941
1942 g_return_if_fail(chat != NULL); 1942 g_return_if_fail(chat != NULL);
1943 g_return_if_fail(old_user != NULL); 1943 g_return_if_fail(old_user != NULL);
1944 g_return_if_fail(new_user != NULL); 1944 g_return_if_fail(new_user != NULL);
1945 1945
1946 conv = gaim_chat_get_conversation(chat); 1946 conv = gaim_conv_chat_get_conversation(chat);
1947 ops = gaim_conversation_get_ui_ops(conv); 1947 ops = gaim_conversation_get_ui_ops(conv);
1948 1948
1949 gaim_chat_set_users(chat, 1949 gaim_conv_chat_set_users(chat,
1950 g_list_insert_sorted(gaim_chat_get_users(chat), g_strdup(new_user), 1950 g_list_insert_sorted(gaim_conv_chat_get_users(chat), g_strdup(new_user),
1951 insertname_compare)); 1951 insertname_compare));
1952 1952
1953 if (ops != NULL && ops->chat_rename_user != NULL) 1953 if (ops != NULL && ops->chat_rename_user != NULL)
1954 ops->chat_rename_user(conv, old_user, new_user); 1954 ops->chat_rename_user(conv, old_user, new_user);
1955 1955
1956 for (names = gaim_chat_get_users(chat); 1956 for (names = gaim_conv_chat_get_users(chat);
1957 names != NULL; 1957 names != NULL;
1958 names = names->next) { 1958 names = names->next) {
1959 1959
1960 if (!gaim_utf8_strcasecmp((char *)names->data, old_user)) { 1960 if (!gaim_utf8_strcasecmp((char *)names->data, old_user)) {
1961 gaim_chat_set_users(chat, 1961 gaim_conv_chat_set_users(chat,
1962 g_list_remove(gaim_chat_get_users(chat), names->data)); 1962 g_list_remove(gaim_conv_chat_get_users(chat), names->data));
1963 break; 1963 break;
1964 } 1964 }
1965 } 1965 }
1966 1966
1967 if (gaim_chat_is_user_ignored(chat, old_user)) { 1967 if (gaim_conv_chat_is_user_ignored(chat, old_user)) {
1968 gaim_chat_unignore(chat, old_user); 1968 gaim_conv_chat_unignore(chat, old_user);
1969 gaim_chat_ignore(chat, new_user); 1969 gaim_conv_chat_ignore(chat, new_user);
1970 } 1970 }
1971 else if (gaim_chat_is_user_ignored(chat, new_user)) 1971 else if (gaim_conv_chat_is_user_ignored(chat, new_user))
1972 gaim_chat_unignore(chat, new_user); 1972 gaim_conv_chat_unignore(chat, new_user);
1973 1973
1974 if (gaim_prefs_get_bool("/core/conversations/chat/show_nick_change")) { 1974 if (gaim_prefs_get_bool("/core/conversations/chat/show_nick_change")) {
1975 g_snprintf(tmp, sizeof(tmp), 1975 g_snprintf(tmp, sizeof(tmp),
1976 _("%s is now known as %s"), old_user, new_user); 1976 _("%s is now known as %s"), old_user, new_user);
1977 1977
1978 gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL)); 1978 gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL));
1979 } 1979 }
1980 } 1980 }
1981 1981
1982 void 1982 void
1983 gaim_chat_remove_user(GaimChat *chat, const char *user, const char *reason) 1983 gaim_conv_chat_remove_user(GaimConvChat *chat, const char *user, const char *reason)
1984 { 1984 {
1985 GaimConversation *conv; 1985 GaimConversation *conv;
1986 GaimConversationUiOps *ops; 1986 GaimConversationUiOps *ops;
1987 char tmp[BUF_LONG]; 1987 char tmp[BUF_LONG];
1988 GList *names; 1988 GList *names;
1989 1989
1990 g_return_if_fail(chat != NULL); 1990 g_return_if_fail(chat != NULL);
1991 g_return_if_fail(user != NULL); 1991 g_return_if_fail(user != NULL);
1992 1992
1993 conv = gaim_chat_get_conversation(chat); 1993 conv = gaim_conv_chat_get_conversation(chat);
1994 ops = gaim_conversation_get_ui_ops(conv); 1994 ops = gaim_conversation_get_ui_ops(conv);
1995 1995
1996 gaim_signal_emit(gaim_conversations_get_handle(), "chat-buddy-leaving", 1996 gaim_signal_emit(gaim_conversations_get_handle(), "chat-buddy-leaving",
1997 conv, user, reason); 1997 conv, user, reason);
1998 1998
1999 if (ops != NULL && ops->chat_remove_user != NULL) 1999 if (ops != NULL && ops->chat_remove_user != NULL)
2000 ops->chat_remove_user(conv, user); 2000 ops->chat_remove_user(conv, user);
2001 2001
2002 for (names = gaim_chat_get_users(chat); 2002 for (names = gaim_conv_chat_get_users(chat);
2003 names != NULL; 2003 names != NULL;
2004 names = names->next) { 2004 names = names->next) {
2005 2005
2006 if (!gaim_utf8_strcasecmp((char *)names->data, user)) { 2006 if (!gaim_utf8_strcasecmp((char *)names->data, user)) {
2007 gaim_chat_set_users(chat, 2007 gaim_conv_chat_set_users(chat,
2008 g_list_remove(gaim_chat_get_users(chat), names->data)); 2008 g_list_remove(gaim_conv_chat_get_users(chat), names->data));
2009 break; 2009 break;
2010 } 2010 }
2011 } 2011 }
2012 2012
2013 /* NOTE: Don't remove them from ignored in case they re-enter. */ 2013 /* NOTE: Don't remove them from ignored in case they re-enter. */
2025 gaim_signal_emit(gaim_conversations_get_handle(), "chat-buddy-left", 2025 gaim_signal_emit(gaim_conversations_get_handle(), "chat-buddy-left",
2026 conv, user, reason); 2026 conv, user, reason);
2027 } 2027 }
2028 2028
2029 void 2029 void
2030 gaim_chat_remove_users(GaimChat *chat, GList *users, const char *reason) 2030 gaim_conv_chat_remove_users(GaimConvChat *chat, GList *users, const char *reason)
2031 { 2031 {
2032 GaimConversation *conv; 2032 GaimConversation *conv;
2033 GaimConversationUiOps *ops; 2033 GaimConversationUiOps *ops;
2034 char tmp[BUF_LONG]; 2034 char tmp[BUF_LONG];
2035 GList *names, *l; 2035 GList *names, *l;
2036 2036
2037 g_return_if_fail(chat != NULL); 2037 g_return_if_fail(chat != NULL);
2038 g_return_if_fail(users != NULL); 2038 g_return_if_fail(users != NULL);
2039 2039
2040 conv = gaim_chat_get_conversation(chat); 2040 conv = gaim_conv_chat_get_conversation(chat);
2041 ops = gaim_conversation_get_ui_ops(conv); 2041 ops = gaim_conversation_get_ui_ops(conv);
2042 2042
2043 for (l = users; l != NULL; l = l->next) { 2043 for (l = users; l != NULL; l = l->next) {
2044 const char *user = (const char *)l->data; 2044 const char *user = (const char *)l->data;
2045 2045
2051 ops->chat_remove_users(conv, users); 2051 ops->chat_remove_users(conv, users);
2052 2052
2053 for (l = users; l != NULL; l = l->next) { 2053 for (l = users; l != NULL; l = l->next) {
2054 const char *user = (const char *)l->data; 2054 const char *user = (const char *)l->data;
2055 2055
2056 for (names = gaim_chat_get_users(chat); 2056 for (names = gaim_conv_chat_get_users(chat);
2057 names != NULL; 2057 names != NULL;
2058 names = names->next) { 2058 names = names->next) {
2059 2059
2060 if (!gaim_utf8_strcasecmp((char *)names->data, user)) 2060 if (!gaim_utf8_strcasecmp((char *)names->data, user))
2061 { 2061 {
2062 gaim_chat_set_users(chat, 2062 gaim_conv_chat_set_users(chat,
2063 g_list_remove(gaim_chat_get_users(chat), names->data)); 2063 g_list_remove(gaim_conv_chat_get_users(chat), names->data));
2064 2064
2065 break; 2065 break;
2066 } 2066 }
2067 } 2067 }
2068 2068
2099 } 2099 }
2100 } 2100 }
2101 } 2101 }
2102 2102
2103 void 2103 void
2104 gaim_chat_clear_users(GaimChat *chat) 2104 gaim_conv_chat_clear_users(GaimConvChat *chat)
2105 { 2105 {
2106 GaimConversation *conv; 2106 GaimConversation *conv;
2107 GaimConversationUiOps *ops; 2107 GaimConversationUiOps *ops;
2108 GList *users; 2108 GList *users;
2109 GList *l, *l_next; 2109 GList *l, *l_next;
2110 2110
2111 g_return_if_fail(chat != NULL); 2111 g_return_if_fail(chat != NULL);
2112 2112
2113 conv = gaim_chat_get_conversation(chat); 2113 conv = gaim_conv_chat_get_conversation(chat);
2114 ops = gaim_conversation_get_ui_ops(conv); 2114 ops = gaim_conversation_get_ui_ops(conv);
2115 users = gaim_chat_get_users(chat); 2115 users = gaim_conv_chat_get_users(chat);
2116 2116
2117 if (ops != NULL && ops->chat_remove_users != NULL) 2117 if (ops != NULL && ops->chat_remove_users != NULL)
2118 ops->chat_remove_users(conv, users); 2118 ops->chat_remove_users(conv, users);
2119 2119
2120 for (l = users; l != NULL; l = l_next) 2120 for (l = users; l != NULL; l = l_next)
2130 2130
2131 g_free(user); 2131 g_free(user);
2132 } 2132 }
2133 2133
2134 g_list_free(users); 2134 g_list_free(users);
2135 gaim_chat_set_users(chat, NULL); 2135 gaim_conv_chat_set_users(chat, NULL);
2136 } 2136 }
2137 2137
2138 GaimConversation * 2138 GaimConversation *
2139 gaim_find_chat(const GaimConnection *gc, int id) 2139 gaim_find_chat(const GaimConnection *gc, int id)
2140 { 2140 {
2142 GaimConversation *conv; 2142 GaimConversation *conv;
2143 2143
2144 for (l = gaim_get_chats(); l != NULL; l = l->next) { 2144 for (l = gaim_get_chats(); l != NULL; l = l->next) {
2145 conv = (GaimConversation *)l->data; 2145 conv = (GaimConversation *)l->data;
2146 2146
2147 if (gaim_chat_get_id(GAIM_CHAT(conv)) == id && 2147 if (gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)) == id &&
2148 gaim_conversation_get_gc(conv) == gc) 2148 gaim_conversation_get_gc(conv) == gc)
2149 return conv; 2149 return conv;
2150 } 2150 }
2151 2151
2152 return NULL; 2152 return NULL;
2157 **************************************************************************/ 2157 **************************************************************************/
2158 /* This one places conversations in the last made window. */ 2158 /* This one places conversations in the last made window. */
2159 static void 2159 static void
2160 conv_placement_last_created_win(GaimConversation *conv) 2160 conv_placement_last_created_win(GaimConversation *conv)
2161 { 2161 {
2162 GaimWindow *win; 2162 GaimConvWindow *win;
2163 2163
2164 if (gaim_prefs_get_bool("/core/conversations/combine_chat_im")) 2164 if (gaim_prefs_get_bool("/core/conversations/combine_chat_im"))
2165 win = g_list_last(gaim_get_windows())->data; 2165 win = g_list_last(gaim_get_windows())->data;
2166 else 2166 else
2167 win = gaim_get_last_window_with_type(gaim_conversation_get_type(conv)); 2167 win = gaim_get_last_window_with_type(gaim_conversation_get_type(conv));
2168 2168
2169 if (win == NULL) { 2169 if (win == NULL) {
2170 win = gaim_window_new(); 2170 win = gaim_conv_window_new();
2171 2171
2172 gaim_window_add_conversation(win, conv); 2172 gaim_conv_window_add_conversation(win, conv);
2173 gaim_window_show(win); 2173 gaim_conv_window_show(win);
2174 } 2174 }
2175 else 2175 else
2176 gaim_window_add_conversation(win, conv); 2176 gaim_conv_window_add_conversation(win, conv);
2177 } 2177 }
2178 2178
2179 /* This one places each conversation in its own window. */ 2179 /* This one places each conversation in its own window. */
2180 static void 2180 static void
2181 conv_placement_new_window(GaimConversation *conv) 2181 conv_placement_new_window(GaimConversation *conv)
2182 { 2182 {
2183 GaimWindow *win; 2183 GaimConvWindow *win;
2184 2184
2185 win = gaim_window_new(); 2185 win = gaim_conv_window_new();
2186 2186
2187 gaim_window_add_conversation(win, conv); 2187 gaim_conv_window_add_conversation(win, conv);
2188 2188
2189 gaim_window_show(win); 2189 gaim_conv_window_show(win);
2190 } 2190 }
2191 2191
2192 /* 2192 /*
2193 * This groups things by, well, group. Buddies from groups will always be 2193 * This groups things by, well, group. Buddies from groups will always be
2194 * grouped together, and a buddy from a group not belonging to any currently 2194 * grouped together, and a buddy from a group not belonging to any currently
2195 * open windows will get a new window. 2195 * open windows will get a new window.
2196 */ 2196 */
2197 static void 2197 static void
2198 conv_placement_by_group(GaimConversation *conv) 2198 conv_placement_by_group(GaimConversation *conv)
2199 { 2199 {
2200 GaimWindow *win; 2200 GaimConvWindow *win;
2201 GaimConversationType type; 2201 GaimConversationType type;
2202 2202
2203 type = gaim_conversation_get_type(conv); 2203 type = gaim_conversation_get_type(conv);
2204 2204
2205 if (type == GAIM_CONV_IM) { 2205 if (type == GAIM_CONV_IM) {
2213 if (b != NULL) 2213 if (b != NULL)
2214 grp = gaim_find_buddys_group(b); 2214 grp = gaim_find_buddys_group(b);
2215 2215
2216 /* Go through the list of IMs and find one with this group. */ 2216 /* Go through the list of IMs and find one with this group. */
2217 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) { 2217 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) {
2218 GaimWindow *win2; 2218 GaimConvWindow *win2;
2219 GaimConversation *conv2; 2219 GaimConversation *conv2;
2220 GaimBuddy *b2; 2220 GaimBuddy *b2;
2221 GaimGroup *g2 = NULL; 2221 GaimGroup *g2 = NULL;
2222 2222
2223 win2 = (GaimWindow *)wins->data; 2223 win2 = (GaimConvWindow *)wins->data;
2224 2224
2225 for (convs = gaim_window_get_conversations(win2); 2225 for (convs = gaim_conv_window_get_conversations(win2);
2226 convs != NULL; 2226 convs != NULL;
2227 convs = convs->next) { 2227 convs = convs->next) {
2228 2228
2229 conv2 = (GaimConversation *)convs->data; 2229 conv2 = (GaimConversation *)convs->data;
2230 2230
2233 2233
2234 if (b2 != NULL) 2234 if (b2 != NULL)
2235 g2 = gaim_find_buddys_group(b2); 2235 g2 = gaim_find_buddys_group(b2);
2236 2236
2237 if (grp == g2) { 2237 if (grp == g2) {
2238 gaim_window_add_conversation(win2, conv); 2238 gaim_conv_window_add_conversation(win2, conv);
2239 2239
2240 return; 2240 return;
2241 } 2241 }
2242 } 2242 }
2243 } 2243 }
2244 2244
2245 /* Make a new window. */ 2245 /* Make a new window. */
2246 conv_placement_new_window(conv); 2246 conv_placement_new_window(conv);
2247 } 2247 }
2248 else if (type == GAIM_CONV_CHAT) { 2248 else if (type == GAIM_CONV_CHAT) {
2249 GaimBlistChat *chat; 2249 GaimChat *chat;
2250 GaimGroup *group = NULL; 2250 GaimGroup *group = NULL;
2251 GList *wins, *convs; 2251 GList *wins, *convs;
2252 2252
2253 chat = gaim_blist_find_chat(gaim_conversation_get_account(conv), 2253 chat = gaim_blist_find_chat(gaim_conversation_get_account(conv),
2254 gaim_conversation_get_name(conv)); 2254 gaim_conversation_get_name(conv));
2256 if (chat != NULL) 2256 if (chat != NULL)
2257 group = gaim_blist_chat_get_group(chat); 2257 group = gaim_blist_chat_get_group(chat);
2258 2258
2259 /* Go through the list of chats and find one with this group. */ 2259 /* Go through the list of chats and find one with this group. */
2260 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) { 2260 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) {
2261 GaimWindow *win2; 2261 GaimConvWindow *win2;
2262 GaimConversation *conv2; 2262 GaimConversation *conv2;
2263 GaimBlistChat *chat2; 2263 GaimChat *chat2;
2264 GaimGroup *group2 = NULL; 2264 GaimGroup *group2 = NULL;
2265 2265
2266 win2 = (GaimWindow *)wins->data; 2266 win2 = (GaimConvWindow *)wins->data;
2267 2267
2268 for (convs = gaim_window_get_conversations(win2); 2268 for (convs = gaim_conv_window_get_conversations(win2);
2269 convs != NULL; 2269 convs != NULL;
2270 convs = convs->next) { 2270 convs = convs->next) {
2271 2271
2272 conv2 = (GaimConversation *)convs->data; 2272 conv2 = (GaimConversation *)convs->data;
2273 2273
2277 2277
2278 if (chat2 != NULL) 2278 if (chat2 != NULL)
2279 group2 = gaim_blist_chat_get_group(chat2); 2279 group2 = gaim_blist_chat_get_group(chat2);
2280 2280
2281 if (group == group2) { 2281 if (group == group2) {
2282 gaim_window_add_conversation(win2, conv); 2282 gaim_conv_window_add_conversation(win2, conv);
2283 2283
2284 return; 2284 return;
2285 } 2285 }
2286 } 2286 }
2287 } 2287 }
2293 win = gaim_get_last_window_with_type(type); 2293 win = gaim_get_last_window_with_type(type);
2294 2294
2295 if (win == NULL) 2295 if (win == NULL)
2296 conv_placement_new_window(conv); 2296 conv_placement_new_window(conv);
2297 else 2297 else
2298 gaim_window_add_conversation(win, conv); 2298 gaim_conv_window_add_conversation(win, conv);
2299 } 2299 }
2300 } 2300 }
2301 2301
2302 /* This groups things by account. Otherwise, the same semantics as above */ 2302 /* This groups things by account. Otherwise, the same semantics as above */
2303 static void 2303 static void
2312 type = gaim_conversation_get_type(conv); 2312 type = gaim_conversation_get_type(conv);
2313 2313
2314 2314
2315 /* Go through the list of IMs and find one with this group. */ 2315 /* Go through the list of IMs and find one with this group. */
2316 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) { 2316 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) {
2317 GaimWindow *win2; 2317 GaimConvWindow *win2;
2318 GaimConversation *conv2; 2318 GaimConversation *conv2;
2319 2319
2320 win2 = (GaimWindow *)wins->data; 2320 win2 = (GaimConvWindow *)wins->data;
2321 2321
2322 for (convs = gaim_window_get_conversations(win2); 2322 for (convs = gaim_conv_window_get_conversations(win2);
2323 convs != NULL; 2323 convs != NULL;
2324 convs = convs->next) { 2324 convs = convs->next) {
2325 2325
2326 conv2 = (GaimConversation *)convs->data; 2326 conv2 = (GaimConversation *)convs->data;
2327 2327
2328 if ((gaim_prefs_get_bool("/core/conversations/combine_chat_im") || 2328 if ((gaim_prefs_get_bool("/core/conversations/combine_chat_im") ||
2329 type == gaim_conversation_get_type(conv2)) && 2329 type == gaim_conversation_get_type(conv2)) &&
2330 account == gaim_conversation_get_account(conv2)) { 2330 account == gaim_conversation_get_account(conv2)) {
2331 2331
2332 gaim_window_add_conversation(win2, conv); 2332 gaim_conv_window_add_conversation(win2, conv);
2333 return; 2333 return;
2334 } 2334 }
2335 2335
2336 } 2336 }
2337 } 2337 }
2494 2494
2495 gaim_conversation_foreach(gaim_conversation_autoset_title); 2495 gaim_conversation_foreach(gaim_conversation_autoset_title);
2496 } 2496 }
2497 2497
2498 void 2498 void
2499 gaim_conversations_set_win_ui_ops(GaimWindowUiOps *ops) 2499 gaim_conversations_set_win_ui_ops(GaimConvWindowUiOps *ops)
2500 { 2500 {
2501 win_ui_ops = ops; 2501 win_ui_ops = ops;
2502 } 2502 }
2503 2503
2504 GaimWindowUiOps * 2504 GaimConvWindowUiOps *
2505 gaim_conversations_get_win_ui_ops(void) 2505 gaim_conversations_get_win_ui_ops(void)
2506 { 2506 {
2507 return win_ui_ops; 2507 return win_ui_ops;
2508 } 2508 }
2509 2509