# HG changeset patch # User Michal 'vorner' Vaner # Date 1188145454 -7200 # Node ID e42f481036090aba15b32fb5c4a5839056fd21db # Parent 57fe574741228aaa3c4540bde8625a62c6e49c55 Drawing the MUC nicks by a different color (color is hardcoded to red, needs to be changed to something useable) diff -r 57fe57474122 -r e42f48103609 mcabber/src/commands.c --- 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; diff -r 57fe57474122 -r e42f48103609 mcabber/src/hbuf.c --- 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); diff -r 57fe57474122 -r e42f48103609 mcabber/src/hbuf.h --- 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); diff -r 57fe57474122 -r e42f48103609 mcabber/src/histolog.c --- 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); diff -r 57fe57474122 -r e42f48103609 mcabber/src/hooks.c --- 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); } } diff -r 57fe57474122 -r e42f48103609 mcabber/src/jab_iq.c --- 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... diff -r 57fe57474122 -r e42f48103609 mcabber/src/jabglue.c --- 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 { diff -r 57fe57474122 -r e42f48103609 mcabber/src/screen.c --- 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) diff -r 57fe57474122 -r e42f48103609 mcabber/src/screen.h --- 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);