mirror of
https://github.com/profanity-im/profanity.git
synced 2024-12-04 14:46:46 -05:00
parent
6281196809
commit
b6e9a09c64
@ -223,7 +223,6 @@ prefs_message_get_triggers(const char *const message)
|
||||
for (i = 0; i < len; i++) {
|
||||
char *trigger_lower = g_utf8_strdown(triggers[i], -1);
|
||||
if (g_strrstr(message_lower, trigger_lower)) {
|
||||
g_free(trigger_lower);
|
||||
result = g_list_append(result, strdup(triggers[i]));
|
||||
}
|
||||
g_free(trigger_lower);
|
||||
|
@ -270,13 +270,8 @@ sv_ev_room_message(const char *const room_jid, const char *const nick, const cha
|
||||
// not currently on groupchat window
|
||||
} else {
|
||||
status_bar_new(num);
|
||||
char *muc_show = prefs_get_string(PREF_CONSOLE_MUC);
|
||||
if (g_strcmp0(muc_show, "all") == 0) {
|
||||
cons_show_incoming_room_message(nick, mucwin->roomjid, num);
|
||||
} else if (g_strcmp0(muc_show, "first") == 0 && mucwin->unread == 0) {
|
||||
cons_show_incoming_room_message(NULL, mucwin->roomjid, num);
|
||||
}
|
||||
prefs_free_string(muc_show);
|
||||
|
||||
cons_show_incoming_room_message(nick, mucwin->roomjid, num, mention, triggers, mucwin->unread);
|
||||
|
||||
if (prefs_get_boolean(PREF_FLASH) && (strcmp(nick, mynick) != 0)) {
|
||||
flash();
|
||||
@ -288,6 +283,10 @@ sv_ev_room_message(const char *const room_jid, const char *const nick, const cha
|
||||
}
|
||||
}
|
||||
|
||||
if (triggers) {
|
||||
g_list_free_full(triggers, free);
|
||||
}
|
||||
|
||||
rosterwin_roster();
|
||||
|
||||
// don't notify self messages
|
||||
|
@ -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);
|
||||
|
||||
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
|
||||
|
@ -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);
|
||||
|
@ -394,7 +394,7 @@ 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_room_invites(GSList *invites) {}
|
||||
void cons_show_received_subs(void) {}
|
||||
|
Loading…
Reference in New Issue
Block a user