about summary refs log tree commit diff stats
path: root/src/config
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2016-02-07 01:15:40 +0000
committerJames Booth <boothj5@gmail.com>2016-02-07 01:15:40 +0000
commit62b0cdd8fd3e811033f58d39a744d7f7eb973e3c (patch)
tree43f9acb0313f61980290fbf59f4dada7b9128ee9 /src/config
parentabc2f0de39e39638fc519ad38de55d5ce0d93f28 (diff)
downloadprofani-tty-62b0cdd8fd3e811033f58d39a744d7f7eb973e3c.tar.gz
Fix room notification reminders
Diffstat (limited to 'src/config')
-rw-r--r--src/config/preferences.c36
-rw-r--r--src/config/preferences.h1
2 files changed, 37 insertions, 0 deletions
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);