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();