comparison mcabber/src/roster.c @ 207:41fafa0ecfd8

[/trunk] Changeset 219 by mikael * Fix a big stupidity: roster *roster :-( * Add buddy_setname(), buddy_getgroupname()
author mikael
date Sat, 07 May 2005 20:04:29 +0000
parents 62bc2992216b
children 353a4f8a3f61
comparison
equal deleted inserted replaced
206:766167c0c57f 207:41fafa0ecfd8
25 25
26 26
27 /* This is a private structure type for the roster */ 27 /* This is a private structure type for the roster */
28 28
29 typedef struct { 29 typedef struct {
30 const char *name; 30 const gchar *name;
31 const char *jid; 31 const gchar *jid;
32 guint type; 32 guint type;
33 enum imstatus status; 33 enum imstatus status;
34 guint flags; 34 guint flags;
35 // list: user -> points to his group; group -> points to its users list 35 // list: user -> points to his group; group -> points to its users list
36 GSList *list; 36 GSList *list;
458 458
459 // buddy_hide_group(roster, hide) 459 // buddy_hide_group(roster, hide)
460 // "hide" values: 1=hide 0=show_all -1=invert 460 // "hide" values: 1=hide 0=show_all -1=invert
461 void buddy_hide_group(gpointer rosterdata, int hide) 461 void buddy_hide_group(gpointer rosterdata, int hide)
462 { 462 {
463 roster *roster = rosterdata; 463 roster *roster_usr = rosterdata;
464 if (hide > 0) // TRUE (hide) 464 if (hide > 0) // TRUE (hide)
465 roster->flags |= ROSTER_FLAG_HIDE; 465 roster_usr->flags |= ROSTER_FLAG_HIDE;
466 else if (hide < 0) // NEG (invert) 466 else if (hide < 0) // NEG (invert)
467 roster->flags ^= ROSTER_FLAG_HIDE; 467 roster_usr->flags ^= ROSTER_FLAG_HIDE;
468 else // FALSE (don't hide) 468 else // FALSE (don't hide)
469 roster->flags &= ~ROSTER_FLAG_HIDE; 469 roster_usr->flags &= ~ROSTER_FLAG_HIDE;
470 } 470 }
471 471
472 const char *buddy_getjid(gpointer rosterdata) 472 const char *buddy_getjid(gpointer rosterdata)
473 { 473 {
474 roster *roster = rosterdata; 474 roster *roster_usr = rosterdata;
475 return roster->jid; 475 return roster_usr->jid;
476 }
477
478 void buddy_setname(gpointer rosterdata, char *newname)
479 {
480 roster *roster_usr = rosterdata;
481
482 // TODO For groups, we need to check for unicity
483 // However, renaming a group boils down to moving all its buddies to
484 // another group, so calling this function is not really necessary...
485 if (roster_usr->type & ROSTER_TYPE_GROUP) return;
486
487 if (roster_usr->name) {
488 g_free((gchar*)roster_usr->name);
489 roster_usr->name = NULL;
490 }
491 if (newname)
492 roster_usr->name = g_strdup(newname);
476 } 493 }
477 494
478 const char *buddy_getname(gpointer rosterdata) 495 const char *buddy_getname(gpointer rosterdata)
479 { 496 {
480 roster *roster = rosterdata; 497 roster *roster_usr = rosterdata;
481 return roster->name; 498 return roster_usr->name;
499 }
500
501 // buddy_getgroupname()
502 // Returns a pointer on buddy's group name.
503 const char *buddy_getgroupname(gpointer rosterdata)
504 {
505 roster *roster_usr = rosterdata;
506
507 if (roster_usr->type & ROSTER_TYPE_GROUP)
508 return roster_usr->name;
509
510 // This is a user
511 return ((roster*)((GSList*)roster_usr->list)->data)->name;
482 } 512 }
483 513
484 // buddy_getgroup() 514 // buddy_getgroup()
485 // Returns a pointer on buddy's group. 515 // Returns a pointer on buddy's group.
486 gpointer buddy_getgroup(gpointer rosterdata) 516 gpointer buddy_getgroup(gpointer rosterdata)
487 { 517 {
488 roster *roster = rosterdata; 518 roster *roster_usr = rosterdata;
489 519
490 if (roster->type & ROSTER_TYPE_GROUP) 520 if (roster_usr->type & ROSTER_TYPE_GROUP)
491 return rosterdata; 521 return rosterdata;
492 522
493 // This is a user 523 // This is a user
494 return (gpointer)((GSList*)roster->list)->data; 524 return (gpointer)((GSList*)roster_usr->list)->data;
495 } 525 }
496 526
497 guint buddy_gettype(gpointer rosterdata) 527 guint buddy_gettype(gpointer rosterdata)
498 { 528 {
499 roster *roster = rosterdata; 529 roster *roster_usr = rosterdata;
500 return roster->type; 530 return roster_usr->type;
501 } 531 }
502 532
503 enum imstatus buddy_getstatus(gpointer rosterdata) 533 enum imstatus buddy_getstatus(gpointer rosterdata)
504 { 534 {
505 roster *roster = rosterdata; 535 roster *roster_usr = rosterdata;
506 return roster->status; 536 return roster_usr->status;
507 } 537 }
508 538
509 // buddy_setflags() 539 // buddy_setflags()
510 // Set one or several flags to value (TRUE/FALSE) 540 // Set one or several flags to value (TRUE/FALSE)
511 void buddy_setflags(gpointer rosterdata, guint flags, guint value) 541 void buddy_setflags(gpointer rosterdata, guint flags, guint value)
512 { 542 {
513 roster *roster = rosterdata; 543 roster *roster_usr = rosterdata;
514 if (value) 544 if (value)
515 roster->flags |= flags; 545 roster_usr->flags |= flags;
516 else 546 else
517 roster->flags &= ~flags; 547 roster_usr->flags &= ~flags;
518 } 548 }
519 549
520 guint buddy_getflags(gpointer rosterdata) 550 guint buddy_getflags(gpointer rosterdata)
521 { 551 {
522 roster *roster = rosterdata; 552 roster *roster_usr = rosterdata;
523 return roster->flags; 553 return roster_usr->flags;
524 } 554 }
525 555