Mercurial > ~mikael > mcabber > hg
comparison mcabber/mcabber/hooks.c @ 2190:ee3a40ffcd8b
New option: 'clear_unread_on_carbon'
If the new 'clear_unread_on_carbon' option is set to 1, clear the unread
message flag for a contact whenever an outgoing carbon copy of a message
sent to that contact is received from another client.
---
mcabber/mcabber/commands.c | 2 +-
mcabber/mcabber/hbuf.h | 1 +
mcabber/mcabber/hooks.c | 17 ++++++++++++-----
mcabber/mcabber/hooks.h | 2 +-
mcabber/mcabber/screen.c | 18 ++++++++++++++----
mcabber/mcabber/xmpp.c | 2 +-
mcabber/mcabberrc.example | 5 +++++
7 files changed, 35 insertions(+), 12 deletions(-)
author | Holger Weiß <holger@zedat.fu-berlin.de> |
---|---|
date | Thu, 23 Jul 2015 23:44:45 +0200 |
parents | 038c4d601011 |
children | 18fa5ecb1ef4 |
comparison
equal
deleted
inserted
replaced
2189:3b91f6a100f5 | 2190:ee3a40ffcd8b |
---|---|
209 | 209 |
210 if (encrypted == ENCRYPTED_PGP) | 210 if (encrypted == ENCRYPTED_PGP) |
211 message_flags |= HBB_PREFIX_PGPCRYPT; | 211 message_flags |= HBB_PREFIX_PGPCRYPT; |
212 else if (encrypted == ENCRYPTED_OTR) | 212 else if (encrypted == ENCRYPTED_OTR) |
213 message_flags |= HBB_PREFIX_OTRCRYPT; | 213 message_flags |= HBB_PREFIX_OTRCRYPT; |
214 | |
215 if (carbon) | |
216 message_flags |= HBB_PREFIX_CARBON; | |
214 | 217 |
215 if (type == LM_MESSAGE_SUB_TYPE_GROUPCHAT) { | 218 if (type == LM_MESSAGE_SUB_TYPE_GROUPCHAT) { |
216 rtype = ROSTER_TYPE_ROOM; | 219 rtype = ROSTER_TYPE_ROOM; |
217 is_groupchat = TRUE; | 220 is_groupchat = TRUE; |
218 log_muc_conf = settings_opt_get_int("log_muc_conf"); | 221 log_muc_conf = settings_opt_get_int("log_muc_conf"); |
445 // hk_message_out() | 448 // hk_message_out() |
446 // nick should be set for private messages in a chat room, and null for | 449 // nick should be set for private messages in a chat room, and null for |
447 // normal messages. | 450 // normal messages. |
448 void hk_message_out(const char *bjid, const char *nick, | 451 void hk_message_out(const char *bjid, const char *nick, |
449 time_t timestamp, const char *msg, | 452 time_t timestamp, const char *msg, |
450 guint encrypted, gpointer xep184) | 453 guint encrypted, gboolean carbon, gpointer xep184) |
451 { | 454 { |
452 char *wmsg = NULL, *bmsg = NULL, *mmsg = NULL; | 455 char *wmsg = NULL, *bmsg = NULL, *mmsg = NULL; |
453 guint cryptflag = 0; | 456 guint message_flags = 0; |
454 | 457 |
455 if (nick) { | 458 if (nick) { |
456 wmsg = bmsg = g_strdup_printf("PRIV#<%s> %s", nick, msg); | 459 wmsg = bmsg = g_strdup_printf("PRIV#<%s> %s", nick, msg); |
457 if (!strncmp(msg, COMMAND_ME, strlen(COMMAND_ME))) { | 460 if (!strncmp(msg, COMMAND_ME, strlen(COMMAND_ME))) { |
458 const char *mynick = roster_getnickname(bjid); | 461 const char *mynick = roster_getnickname(bjid); |
472 | 475 |
473 // Note: the hlog_write should not be called first, because in some | 476 // Note: the hlog_write should not be called first, because in some |
474 // cases scr_write_outgoing_message() will load the history and we'd | 477 // cases scr_write_outgoing_message() will load the history and we'd |
475 // have the message twice... | 478 // have the message twice... |
476 if (encrypted == ENCRYPTED_PGP) | 479 if (encrypted == ENCRYPTED_PGP) |
477 cryptflag = HBB_PREFIX_PGPCRYPT; | 480 message_flags |= HBB_PREFIX_PGPCRYPT; |
478 else if (encrypted == ENCRYPTED_OTR) | 481 else if (encrypted == ENCRYPTED_OTR) |
479 cryptflag = HBB_PREFIX_OTRCRYPT; | 482 message_flags |= HBB_PREFIX_OTRCRYPT; |
480 scr_write_outgoing_message(bjid, wmsg, cryptflag, xep184); | 483 |
484 if (carbon) | |
485 message_flags |= HBB_PREFIX_CARBON; | |
486 | |
487 scr_write_outgoing_message(bjid, wmsg, message_flags, xep184); | |
481 | 488 |
482 // We don't log private messages | 489 // We don't log private messages |
483 if (!nick) | 490 if (!nick) |
484 hlog_write_message(bjid, timestamp, 1, msg); | 491 hlog_write_message(bjid, timestamp, 1, msg); |
485 | 492 |