equal
deleted
inserted
replaced
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) |