Mercurial > hg
comparison mcabber/src/roster.c @ 625:028c01940490
Show presence timestamps in "/info" and "/room whois"
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Sat, 17 Dec 2005 18:39:04 +0100 |
parents | f20c1934a8a7 |
children | 68fb0c1dfb15 |
comparison
equal
deleted
inserted
replaced
624:4e882a19077d | 625:028c01940490 |
---|---|
45 typedef struct { | 45 typedef struct { |
46 gchar *name; | 46 gchar *name; |
47 gchar prio; | 47 gchar prio; |
48 enum imstatus status; | 48 enum imstatus status; |
49 gchar *status_msg; | 49 gchar *status_msg; |
50 time_t status_timestamp; | |
50 enum imrole role; | 51 enum imrole role; |
51 enum imaffiliation affil; | 52 enum imaffiliation affil; |
52 gchar *realjid; /* for chatrooms, if buddy's real jid is known */ | 53 gchar *realjid; /* for chatrooms, if buddy's real jid is known */ |
53 } res; | 54 } res; |
54 | 55 |
402 | 403 |
403 // roster_setstatus() | 404 // roster_setstatus() |
404 // Note: resname, role, affil and realjid are for room members only | 405 // Note: resname, role, affil and realjid are for room members only |
405 void roster_setstatus(const char *jid, const char *resname, gchar prio, | 406 void roster_setstatus(const char *jid, const char *resname, gchar prio, |
406 enum imstatus bstat, const char *status_msg, | 407 enum imstatus bstat, const char *status_msg, |
408 time_t status_time, | |
407 enum imrole role, enum imaffiliation affil, | 409 enum imrole role, enum imaffiliation affil, |
408 const char *realjid) | 410 const char *realjid) |
409 { | 411 { |
410 GSList *sl_user; | 412 GSList *sl_user; |
411 roster *roster_usr; | 413 roster *roster_usr; |
436 g_free((gchar*)p_res->status_msg); | 438 g_free((gchar*)p_res->status_msg); |
437 p_res->status_msg = NULL; | 439 p_res->status_msg = NULL; |
438 } | 440 } |
439 if (status_msg) | 441 if (status_msg) |
440 p_res->status_msg = g_strdup(status_msg); | 442 p_res->status_msg = g_strdup(status_msg); |
443 if (!status_time) | |
444 time(&status_time); | |
445 p_res->status_timestamp = status_time; | |
441 | 446 |
442 p_res->role = role; | 447 p_res->role = role; |
443 p_res->affil = affil; | 448 p_res->affil = affil; |
444 | 449 |
445 if (p_res->realjid) { | 450 if (p_res->realjid) { |
910 if (p_res) | 915 if (p_res) |
911 return p_res->status_msg; | 916 return p_res->status_msg; |
912 return NULL; | 917 return NULL; |
913 } | 918 } |
914 | 919 |
920 time_t buddy_getstatustime(gpointer rosterdata, const char *resname) | |
921 { | |
922 roster *roster_usr = rosterdata; | |
923 res *p_res = get_resource(roster_usr, resname); | |
924 if (p_res) | |
925 return p_res->status_timestamp; | |
926 return 0; | |
927 } | |
928 | |
915 gchar buddy_getresourceprio(gpointer rosterdata, const char *resname) | 929 gchar buddy_getresourceprio(gpointer rosterdata, const char *resname) |
916 { | 930 { |
917 roster *roster_usr = rosterdata; | 931 roster *roster_usr = rosterdata; |
918 res *p_res = get_resource(roster_usr, resname); | 932 res *p_res = get_resource(roster_usr, resname); |
919 if (p_res) | 933 if (p_res) |