Show console messages for room mention and triggers

closes #719
This commit is contained in:
James Booth
2016-01-24 23:47:17 +00:00
parent 6281196809
commit b6e9a09c64
5 changed files with 57 additions and 17 deletions

View File

@@ -301,8 +301,27 @@ cons_show_typing(const char *const barejid)
cons_alert();
}
char*
_room_triggers_to_string(GList *triggers)
{
GString *triggers_str = g_string_new("");
GList *curr = triggers;
while (curr) {
g_string_append_printf(triggers_str, "\"%s\"", (char*)curr->data);
curr = g_list_next(curr);
if (curr) {
g_string_append(triggers_str, ", ");
}
}
char *result = triggers_str->str;
g_string_free(triggers_str, FALSE);
return result;
}
void
cons_show_incoming_room_message(const char *const nick, const char *const room, const int win_index)
cons_show_incoming_room_message(const char *const nick, const char *const room, const int win_index, gboolean mention,
GList *triggers, int unread)
{
ProfWin *const console = wins_get_console();
@@ -311,13 +330,35 @@ cons_show_incoming_room_message(const char *const nick, const char *const room,
ui_index = 0;
}
if (nick) {
win_vprint(console, '-', 0, NULL, 0, THEME_INCOMING, "", "<< room message: %s in %s (win %d)", nick, room, ui_index);
} else {
win_vprint(console, '-', 0, NULL, 0, THEME_INCOMING, "", "<< room message: %s (win %d)", room, ui_index);
}
char *muc_show = prefs_get_string(PREF_CONSOLE_MUC);
cons_alert();
if (g_strcmp0(muc_show, "all") == 0) {
if (mention) {
win_vprint(console, '-', 0, NULL, 0, THEME_INCOMING, "", "<< room mention: %s in %s (win %d)", nick, room, ui_index);
} else if (triggers) {
char *triggers_str = _room_triggers_to_string(triggers);
win_vprint(console, '-', 0, NULL, 0, THEME_INCOMING, "", "<< room trigger %s: %s in %s (win %d)", triggers_str, nick, room, ui_index);
free(triggers_str);
} else {
win_vprint(console, '-', 0, NULL, 0, THEME_INCOMING, "", "<< room message: %s in %s (win %d)", nick, room, ui_index);
}
cons_alert();
} else if (g_strcmp0(muc_show, "first") == 0) {
if (mention) {
win_vprint(console, '-', 0, NULL, 0, THEME_INCOMING, "", "<< room mention: %s in %s (win %d)", nick, room, ui_index);
cons_alert();
} else if (triggers) {
char *triggers_str = _room_triggers_to_string(triggers);
win_vprint(console, '-', 0, NULL, 0, THEME_INCOMING, "", "<< room trigger %s: %s in %s (win %d)", triggers_str, nick, room, ui_index);
free(triggers_str);
cons_alert();
} else if (unread == 0) {
win_vprint(console, '-', 0, NULL, 0, THEME_INCOMING, "", "<< room message: %s (win %d)", room, ui_index);
cons_alert();
}
}
prefs_free_string(muc_show);
}
void

View File

@@ -257,7 +257,8 @@ void cons_show_disco_info(const char *from, GSList *identities, GSList *features
void cons_show_room_invite(const char *const invitor, const char *const room, const char *const reason);
void cons_check_version(gboolean not_available_msg);
void cons_show_typing(const char *const barejid);
void cons_show_incoming_room_message(const char *const nick, const char *const room, const int win_index);
void cons_show_incoming_room_message(const char *const nick, const char *const room, const int win_index,
gboolean mention, GList *triggers, int unread);
void cons_show_incoming_message(const char *const short_from, const int win_index);
void cons_show_incoming_private_message(const char *const nick, const char *const room, const int win_index);
void cons_show_room_invites(GSList *invites);