Mercurial > ~mikael > mcabber > hg
comparison mcabber/src/roster.c @ 572:afc2bd38b15c
Implement affiliations handling, add "/room whois"
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Sat, 03 Dec 2005 23:40:40 +0100 |
parents | 95d6297a9654 |
children | 8b3db0b555a1 |
comparison
equal
deleted
inserted
replaced
571:d63e6cbdc297 | 572:afc2bd38b15c |
---|---|
31 gchar *name; | 31 gchar *name; |
32 gchar prio; | 32 gchar prio; |
33 enum imstatus status; | 33 enum imstatus status; |
34 gchar *status_msg; | 34 gchar *status_msg; |
35 enum imrole role; | 35 enum imrole role; |
36 enum imaffiliation affil; | |
36 gchar *realjid; /* for chatrooms, if buddy's real jid is known */ | 37 gchar *realjid; /* for chatrooms, if buddy's real jid is known */ |
37 } res; | 38 } res; |
38 | 39 |
39 /* This is a private structure type for the roster */ | 40 /* This is a private structure type for the roster */ |
40 | 41 |
370 buddylist_build(); | 371 buddylist_build(); |
371 } | 372 } |
372 } | 373 } |
373 | 374 |
374 // roster_setstatus() | 375 // roster_setstatus() |
375 // Note: resname, role and realjid are for room members only | 376 // Note: resname, role, affil and realjid are for room members only |
376 void roster_setstatus(const char *jid, const char *resname, gchar prio, | 377 void roster_setstatus(const char *jid, const char *resname, gchar prio, |
377 enum imstatus bstat, const char *status_msg, | 378 enum imstatus bstat, const char *status_msg, |
378 enum imrole role, const char *realjid) | 379 enum imrole role, enum imaffiliation affil, |
380 const char *realjid) | |
379 { | 381 { |
380 GSList *sl_user; | 382 GSList *sl_user; |
381 roster *roster_usr; | 383 roster *roster_usr; |
382 res *p_res; | 384 res *p_res; |
383 | 385 |
408 } | 410 } |
409 if (status_msg) | 411 if (status_msg) |
410 p_res->status_msg = g_strdup(status_msg); | 412 p_res->status_msg = g_strdup(status_msg); |
411 | 413 |
412 p_res->role = role; | 414 p_res->role = role; |
415 p_res->affil = affil; | |
413 | 416 |
414 if (p_res->realjid) { | 417 if (p_res->realjid) { |
415 g_free((gchar*)p_res->realjid); | 418 g_free((gchar*)p_res->realjid); |
416 p_res->realjid = NULL; | 419 p_res->realjid = NULL; |
417 } | 420 } |
883 if (p_res) | 886 if (p_res) |
884 return p_res->prio; | 887 return p_res->prio; |
885 return 0; | 888 return 0; |
886 } | 889 } |
887 | 890 |
891 enum imrole buddy_getrole(gpointer rosterdata, const char *resname) | |
892 { | |
893 roster *roster_usr = rosterdata; | |
894 res *p_res = get_resource(roster_usr, resname); | |
895 if (p_res) | |
896 return p_res->role; | |
897 return role_none; | |
898 } | |
899 | |
900 enum imaffiliation buddy_getaffil(gpointer rosterdata, const char *resname) | |
901 { | |
902 roster *roster_usr = rosterdata; | |
903 res *p_res = get_resource(roster_usr, resname); | |
904 if (p_res) | |
905 return p_res->affil; | |
906 return affil_none; | |
907 } | |
908 | |
909 const char *buddy_getrjid(gpointer rosterdata, const char *resname) | |
910 { | |
911 roster *roster_usr = rosterdata; | |
912 res *p_res = get_resource(roster_usr, resname); | |
913 if (p_res) | |
914 return p_res->realjid; | |
915 return NULL; | |
916 } | |
917 | |
888 // buddy_getresources(roster_data) | 918 // buddy_getresources(roster_data) |
889 // Return a singly-linked-list of resource names | 919 // Return a singly-linked-list of resource names |
890 // Note: the caller should free the list (and data) after use | 920 // Note: the caller should free the list (and data) after use |
891 // If roster_data is null, the current buddy is selected | 921 // If roster_data is null, the current buddy is selected |
892 GSList *buddy_getresources(gpointer rosterdata) | 922 GSList *buddy_getresources(gpointer rosterdata) |