diff options
author | James Booth <boothj5@gmail.com> | 2015-11-24 23:03:52 +0000 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2015-11-24 23:03:52 +0000 |
commit | 9c8b137a515e90f55606177c75847493fa02f556 (patch) | |
tree | 2bd84de203d85679dc908d57c2dfd758e19b174d /src/ui | |
parent | 00a735ece58421a6d4d3f7a161684b033aea828a (diff) | |
download | profani-tty-9c8b137a515e90f55606177c75847493fa02f556.tar.gz |
Tidy regular chat and room notifications
Diffstat (limited to 'src/ui')
-rw-r--r-- | src/ui/chatwin.c | 28 | ||||
-rw-r--r-- | src/ui/mucwin.c | 43 | ||||
-rw-r--r-- | src/ui/notifier.c | 35 | ||||
-rw-r--r-- | src/ui/privwin.c | 28 | ||||
-rw-r--r-- | src/ui/ui.h | 6 |
5 files changed, 82 insertions, 58 deletions
diff --git a/src/ui/chatwin.c b/src/ui/chatwin.c index c34cc1fc..2efe82e1 100644 --- a/src/ui/chatwin.c +++ b/src/ui/chatwin.c @@ -274,8 +274,32 @@ chatwin_incoming_msg(ProfChatWin *chatwin, const char *const resource, const cha beep(); } - if (prefs_get_boolean(PREF_NOTIFY_MESSAGE)) { - notify_message(window, display_name, message); + if (!prefs_get_boolean(PREF_NOTIFY_MESSAGE)) { + free(display_name); + return; + } + + gboolean notify = FALSE; + + gboolean is_current = wins_is_current(window); + if (!is_current || (is_current && prefs_get_boolean(PREF_NOTIFY_MESSAGE_CURRENT)) ) { + notify = TRUE; + } + + if (!notify) { + free(display_name); + return; + } + + int ui_index = num; + if (ui_index == 10) { + ui_index = 0; + } + + if (prefs_get_boolean(PREF_NOTIFY_MESSAGE_TEXT)) { + notify_message(display_name, ui_index, message); + } else { + notify_message(display_name, ui_index, NULL); } free(display_name); diff --git a/src/ui/mucwin.c b/src/ui/mucwin.c index 58fef4d1..aa825d16 100644 --- a/src/ui/mucwin.c +++ b/src/ui/mucwin.c @@ -390,11 +390,6 @@ mucwin_message(ProfMucWin *mucwin, const char *const nick, const char *const mes mucwin->unread++; } - int ui_index = num; - if (ui_index == 10) { - ui_index = 0; - } - // don't notify self messages if (strcmp(nick, my_nick) == 0) { return; @@ -404,34 +399,24 @@ mucwin_message(ProfMucWin *mucwin, const char *const nick, const char *const mes beep(); } - gboolean notify = FALSE; - char *room_setting = prefs_get_string(PREF_NOTIFY_ROOM); - if (g_strcmp0(room_setting, "on") == 0) { - notify = TRUE; + gboolean is_current = wins_is_current(window); + gboolean notify = prefs_get_notify_room(is_current, my_nick, message); + if (!notify) { + return; } - if (g_strcmp0(room_setting, "mention") == 0) { - char *message_lower = g_utf8_strdown(message, -1); - char *nick_lower = g_utf8_strdown(nick, -1); - if (g_strrstr(message_lower, nick_lower)) { - notify = TRUE; - } - g_free(message_lower); - g_free(nick_lower); + + Jid *jidp = jid_create(mucwin->roomjid); + int ui_index = num; + if (ui_index == 10) { + ui_index = 0; } - prefs_free_string(room_setting); - if (notify) { - gboolean is_current = wins_is_current(window); - if ( !is_current || (is_current && prefs_get_boolean(PREF_NOTIFY_ROOM_CURRENT)) ) { - Jid *jidp = jid_create(mucwin->roomjid); - if (prefs_get_boolean(PREF_NOTIFY_ROOM_TEXT)) { - notify_room_message(nick, jidp->localpart, ui_index, message); - } else { - notify_room_message(nick, jidp->localpart, ui_index, NULL); - } - jid_destroy(jidp); - } + if (prefs_get_boolean(PREF_NOTIFY_ROOM_TEXT)) { + notify_room_message(nick, jidp->localpart, ui_index, message); + } else { + notify_room_message(nick, jidp->localpart, ui_index, NULL); } + jid_destroy(jidp); } void diff --git a/src/ui/notifier.c b/src/ui/notifier.c index 9127b1e7..c0861009 100644 --- a/src/ui/notifier.c +++ b/src/ui/notifier.c @@ -73,17 +73,16 @@ notifier_uninit(void) } void -notify_typing(const char *const handle) +notify_typing(const char *const name) { - char message[strlen(handle) + 1 + 11]; - sprintf(message, "%s: typing...", handle); + char message[strlen(name) + 1 + 11]; + sprintf(message, "%s: typing...", name); _notify(message, 10000, "Incoming message"); } void -notify_invite(const char *const from, const char *const room, - const char *const reason) +notify_invite(const char *const from, const char *const room, const char *const reason) { GString *message = g_string_new("Room invite\nfrom: "); g_string_append(message, from); @@ -99,32 +98,24 @@ notify_invite(const char *const from, const char *const room, } void -notify_message(ProfWin *window, const char *const name, const char *const text) +notify_message(const char *const name, int win, const char *const text) { - int num = wins_get_num(window); - if (num == 10) { - num = 0; + GString *message = g_string_new(""); + g_string_append_printf(message, "%s (win %d)", name, win); + if (text) { + g_string_append_printf(message, "\n%s", text); } - gboolean is_current = wins_is_current(window); - if (!is_current || (is_current && prefs_get_boolean(PREF_NOTIFY_MESSAGE_CURRENT)) ) { - GString *message = g_string_new(""); - g_string_append_printf(message, "%s (win %d)", name, num); - - if (prefs_get_boolean(PREF_NOTIFY_MESSAGE_TEXT) && text) { - g_string_append_printf(message, "\n%s", text); - } + _notify(message->str, 10000, "incoming message"); - _notify(message->str, 10000, "incoming message"); - g_string_free(message, TRUE); - } + g_string_free(message, TRUE); } void -notify_room_message(const char *const handle, const char *const room, int win, const char *const text) +notify_room_message(const char *const nick, const char *const room, int win, const char *const text) { GString *message = g_string_new(""); - g_string_append_printf(message, "%s in %s (win %d)", handle, room, win); + g_string_append_printf(message, "%s in %s (win %d)", nick, room, win); if (text) { g_string_append_printf(message, "\n%s", text); } diff --git a/src/ui/privwin.c b/src/ui/privwin.c index 6031a2c0..10ce1dbe 100644 --- a/src/ui/privwin.c +++ b/src/ui/privwin.c @@ -75,8 +75,32 @@ privwin_incoming_msg(ProfPrivateWin *privatewin, const char *const message, GDat beep(); } - if (prefs_get_boolean(PREF_NOTIFY_MESSAGE)) { - notify_message(window, display_from, message); + if (!prefs_get_boolean(PREF_NOTIFY_MESSAGE)) { + free(display_from); + return; + } + + gboolean notify = FALSE; + + gboolean is_current = wins_is_current(window); + if (!is_current || (is_current && prefs_get_boolean(PREF_NOTIFY_MESSAGE_CURRENT)) ) { + notify = TRUE; + } + + if (!notify) { + free(display_from); + return; + } + + int ui_index = num; + if (ui_index == 10) { + ui_index = 0; + } + + if (prefs_get_boolean(PREF_NOTIFY_MESSAGE_TEXT)) { + notify_message(display_from, ui_index, message); + } else { + notify_message(display_from, ui_index, NULL); } free(display_from); diff --git a/src/ui/ui.h b/src/ui/ui.h index 032a1161..3cc40001 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -339,9 +339,9 @@ void win_clear(ProfWin *window); // desktop notifications void notifier_initialise(void); void notifier_uninit(void); -void notify_typing(const char *const handle); -void notify_message(ProfWin *window, const char *const name, const char *const text); -void notify_room_message(const char *const handle, const char *const room, int win, const char *const text); +void notify_typing(const char *const name); +void notify_message(const char *const name, int win, const char *const text); +void notify_room_message(const char *const nick, const char *const room, int win, const char *const text); void notify_remind(void); void notify_invite(const char *const from, const char *const room, const char *const reason); void notify_subscription(const char *const from); |