Mercurial > hg
comparison mcabber/src/hooks.c @ 516:e5008032edb8
Add option 'show_status_in_buffer'
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Mon, 14 Nov 2005 18:16:59 +0100 |
parents | 979eb0fe2969 |
children | 05c0e55c4bb1 |
comparison
equal
deleted
inserted
replaced
515:180f0a6e4ac9 | 516:e5008032edb8 |
---|---|
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; | 148 int buddy_format; |
149 int st_in_buf; | |
150 enum imstatus oldstat; | |
149 char *bn = NULL; | 151 char *bn = NULL; |
150 const char *rn = (resname ? resname : "default"); | 152 const char *rn = (resname ? resname : "default"); |
151 | 153 |
154 st_in_buf = settings_opt_get_int("show_status_in_buffer"); | |
152 buddy_format = settings_opt_get_int("buddy_format"); | 155 buddy_format = settings_opt_get_int("buddy_format"); |
153 if (buddy_format) { | 156 if (buddy_format) { |
154 const char *name = roster_getname(jid); | 157 const char *name = roster_getname(jid); |
155 if (name && strcmp(name, jid)) { | 158 if (name && strcmp(name, jid)) { |
156 if (buddy_format == 1) | 159 if (buddy_format == 1) |
164 | 167 |
165 if (!bn) { | 168 if (!bn) { |
166 bn = g_strdup_printf("<%s/%s>", jid, rn); | 169 bn = g_strdup_printf("<%s/%s>", jid, rn); |
167 } | 170 } |
168 | 171 |
172 oldstat = roster_getstatus(jid, resname); | |
169 scr_LogPrint(LPRINT_LOGNORM, "Buddy status has changed: [%c>%c] %s %s", | 173 scr_LogPrint(LPRINT_LOGNORM, "Buddy status has changed: [%c>%c] %s %s", |
170 imstatus2char[roster_getstatus(jid, resname)], | 174 imstatus2char[oldstat], imstatus2char[status], bn, |
171 imstatus2char[status], bn, | |
172 ((status_msg) ? status_msg : "")); | 175 ((status_msg) ? status_msg : "")); |
173 g_free(bn); | 176 g_free(bn); |
174 | 177 |
175 // Write the status change in the buddy's buffer, only if it already exists | 178 if (st_in_buf == 2 || |
176 if (scr_BuddyBufferExists(jid)) { | 179 (st_in_buf == 1 && (status == offline || oldstat == offline))) { |
177 bn = g_strdup_printf("Buddy status has changed: [%c>%c] %s", | 180 // Write the status change in the buddy's buffer, only if it already exists |
178 imstatus2char[roster_getstatus(jid, resname)], | 181 if (scr_BuddyBufferExists(jid)) { |
179 imstatus2char[status], | 182 bn = g_strdup_printf("Buddy status has changed: [%c>%c] %s", |
180 ((status_msg) ? status_msg : "")); | 183 imstatus2char[oldstat], imstatus2char[status], |
181 scr_WriteIncomingMessage(jid, bn, 0, HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG); | 184 ((status_msg) ? status_msg : "")); |
182 g_free(bn); | 185 scr_WriteIncomingMessage(jid, bn, 0, HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG); |
186 g_free(bn); | |
187 } | |
183 } | 188 } |
184 | 189 |
185 roster_setstatus(jid, rn, prio, status, status_msg, role_none, NULL); | 190 roster_setstatus(jid, rn, prio, status, status_msg, role_none, NULL); |
186 buddylist_build(); | 191 buddylist_build(); |
187 scr_DrawRoster(); | 192 scr_DrawRoster(); |