--- a/mcabber/mcabberrc.example Mon Aug 20 19:08:31 2007 +0200
+++ b/mcabber/mcabberrc.example Mon Aug 20 19:41:31 2007 +0200
@@ -249,6 +249,8 @@
#
# background: background color of the chat window and the log window
# general: text color in the chat window and the log window
+# info: text color in the chat window for info messages
+# msgin: text color in the chat window for incoming messages
# msgout: text color in the chat window for outgoing messages
# msghl: text color in the chat window for highlighted messages (MUC)
# bgstatus: background color of the status lines
@@ -261,6 +263,8 @@
#
#set color_background = black
#set color_general = white
+#set color_info = white
+#set color_msgin = white
#set color_msgout = cyan
#set color_msghl = yellow
#set color_bgstatus = blue
--- a/mcabber/src/commands.c Mon Aug 20 19:08:31 2007 +0200
+++ b/mcabber/src/commands.c Mon Aug 20 19:41:31 2007 +0200
@@ -521,7 +521,7 @@
gchar tbuf[128];
GString *sbuf;
guint msg_flag = HBB_PREFIX_INFO;
- /* We use the flag prefix_info for the first line, and prefix_none
+ /* We use the flag prefix_info for the first line, and prefix_cont
for the other lines, for better readability */
if (!note)
@@ -533,7 +533,7 @@
// 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);
- msg_flag = HBB_PREFIX_NONE;
+ msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT;
}
// If we have the creation date, display it
@@ -542,7 +542,7 @@
localtime(¬e->cdate));
g_string_printf(sbuf, "Note created %s", tbuf);
scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag);
- msg_flag = HBB_PREFIX_NONE;
+ msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT;
}
// If we have the modification date, display it
// unless it's the same as the creation date
@@ -551,7 +551,7 @@
localtime(¬e->mdate));
g_string_printf(sbuf, "Note modified %s", tbuf);
scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag);
- msg_flag = HBB_PREFIX_NONE;
+ msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT;
}
// Note text
g_string_printf(sbuf, "Note: %s", note->text);
@@ -1402,25 +1402,29 @@
scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
if (rst_msg) {
snprintf(buffer, 4095, "Status message: %s", rst_msg);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_NONE);
+ scr_WriteIncomingMessage(bjid, buffer,
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
}
if (rst_time) {
char tbuf[128];
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_NONE);
+ scr_WriteIncomingMessage(bjid, buffer,
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
}
#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_NONE);
+ scr_WriteIncomingMessage(bjid, buffer,
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
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_NONE);
+ scr_WriteIncomingMessage(bjid, buffer,
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
}
}
#endif
@@ -1500,7 +1504,8 @@
scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
if (rst_msg && style == style_normal) {
snprintf(buffer, 4095, "Status message: %s", rst_msg);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_NONE);
+ scr_WriteIncomingMessage(bjid, buffer,
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
}
}
g_free(p_res->data);
@@ -2264,27 +2269,29 @@
scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
snprintf(buffer, 4095, "Status : [%c] %s", imstatus2char[rstatus],
rst_msg);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_NONE);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
if (rst_time) {
char tbuf[128];
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_NONE);
+ scr_WriteIncomingMessage(bjid, buffer,
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
}
if (realjid) {
snprintf(buffer, 4095, "JID : <%s>", realjid);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_NONE);
+ scr_WriteIncomingMessage(bjid, buffer,
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
}
snprintf(buffer, 4095, "Role : %s", strrole[role]);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_NONE);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
snprintf(buffer, 4095, "Affiliat.: %s", straffil[affil]);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_NONE);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
snprintf(buffer, 4095, "Priority : %d", rprio);
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_NONE);
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
scr_WriteIncomingMessage(bjid, "End of WHOIS", 0, HBB_PREFIX_INFO);
@@ -2345,7 +2352,8 @@
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_NONE);
+ scr_WriteIncomingMessage(NULL, sbuf->str,
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
}
scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE);
--- a/mcabber/src/hbuf.c Mon Aug 20 19:08:31 2007 +0200
+++ b/mcabber/src/hbuf.c Mon Aug 20 19:41:31 2007 +0200
@@ -149,6 +149,7 @@
text = "[ERR:LINE_TOO_LONG]";
hbuf_block_elt->prefix.flags |= HBB_PREFIX_INFO;
}
+
if (hbuf_block_elt->ptr + strlen(text) >= hbuf_block_elt->ptr_end_alloc) {
// Too long for the current allocated bloc, we need another one
if (!maxhbufblocks) {
@@ -327,7 +328,10 @@
} else {
// Propagate highlighting flags
(*array_elt)->flags |= last_persist_prefixflags &
- (HBB_PREFIX_HLIGHT_OUT | HBB_PREFIX_HLIGHT);
+ (HBB_PREFIX_HLIGHT_OUT | HBB_PREFIX_HLIGHT |
+ HBB_PREFIX_INFO | HBB_PREFIX_IN);
+ //Continuation of a message - omit the prefix
+ (*array_elt)->flags |= HBB_PREFIX_CONT;
}
hbuf = g_list_next(hbuf);
--- a/mcabber/src/hbuf.h Mon Aug 20 19:08:31 2007 +0200
+++ b/mcabber/src/hbuf.h Mon Aug 20 19:41:31 2007 +0200
@@ -26,6 +26,7 @@
#define HBB_PREFIX_NONE (1U<<9)
#define HBB_PREFIX_SPECIAL (1U<<10)
#define HBB_PREFIX_PGPCRYPT (1U<<11)
+#define HBB_PREFIX_CONT (1U<<12)
typedef struct {
time_t timestamp;
--- a/mcabber/src/jab_iq.c Mon Aug 20 19:08:31 2007 +0200
+++ b/mcabber/src/jab_iq.c Mon Aug 20 19:41:31 2007 +0200
@@ -354,19 +354,19 @@
p = xmlnode_get_tag_data(ansqry, "name");
if (p) {
buf = g_strdup_printf("Name: %s", p);
- scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_NONE);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
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_NONE);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
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_NONE);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
g_free(buf);
}
return 0;
@@ -419,19 +419,19 @@
p = xmlnode_get_tag_data(ansqry, "utc");
if (p) {
buf = g_strdup_printf("UTC: %s", p);
- scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_NONE);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
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_NONE);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
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_NONE);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
g_free(buf);
}
return 0;
@@ -496,11 +496,12 @@
g_string_append_printf(sbuf, "%02ld:", s/3600L);
s %= 3600L;
g_string_append_printf(sbuf, "%02ld:%02ld", s/60L, s%60L);
- scr_WriteIncomingMessage(bjid, sbuf->str, 0, HBB_PREFIX_NONE);
+ scr_WriteIncomingMessage(bjid, sbuf->str,
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
g_string_free(sbuf, TRUE);
} else {
scr_WriteIncomingMessage(bjid, "No idle time reported.",
- 0, HBB_PREFIX_NONE);
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
}
p = xmlnode_get_data(ansqry);
if (p) {
@@ -540,7 +541,7 @@
(vcard_attrib & vcard_pref ? "[pref]" : ""),
(vcard_attrib ? " " : ""),
text);
- scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_NONE);
+ scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT);
g_free(buf);
}
--- a/mcabber/src/screen.c Mon Aug 20 19:08:31 2007 +0200
+++ b/mcabber/src/screen.c Mon Aug 20 19:41:31 2007 +0200
@@ -182,6 +182,8 @@
"rostersel",
"rosterselmsg",
"rosternewmsg",
+ "info",
+ "msgin",
NULL
};
@@ -251,6 +253,14 @@
init_pair(i+1, ((color) ? FindColor(color) : COLOR_RED),
FindColor(background));
break;
+ case COLOR_INFO:
+ init_pair(i+1, ((color) ? FindColor(color) : COLOR_WHITE),
+ FindColor(background));
+ break;
+ case COLOR_MSGIN:
+ init_pair(i+1, ((color) ? FindColor(color) : COLOR_WHITE),
+ FindColor(background));
+ break;
}
}
}
@@ -673,42 +683,52 @@
wattrset(win_entry->win, get_color(COLOR_MSGOUT));
else if (line->flags & HBB_PREFIX_HLIGHT)
wattrset(win_entry->win, get_color(COLOR_MSGHL));
-
- if (line->timestamp && !(line->flags & HBB_PREFIX_SPECIAL)) {
+ else if (line->flags & HBB_PREFIX_INFO)
+ wattrset(win_entry->win, get_color(COLOR_INFO));
+ else if (line->flags & HBB_PREFIX_IN)
+ wattrset(win_entry->win, get_color(COLOR_MSGIN));
+
+ if (line->timestamp &&
+ !(line->flags & (HBB_PREFIX_SPECIAL|HBB_PREFIX_CONT))) {
strftime(date, 30, "%m-%d %H:%M", localtime(&line->timestamp));
} else
strcpy(date, " ");
- if (line->flags & HBB_PREFIX_INFO) {
- char dir = '*';
- if (line->flags & HBB_PREFIX_IN)
- dir = '<';
- else if (line->flags & HBB_PREFIX_OUT)
- dir = '>';
- wprintw(win_entry->win, "%.11s *%c* ", date, dir);
- } else if (line->flags & HBB_PREFIX_ERR) {
- char dir = '#';
- if (line->flags & HBB_PREFIX_IN)
- dir = '<';
- else if (line->flags & HBB_PREFIX_OUT)
- dir = '>';
- wprintw(win_entry->win, "%.11s #%c# ", date, dir);
- } else if (line->flags & HBB_PREFIX_IN) {
- char cryptflag = line->flags & HBB_PREFIX_PGPCRYPT ? '~' : '=';
- wprintw(win_entry->win, "%.11s <%c= ", date, cryptflag);
- } else if (line->flags & HBB_PREFIX_OUT) {
- char cryptflag = line->flags & HBB_PREFIX_PGPCRYPT ? '~' : '-';
- wprintw(win_entry->win, "%.11s -%c> ", date, cryptflag);
- } else if (line->flags & HBB_PREFIX_SPECIAL) {
- strftime(date, 30, "%m-%d %H:%M:%S", localtime(&line->timestamp));
- wprintw(win_entry->win, "%.14s ", date);
+ if (!(line->flags & HBB_PREFIX_CONT)) {
+ if (line->flags & HBB_PREFIX_INFO) {
+ char dir = '*';
+ if (line->flags & HBB_PREFIX_IN)
+ dir = '<';
+ else if (line->flags & HBB_PREFIX_OUT)
+ dir = '>';
+ wprintw(win_entry->win, "%.11s *%c* ", date, dir);
+ } else if (line->flags & HBB_PREFIX_ERR) {
+ char dir = '#';
+ if (line->flags & HBB_PREFIX_IN)
+ dir = '<';
+ else if (line->flags & HBB_PREFIX_OUT)
+ dir = '>';
+ wprintw(win_entry->win, "%.11s #%c# ", date, dir);
+ } else if (line->flags & HBB_PREFIX_IN) {
+ char cryptflag = line->flags & HBB_PREFIX_PGPCRYPT ? '~' : '=';
+ wprintw(win_entry->win, "%.11s <%c= ", date, cryptflag);
+ } else if (line->flags & HBB_PREFIX_OUT) {
+ char cryptflag = line->flags & HBB_PREFIX_PGPCRYPT ? '~' : '-';
+ wprintw(win_entry->win, "%.11s -%c> ", date, cryptflag);
+ } else if (line->flags & HBB_PREFIX_SPECIAL) {
+ strftime(date, 30, "%m-%d %H:%M:%S", localtime(&line->timestamp));
+ wprintw(win_entry->win, "%.14s ", date);
+ } else {
+ wprintw(win_entry->win, "%.11s ", date);
+ }
} else {
- wprintw(win_entry->win, "%.11s ", date);
+ wprintw(win_entry->win, " " );
}
wprintw(win_entry->win, "%s", line->text); // Display text line
- if (line->flags & HBB_PREFIX_HLIGHT_OUT ||
- line->flags & HBB_PREFIX_HLIGHT)
+ // Return the color back
+ if (line->flags & (HBB_PREFIX_HLIGHT_OUT | HBB_PREFIX_HLIGHT
+ | HBB_PREFIX_INFO | HBB_PREFIX_IN))
wattrset(win_entry->win, get_color(COLOR_GENERAL));
wclrtoeol(win_entry->win);
g_free(line->text);
--- a/mcabber/src/screen.h Mon Aug 20 19:08:31 2007 +0200
+++ b/mcabber/src/screen.h Mon Aug 20 19:41:31 2007 +0200
@@ -46,6 +46,8 @@
COLOR_ROSTERSEL,
COLOR_ROSTERSELNMSG,
COLOR_ROSTERNMSG,
+ COLOR_INFO,
+ COLOR_MSGIN,
COLOR_max
};