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)