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)