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 |