mcabber/src/roster.c
changeset 625 028c01940490
parent 621 f20c1934a8a7
child 644 68fb0c1dfb15
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)