mcabber/src/hooks.c
changeset 510 6c3cd3aa4a91
parent 489 21ab22a60bcb
child 514 979eb0fe2969
equal deleted inserted replaced
509:cd52ddef5ce1 510:6c3cd3aa4a91
   143 
   143 
   144 inline void hk_statuschange(const char *jid, const char *resname, gchar prio,
   144 inline void hk_statuschange(const char *jid, const char *resname, gchar prio,
   145                             time_t timestamp, enum imstatus status,
   145                             time_t timestamp, enum imstatus status,
   146                             const char *status_msg)
   146                             const char *status_msg)
   147 {
   147 {
       
   148   int buddy_format;
       
   149   char *bn = NULL;
   148   const char *rn = (resname ? resname : "default");
   150   const char *rn = (resname ? resname : "default");
   149   scr_LogPrint(LPRINT_LOGNORM, "Buddy status has changed: [%c>%c] <%s/%s> %s",
   151 
       
   152   buddy_format = settings_opt_get_int("buddy_format");
       
   153   if (buddy_format) {
       
   154     const char *name = roster_getname(jid);
       
   155     if (name && strcmp(name, jid)) {
       
   156       if (buddy_format == 1)
       
   157         bn = g_strdup_printf("%s <%s/%s>", name, jid, rn);
       
   158       else if (buddy_format == 2)
       
   159         bn = g_strdup_printf("%s/%s", name, rn);
       
   160       else if (buddy_format == 3)
       
   161         bn = g_strdup_printf("%s", name);
       
   162     }
       
   163   }
       
   164 
       
   165   if (!bn) {
       
   166     bn = g_strdup_printf("<%s/%s>", jid, rn);
       
   167   }
       
   168 
       
   169   scr_LogPrint(LPRINT_LOGNORM, "Buddy status has changed: [%c>%c] %s %s",
   150                imstatus2char[roster_getstatus(jid, resname)],
   170                imstatus2char[roster_getstatus(jid, resname)],
   151                imstatus2char[status], jid, rn,
   171                imstatus2char[status], bn,
   152                ((status_msg) ? status_msg : ""));
   172                ((status_msg) ? status_msg : ""));
       
   173   g_free(bn);
   153   roster_setstatus(jid, rn, prio, status, status_msg, role_none, NULL);
   174   roster_setstatus(jid, rn, prio, status, status_msg, role_none, NULL);
   154   buddylist_build();
   175   buddylist_build();
   155   scr_DrawRoster();
   176   scr_DrawRoster();
   156   hlog_write_status(jid, 0, status, status_msg);
   177   hlog_write_status(jid, 0, status, status_msg);
   157   // External command
   178   // External command