Drawing the MUC nicks by a different color
(color is hardcoded to red, needs to be changed to something useable)
--- a/mcabber/src/commands.c Mon Aug 27 13:02:16 2007 +0200
+++ b/mcabber/src/commands.c Sun Aug 26 18:24:14 2007 +0200
@@ -537,7 +537,7 @@
if (!winId) {
// We're writing to the status window, so let's show the jid too.
g_string_printf(sbuf, "Annotation on <%s>", note->jid);
- scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag);
+ scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag, 0);
msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT;
}
@@ -546,7 +546,7 @@
strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S",
localtime(¬e->cdate));
g_string_printf(sbuf, "Note created %s", tbuf);
- scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag);
+ scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag, 0);
msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT;
}
// If we have the modification date, display it
@@ -555,12 +555,12 @@
strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S",
localtime(¬e->mdate));
g_string_printf(sbuf, "Note modified %s", tbuf);
- scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag);
+ scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag, 0);
msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT;
}
// Note text
g_string_printf(sbuf, "Note: %s", note->text);
- scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag);
+ scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag, 0);
g_string_free(sbuf, TRUE);
g_free(note->text);
@@ -624,7 +624,7 @@
display_and_free_note(note, bjid);
} else {
scr_WriteIncomingMessage(bjid, "This item doesn't have a note.", 0,
- HBB_PREFIX_INFO);
+ HBB_PREFIX_INFO, 0);
}
}
}
@@ -1394,17 +1394,17 @@
scr_ShowBuddyWindow();
snprintf(buffer, 4095, "jid: <%s>", bjid);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
if (name) {
snprintf(buffer, 4095, "Name: %s", name);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
}
if (type == ROSTER_TYPE_USER) bstr = "user";
else if (type == ROSTER_TYPE_ROOM) bstr = "chatroom";
else if (type == ROSTER_TYPE_AGENT) bstr = "agent";
snprintf(buffer, 127, "Type: %s", bstr);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
if (esub == sub_both) bstr = "both";
else if (esub & sub_from) bstr = "from";
@@ -1413,7 +1413,7 @@
snprintf(buffer, 64, "Subscription: %s", bstr);
if (esub & sub_pending)
strcat(buffer, " (pending)");
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
resources = buddy_getresources(bud);
if (!resources && type == ROSTER_TYPE_USER) {
@@ -1421,7 +1421,7 @@
const char *rst_msg = buddy_getstatusmsg(bud, "");
if (rst_msg) {
snprintf(buffer, 4095, "Last status message: %s", rst_msg);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
}
}
for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) {
@@ -1439,11 +1439,11 @@
snprintf(buffer, 4095, "Resource: [%c] (%d) %s", imstatus2char[rstatus],
rprio, (char*)p_res->data);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
if (rst_msg) {
snprintf(buffer, 4095, "Status message: %s", rst_msg);
scr_WriteIncomingMessage(bjid, buffer,
- 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
}
if (rst_time) {
char tbuf[128];
@@ -1451,20 +1451,20 @@
strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", localtime(&rst_time));
snprintf(buffer, 127, "Status timestamp: %s", tbuf);
scr_WriteIncomingMessage(bjid, buffer,
- 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
}
#ifdef HAVE_GPGME
if (rpgp && rpgp->sign_keyid) {
snprintf(buffer, 4095, "PGP key id: %s", rpgp->sign_keyid);
scr_WriteIncomingMessage(bjid, buffer,
- 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
if (rpgp->last_sigsum) {
gpgme_sigsum_t ss = rpgp->last_sigsum;
snprintf(buffer, 4095, "Last PGP signature: %s",
(ss & GPGME_SIGSUM_GREEN ? "good":
(ss & GPGME_SIGSUM_RED ? "bad" : "unknown")));
scr_WriteIncomingMessage(bjid, buffer,
- 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
}
}
#endif
@@ -1490,7 +1490,7 @@
g_free(note->jid);
g_free(note);
scr_WriteIncomingMessage(bjid, "(This item has an annotation)", 0,
- HBB_PREFIX_INFO);
+ HBB_PREFIX_INFO, 0);
}
}
}
@@ -1522,7 +1522,7 @@
buffer = g_new(char, 4096);
strncpy(buffer, "Room members:", 127);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
resources = buddy_getresources(bud);
for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) {
@@ -1536,16 +1536,16 @@
snprintf(buffer, 4095, "[%c] %s%s%s", imstatus2char[rstatus],
(char*)p_res->data,
rst_msg ? " -- " : "", rst_msg ? rst_msg : "");
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
} else {
// (Style "normal" or "quiet")
snprintf(buffer, 4095, "[%c] %s", imstatus2char[rstatus],
(char*)p_res->data);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
if (rst_msg && style == style_normal) {
snprintf(buffer, 4095, "Status message: %s", rst_msg);
scr_WriteIncomingMessage(bjid, buffer,
- 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
}
}
g_free(p_res->data);
@@ -2306,10 +2306,10 @@
buffer = g_new(char, 4096);
snprintf(buffer, 4095, "Whois [%s]", nick);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
snprintf(buffer, 4095, "Status : [%c] %s", imstatus2char[rstatus],
rst_msg);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
if (rst_time) {
char tbuf[128];
@@ -2317,23 +2317,23 @@
strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", localtime(&rst_time));
snprintf(buffer, 127, "Timestamp: %s", tbuf);
scr_WriteIncomingMessage(bjid, buffer,
- 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
}
if (realjid) {
snprintf(buffer, 4095, "JID : <%s>", realjid);
scr_WriteIncomingMessage(bjid, buffer,
- 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
}
snprintf(buffer, 4095, "Role : %s", strrole[role]);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
snprintf(buffer, 4095, "Affiliat.: %s", straffil[affil]);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
snprintf(buffer, 4095, "Priority : %d", rprio);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
-
- scr_WriteIncomingMessage(bjid, "End of WHOIS", 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
+
+ scr_WriteIncomingMessage(bjid, "End of WHOIS", 0, HBB_PREFIX_INFO, 0);
g_free(buffer);
g_free(nick);
@@ -2388,12 +2388,12 @@
sbuf = g_string_new("");
- scr_WriteIncomingMessage(NULL, "List of MUC bookmarks:", 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(NULL, "List of MUC bookmarks:", 0, HBB_PREFIX_INFO, 0);
for (bmp = bm; bmp; bmp = g_slist_next(bmp)) {
g_string_printf(sbuf, "<%s>", (char*)bmp->data);
scr_WriteIncomingMessage(NULL, sbuf->str,
- 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
}
scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE);
@@ -2820,16 +2820,16 @@
if (settings_pgp_getkeyid(fjid)) {
g_string_printf(sbuf, "PGP Encryption key id: %s",
settings_pgp_getkeyid(fjid));
- scr_WriteIncomingMessage(fjid, sbuf->str, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(fjid, sbuf->str, 0, HBB_PREFIX_INFO, 0);
}
disabled = settings_pgp_getdisabled(fjid);
g_string_printf(sbuf, "PGP encryption is %s",
(disabled ? "disabled" : "enabled"));
- scr_WriteIncomingMessage(fjid, sbuf->str, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(fjid, sbuf->str, 0, HBB_PREFIX_INFO, 0);
if (!disabled && settings_pgp_getforce(fjid)) {
scr_WriteIncomingMessage(fjid,
"Encryption enforced (no negotiation)",
- 0, HBB_PREFIX_INFO);
+ 0, HBB_PREFIX_INFO, 0);
}
g_string_free(sbuf, TRUE);
break;
--- a/mcabber/src/hbuf.c Mon Aug 27 13:02:16 2007 +0200
+++ b/mcabber/src/hbuf.c Sun Aug 26 18:24:14 2007 +0200
@@ -38,6 +38,7 @@
// (for ex. when HBB_FLAG_PERSISTENT is set).
struct { // hbuf_line_info
time_t timestamp;
+ unsigned mucnicklen;
guint flags;
} prefix;
} hbuf_block;
@@ -117,7 +118,8 @@
// should be expanded before.
// Note 2: width does not include the ending \0.
void hbuf_add_line(GList **p_hbuf, const char *text, time_t timestamp,
- guint prefix_flags, guint width, guint maxhbufblocks)
+ guint prefix_flags, guint width, guint maxhbufblocks,
+ unsigned mucnicklen)
{
GList *curr_elt;
char *line;
@@ -128,6 +130,7 @@
hbuf_block_elt = g_new0(hbuf_block, 1);
hbuf_block_elt->prefix.timestamp = timestamp;
hbuf_block_elt->prefix.flags = prefix_flags;
+ hbuf_block_elt->prefix.mucnicklen = mucnicklen;
if (!*p_hbuf) {
hbuf_block_elt->ptr = g_new(char, HBB_BLOCKSIZE);
hbuf_block_elt->flags = HBB_FLAG_ALLOC | HBB_FLAG_PERSISTENT;
@@ -319,9 +322,10 @@
blk = (hbuf_block*)(hbuf->data);
maxlen = blk->ptr_end - blk->ptr;
*array_elt = (hbb_line*)g_new(hbb_line, 1);
- (*array_elt)->timestamp = blk->prefix.timestamp;
- (*array_elt)->flags = blk->prefix.flags;
- (*array_elt)->text = g_strndup(blk->ptr, maxlen);
+ (*array_elt)->timestamp = blk->prefix.timestamp;
+ (*array_elt)->flags = blk->prefix.flags;
+ (*array_elt)->mucnicklen = blk->prefix.mucnicklen;
+ (*array_elt)->text = g_strndup(blk->ptr, maxlen);
if ((blk->flags & HBB_FLAG_PERSISTENT) && blk->prefix.flags) {
last_persist_prefixflags = blk->prefix.flags;
@@ -332,6 +336,7 @@
HBB_PREFIX_INFO | HBB_PREFIX_IN);
//Continuation of a message - omit the prefix
(*array_elt)->flags |= HBB_PREFIX_CONT;
+ (*array_elt)->mucnicklen = 0;//The nick is in the first one
}
hbuf = g_list_next(hbuf);
--- a/mcabber/src/hbuf.h Mon Aug 27 13:02:16 2007 +0200
+++ b/mcabber/src/hbuf.h Sun Aug 26 18:24:14 2007 +0200
@@ -31,11 +31,13 @@
typedef struct {
time_t timestamp;
guint flags;
+ unsigned mucnicklen;
char *text;
} hbb_line;
void hbuf_add_line(GList **p_hbuf, const char *text, time_t timestamp,
- guint prefix_flags, guint width, guint maxhbufblocks);
+ guint prefix_flags, guint width, guint maxhbufblocks,
+ unsigned mucnicklen);
void hbuf_free(GList **p_hbuf);
void hbuf_rebuild(GList **p_hbuf, unsigned int width);
GList *hbuf_previous_persistent(GList *l_line);
--- a/mcabber/src/histolog.c Mon Aug 27 13:02:16 2007 +0200
+++ b/mcabber/src/histolog.c Sun Aug 26 18:24:14 2007 +0200
@@ -289,7 +289,7 @@
if (converted) {
xtext = ut_expand_tabs(converted); // Expand tabs
hbuf_add_line(p_buddyhbuf, xtext, timestamp, prefix_flags, width,
- max_num_of_blocks);
+ max_num_of_blocks, 0);
if (xtext != converted)
g_free(xtext);
g_free(converted);
--- a/mcabber/src/hooks.c Mon Aug 27 13:02:16 2007 +0200
+++ b/mcabber/src/hooks.c Sun Aug 26 18:24:14 2007 +0200
@@ -49,6 +49,7 @@
guint rtype = ROSTER_TYPE_USER;
char *wmsg = NULL, *bmsg = NULL, *mmsg = NULL;
GSList *roster_usr;
+ unsigned mucnicklen = 0;
if (encrypted)
message_flags |= HBB_PREFIX_PGPCRYPT;
@@ -63,6 +64,7 @@
wmsg = bmsg = g_strdup_printf("~ %s", msg);
} else {
wmsg = bmsg = g_strdup_printf("<%s> %s", resname, msg);
+ mucnicklen = strlen(resname) + 2;
if (!strncmp(msg, COMMAND_ME, strlen(COMMAND_ME)))
wmsg = mmsg = g_strdup_printf("*%s %s", resname, msg+4);
}
@@ -157,7 +159,7 @@
// Note: the hlog_write should not be called first, because in some
// cases scr_WriteIncomingMessage() will load the history and we'd
// have the message twice...
- scr_WriteIncomingMessage(bjid, wmsg, timestamp, message_flags);
+ scr_WriteIncomingMessage(bjid, wmsg, timestamp, message_flags, mucnicklen);
// We don't log the modified message, but the original one
if (wmsg == mmsg)
@@ -306,7 +308,7 @@
imstatus2char[oldstat], imstatus2char[status],
((status_msg) ? status_msg : ""));
scr_WriteIncomingMessage(bjid, bn, timestamp,
- HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG);
+ HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG, 0);
g_free(bn);
}
}
--- a/mcabber/src/jab_iq.c Mon Aug 27 13:02:16 2007 +0200
+++ b/mcabber/src/jab_iq.c Sun Aug 26 18:24:14 2007 +0200
@@ -347,26 +347,26 @@
p = strchr(bjid, JID_RESOURCE_SEPARATOR);
if (p) *p = '\0';
- scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO, 0);
g_free(buf);
// Get result data...
p = xmlnode_get_tag_data(ansqry, "name");
if (p) {
buf = g_strdup_printf("Name: %s", p);
- scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
g_free(buf);
}
p = xmlnode_get_tag_data(ansqry, "version");
if (p) {
buf = g_strdup_printf("Version: %s", p);
- scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
g_free(buf);
}
p = xmlnode_get_tag_data(ansqry, "os");
if (p) {
buf = g_strdup_printf("OS: %s", p);
- scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
g_free(buf);
}
return 0;
@@ -412,26 +412,26 @@
p = strchr(bjid, JID_RESOURCE_SEPARATOR);
if (p) *p = '\0';
- scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO, 0);
g_free(buf);
// Get result data...
p = xmlnode_get_tag_data(ansqry, "utc");
if (p) {
buf = g_strdup_printf("UTC: %s", p);
- scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
g_free(buf);
}
p = xmlnode_get_tag_data(ansqry, "tz");
if (p) {
buf = g_strdup_printf("TZ: %s", p);
- scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
g_free(buf);
}
p = xmlnode_get_tag_data(ansqry, "display");
if (p) {
buf = g_strdup_printf("Time: %s", p);
- scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
g_free(buf);
}
return 0;
@@ -477,7 +477,7 @@
p = strchr(bjid, JID_RESOURCE_SEPARATOR);
if (p) *p = '\0';
- scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO, 0);
g_free(buf);
// Get result data...
@@ -497,16 +497,16 @@
s %= 3600L;
g_string_append_printf(sbuf, "%02ld:%02ld", s/60L, s%60L);
scr_WriteIncomingMessage(bjid, sbuf->str,
- 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
g_string_free(sbuf, TRUE);
} else {
scr_WriteIncomingMessage(bjid, "No idle time reported.",
- 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
}
p = xmlnode_get_data(ansqry);
if (p) {
buf = g_strdup_printf("Status message: %s", p);
- scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO, 0);
g_free(buf);
}
return 0;
@@ -541,7 +541,7 @@
(vcard_attrib & vcard_pref ? "[pref]" : ""),
(vcard_attrib ? " " : ""),
text);
- scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
g_free(buf);
}
@@ -665,7 +665,7 @@
p = strchr(bjid, JID_RESOURCE_SEPARATOR);
if (p) *p = '\0';
- scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO, 0);
g_free(buf);
// Get result data...
--- a/mcabber/src/jabglue.c Mon Aug 27 13:02:16 2007 +0200
+++ b/mcabber/src/jabglue.c Sun Aug 26 18:24:14 2007 +0200
@@ -1645,7 +1645,7 @@
res_pgpdata->last_sigsum = sigsum;
if (sigsum & GPGME_SIGSUM_RED) {
buf = g_strdup_printf("Bad signature from <%s/%s>", barejid, rname);
- scr_WriteIncomingMessage(barejid, buf, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(barejid, buf, 0, HBB_PREFIX_INFO, 0);
scr_LogPrint(LPRINT_LOGNORM, "%s", buf);
g_free(buf);
}
@@ -1654,7 +1654,7 @@
if (keys_mismatch(key, expectedkey)) {
buf = g_strdup_printf("Warning: The KeyId from <%s/%s> doesn't match "
"the key you set up", barejid, rname);
- scr_WriteIncomingMessage(barejid, buf, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(barejid, buf, 0, HBB_PREFIX_INFO, 0);
scr_LogPrint(LPRINT_LOGNORM, "%s", buf);
g_free(buf);
}
@@ -1698,7 +1698,7 @@
mbuf = g_strdup_printf("Unexpected groupchat packet!");
scr_LogPrint(LPRINT_LOGNORM, "%s", mbuf);
- scr_WriteIncomingMessage(bjid, mbuf, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(bjid, mbuf, 0, HBB_PREFIX_INFO, 0);
g_free(mbuf);
// Send back an unavailable packet
@@ -1988,7 +1988,7 @@
mbuf = g_strdup_printf("Unexpected groupchat packet!");
scr_LogPrint(LPRINT_LOGNORM, "%s", mbuf);
- scr_WriteIncomingMessage(roomjid, mbuf, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(roomjid, mbuf, 0, HBB_PREFIX_INFO, 0);
g_free(mbuf);
// Send back an unavailable packet
jb_setstatus(offline, roomjid, "", TRUE);
@@ -2013,7 +2013,7 @@
if (statuscode == 303 && mbnick) {
mbuf = g_strdup_printf("%s is now known as %s", rname, mbnick);
scr_WriteIncomingMessage(roomjid, mbuf, usttime,
- HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG);
+ HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG, 0);
if (log_muc_conf)
hlog_write_message(roomjid, 0, FALSE, mbuf);
g_free(mbuf);
@@ -2098,7 +2098,7 @@
if (!we_left && settings_opt_get_int("muc_flag_joins") != 2)
msgflags |= HBB_PREFIX_NOFLAG;
- scr_WriteIncomingMessage(roomjid, mbuf, usttime, msgflags);
+ scr_WriteIncomingMessage(roomjid, mbuf, usttime, msgflags, 0);
if (log_muc_conf)
hlog_write_message(roomjid, 0, FALSE, mbuf);
@@ -2131,7 +2131,7 @@
// Note: the usttime timestamp is related to the other member,
// so we use 0 here.
scr_WriteIncomingMessage(roomjid, mbuf, 0,
- HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG);
+ HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG, 0);
if (log_muc_conf)
hlog_write_message(roomjid, 0, FALSE, mbuf);
g_free(mbuf);
@@ -2150,7 +2150,7 @@
msgflags = HBB_PREFIX_INFO;
if (!settings_opt_get_int("muc_flag_joins"))
msgflags |= HBB_PREFIX_NOFLAG;
- scr_WriteIncomingMessage(roomjid, mbuf, usttime, msgflags);
+ scr_WriteIncomingMessage(roomjid, mbuf, usttime, msgflags, 0);
if (log_muc_conf)
hlog_write_message(roomjid, 0, FALSE, mbuf);
g_free(mbuf);
@@ -2276,7 +2276,7 @@
}
barejid = jidtodisp(from);
- scr_WriteIncomingMessage(barejid, sbuf->str, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(barejid, sbuf->str, 0, HBB_PREFIX_INFO, 0);
scr_LogPrint(LPRINT_LOGNORM, "%s", sbuf->str);
evn = evs_new(EVS_TYPE_INVITATION, EVS_MAX_TIMEOUT);
@@ -2293,7 +2293,7 @@
} else {
g_string_printf(sbuf, "Unable to create a new event!");
}
- scr_WriteIncomingMessage(barejid, sbuf->str, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(barejid, sbuf->str, 0, HBB_PREFIX_INFO, 0);
scr_LogPrint(LPRINT_LOGNORM, "%s", sbuf->str);
g_string_free(sbuf, TRUE);
@@ -2368,7 +2368,7 @@
mbuf = g_strdup_printf("%s has set the topic to: %s", r, subj);
}
scr_WriteIncomingMessage(s, mbuf, 0,
- HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG);
+ HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG, 0);
if (settings_opt_get_int("log_muc_conf"))
hlog_write_message(s, 0, FALSE, mbuf);
g_free(s);
@@ -2575,7 +2575,7 @@
jb_delbuddy(barejid);
}
}
- scr_WriteIncomingMessage(barejid, buf, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(barejid, buf, 0, HBB_PREFIX_INFO, 0);
scr_LogPrint(LPRINT_LOGNORM, "%s", buf);
g_free(buf);
return 0;
@@ -2672,13 +2672,13 @@
buf = g_strdup_printf("<%s> wants to subscribe to your presence updates",
from);
- scr_WriteIncomingMessage(r, buf, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(r, buf, 0, HBB_PREFIX_INFO, 0);
scr_LogPrint(LPRINT_LOGNORM, "%s", buf);
g_free(buf);
if (msg) {
buf = g_strdup_printf("<%s> said: %s", from, msg);
- scr_WriteIncomingMessage(r, buf, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(r, buf, 0, HBB_PREFIX_INFO, 0);
replace_nl_with_dots(buf);
scr_LogPrint(LPRINT_LOGNORM, "%s", buf);
g_free(buf);
@@ -2695,7 +2695,7 @@
} else {
buf = g_strdup_printf("Unable to create a new event!");
}
- scr_WriteIncomingMessage(r, buf, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(r, buf, 0, HBB_PREFIX_INFO, 0);
scr_LogPrint(LPRINT_LOGNORM, "%s", buf);
g_free(buf);
} else if (!strcmp(type, "unsubscribe")) {
@@ -2703,14 +2703,14 @@
jb_subscr_cancel_auth(from);
buf = g_strdup_printf("<%s> is unsubscribing from your "
"presence updates", from);
- scr_WriteIncomingMessage(r, buf, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(r, buf, 0, HBB_PREFIX_INFO, 0);
scr_LogPrint(LPRINT_LOGNORM, "%s", buf);
g_free(buf);
} else if (!strcmp(type, "subscribed")) {
/* The sender has allowed us to receive their presence */
buf = g_strdup_printf("<%s> has allowed you to receive their "
"presence updates", from);
- scr_WriteIncomingMessage(r, buf, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(r, buf, 0, HBB_PREFIX_INFO, 0);
scr_LogPrint(LPRINT_LOGNORM, "%s", buf);
g_free(buf);
} else if (!strcmp(type, "unsubscribed")) {
@@ -2720,7 +2720,7 @@
update_roster = TRUE;
buf = g_strdup_printf("<%s> has cancelled your subscription to "
"their presence updates", from);
- scr_WriteIncomingMessage(r, buf, 0, HBB_PREFIX_INFO);
+ scr_WriteIncomingMessage(r, buf, 0, HBB_PREFIX_INFO, 0);
scr_LogPrint(LPRINT_LOGNORM, "%s", buf);
g_free(buf);
} else {
--- a/mcabber/src/screen.c Mon Aug 27 13:02:16 2007 +0200
+++ b/mcabber/src/screen.c Sun Aug 26 18:24:14 2007 +0200
@@ -135,7 +135,8 @@
static void add_keyseq(char *seqstr, guint mkeycode, gint value);
void scr_WriteInWindow(const char *winId, const char *text, time_t timestamp,
- unsigned int prefix_flags, int force_show);
+ unsigned int prefix_flags, int force_show,
+ unsigned mucnicklen);
#ifdef HAVE_ASPELL_H
#define ASPELLBADCHAR 5
@@ -712,12 +713,12 @@
wprintw(logWnd, "\n%s", buffer_locale);
update_panels();
scr_WriteInWindow(NULL, buf_specialwindow, timestamp,
- HBB_PREFIX_SPECIAL, FALSE);
+ HBB_PREFIX_SPECIAL, FALSE, 0);
} else {
printf("%s\n", buffer_locale);
// ncurses are not initialized yet, so we call directly hbuf routine
hbuf_add_line(&statushbuf, buf_specialwindow, timestamp,
- HBB_PREFIX_SPECIAL, 0, 0);
+ HBB_PREFIX_SPECIAL, 0, 0, 0);
}
g_free(convbuf1);
@@ -899,12 +900,26 @@
// Make sure we are at the right position
wmove(win_entry->win, n, getprefixwidth()-1);
wprintw(win_entry->win, "%s", line->text); // Display text line
+ wclrtoeol(win_entry->win);
+
+ //The MUC nick - overwrite with propper color
+ if (line->mucnicklen) {
+ //Store the char after the nick
+ char tmp = line->text[line->mucnicklen];
+ //TODO choose the color in proper way
+ wattrset(win_entry->win, get_color(COLOR_RED_BOLD_FG));
+ wmove(win_entry->win, n, getprefixwidth()-1);
+ //Terminate the string after the nick
+ line->text[line->mucnicklen] = '\0';
+ wprintw(win_entry->win, "%s", line->text);
+ //Return the char
+ line->text[line->mucnicklen] = tmp;
+ }
// Return the color back
- if (line->flags & (HBB_PREFIX_HLIGHT_OUT | HBB_PREFIX_HLIGHT
- | HBB_PREFIX_INFO | HBB_PREFIX_IN))
+ if ((line->flags & (HBB_PREFIX_HLIGHT_OUT | HBB_PREFIX_HLIGHT
+ | HBB_PREFIX_INFO | HBB_PREFIX_IN)) || (line->mucnicklen))
wattrset(win_entry->win, get_color(COLOR_GENERAL));
- wclrtoeol(win_entry->win);
g_free(line->text);
g_free(line);
} else {
@@ -1006,7 +1021,8 @@
// Lines are splitted when they are too long to fit in the chat window.
// If this window doesn't exist, it is created.
void scr_WriteInWindow(const char *winId, const char *text, time_t timestamp,
- unsigned int prefix_flags, int force_show)
+ unsigned int prefix_flags, int force_show,
+ unsigned mucnicklen)
{
winbuf *win_entry;
char *text_locale;
@@ -1043,7 +1059,7 @@
text_locale = from_utf8(text);
hbuf_add_line(&win_entry->bd->hbuf, text_locale, timestamp, prefix_flags,
- maxX - Roster_Width - getprefixwidth(), num_history_blocks);
+ maxX - Roster_Width - getprefixwidth(), num_history_blocks, mucnicklen);
g_free(text_locale);
if (win_entry->bd->cleared) {
@@ -1694,7 +1710,8 @@
}
inline void scr_WriteMessage(const char *bjid, const char *text,
- time_t timestamp, guint prefix_flags)
+ time_t timestamp, guint prefix_flags,
+ unsigned mucnicklen)
{
char *xtext;
@@ -1702,7 +1719,7 @@
xtext = ut_expand_tabs(text); // Expand tabs and filter out some chars
- scr_WriteInWindow(bjid, xtext, timestamp, prefix_flags, FALSE);
+ scr_WriteInWindow(bjid, xtext, timestamp, prefix_flags, FALSE, mucnicklen);
if (xtext != (char*)text)
g_free(xtext);
@@ -1710,14 +1727,14 @@
// If prefix is NULL, HBB_PREFIX_IN is supposed.
void scr_WriteIncomingMessage(const char *jidfrom, const char *text,
- time_t timestamp, guint prefix)
+ time_t timestamp, guint prefix, unsigned mucnicklen)
{
if (!(prefix &
~HBB_PREFIX_NOFLAG & ~HBB_PREFIX_HLIGHT & ~HBB_PREFIX_HLIGHT_OUT &
~HBB_PREFIX_PGPCRYPT))
prefix |= HBB_PREFIX_IN;
- scr_WriteMessage(jidfrom, text, timestamp, prefix);
+ scr_WriteMessage(jidfrom, text, timestamp, prefix, mucnicklen);
}
void scr_WriteOutgoingMessage(const char *jidto, const char *text, guint prefix)
@@ -1726,7 +1743,7 @@
roster_elt = roster_find(jidto, jidsearch,
ROSTER_TYPE_USER|ROSTER_TYPE_AGENT|ROSTER_TYPE_ROOM);
- scr_WriteMessage(jidto, text, 0, prefix|HBB_PREFIX_OUT|HBB_PREFIX_HLIGHT_OUT);
+ scr_WriteMessage(jidto, text, 0, prefix|HBB_PREFIX_OUT|HBB_PREFIX_HLIGHT_OUT, 0);
// Show jidto's buffer unless the buddy is not in the buddylist
if (roster_elt && g_list_position(buddylist, roster_elt->data) != -1)
--- a/mcabber/src/screen.h Mon Aug 27 13:02:16 2007 +0200
+++ b/mcabber/src/screen.h Sun Aug 26 18:24:14 2007 +0200
@@ -106,7 +106,8 @@
void scr_UpdateChatStatus(int forceupdate);
void scr_RosterVisibility(int status);
void scr_WriteIncomingMessage(const char *jidfrom, const char *text,
- time_t timestamp, guint prefix);
+ time_t timestamp, guint prefix,
+ unsigned mucnicklen);
void scr_WriteOutgoingMessage(const char *jidto, const char *text,
guint prefix);
void scr_ShowBuddyWindow(void);