From 62b0cdd8fd3e811033f58d39a744d7f7eb973e3c Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 7 Feb 2016 01:15:40 +0000 Subject: Fix room notification reminders --- src/config/preferences.c | 36 ++++++++++++++++++++++++++++++++++++ src/config/preferences.h | 1 + 2 files changed, 37 insertions(+) (limited to 'src/config') diff --git a/src/config/preferences.c b/src/config/preferences.c index 12870bb1..96d97f39 100644 --- a/src/config/preferences.c +++ b/src/config/preferences.c @@ -277,6 +277,42 @@ prefs_do_room_notify(gboolean current_win, const char *const roomjid, const char return FALSE; } +gboolean +prefs_do_room_notify_mention(const char *const roomjid, int unread, gboolean mention, gboolean trigger) +{ + gboolean notify_room = FALSE; + if (g_key_file_has_key(prefs, roomjid, "notify", NULL)) { + notify_room = g_key_file_get_boolean(prefs, roomjid, "notify", NULL); + } else { + notify_room = prefs_get_boolean(PREF_NOTIFY_ROOM); + } + if (notify_room && unread > 0) { + return TRUE; + } + + gboolean notify_mention = FALSE; + if (g_key_file_has_key(prefs, roomjid, "notify.mention", NULL)) { + notify_mention = g_key_file_get_boolean(prefs, roomjid, "notify.mention", NULL); + } else { + notify_mention = prefs_get_boolean(PREF_NOTIFY_ROOM_MENTION); + } + if (notify_mention && mention) { + return TRUE; + } + + gboolean notify_trigger = FALSE; + if (g_key_file_has_key(prefs, roomjid, "notify.trigger", NULL)) { + notify_trigger = g_key_file_get_boolean(prefs, roomjid, "notify.trigger", NULL); + } else { + notify_trigger = prefs_get_boolean(PREF_NOTIFY_ROOM_TRIGGER); + } + if (notify_trigger && trigger) { + return TRUE; + } + + return FALSE; +} + void prefs_set_room_notify(const char *const roomjid, gboolean value) { diff --git a/src/config/preferences.h b/src/config/preferences.h index a89ee65b..d97cd015 100644 --- a/src/config/preferences.h +++ b/src/config/preferences.h @@ -235,6 +235,7 @@ void prefs_set_string(preference_t pref, char *value); gboolean prefs_do_chat_notify(gboolean current_win); gboolean prefs_do_room_notify(gboolean current_win, const char *const roomjid, const char *const mynick, const char *const theirnick, const char *const message, gboolean mention, gboolean trigger_found); +gboolean prefs_do_room_notify_mention(const char *const roomjid, int unread, gboolean mention, gboolean trigger); GList* prefs_message_get_triggers(const char *const message); void prefs_set_room_notify(const char *const roomjid, gboolean value); -- cgit 1.4.1-2-gfad0