Mercurial > ~mikael > mcabber > hg
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 |