diff options
author | James Booth <boothj5@gmail.com> | 2015-01-15 01:06:33 +0000 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2015-01-15 01:06:33 +0000 |
commit | 78bfd8da40007a47794a48f1a2b00deaebd89c1a (patch) | |
tree | 46f001236159c91730066989da39320be67ec290 /src/ui | |
parent | 17b966adb44b264f8d302bc413febf1b1b23d9bb (diff) | |
parent | 3b69ad7b610cbd9a5f77ebe0af5b9d58c32c4050 (diff) | |
download | profani-tty-78bfd8da40007a47794a48f1a2b00deaebd89c1a.tar.gz |
Merge branch 'master' into inp-utf8
Diffstat (limited to 'src/ui')
-rw-r--r-- | src/ui/core.c | 1 | ||||
-rw-r--r-- | src/ui/notifier.c | 78 | ||||
-rw-r--r-- | src/ui/ui.h | 1 |
3 files changed, 49 insertions, 31 deletions
diff --git a/src/ui/core.c b/src/ui/core.c index 2873b693..6918a658 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -102,6 +102,7 @@ ui_init(void) status_bar_active(1); create_input_window(); wins_init(); + notifier_initialise(); cons_about(); #ifdef HAVE_LIBXSS display = XOpenDisplay(0); diff --git a/src/ui/notifier.c b/src/ui/notifier.c index ff93443f..7ca8f705 100644 --- a/src/ui/notifier.c +++ b/src/ui/notifier.c @@ -48,10 +48,19 @@ #include "log.h" #include "muc.h" #include "ui/ui.h" +#include "config/preferences.h" static void _notify(const char * const message, int timeout, const char * const category); +static GTimer *remind_timer; + +void +notifier_initialise(void) +{ + remind_timer = g_timer_new(); +} + void notifier_uninit(void) { @@ -60,6 +69,7 @@ notifier_uninit(void) notify_uninit(); } #endif + g_timer_destroy(remind_timer); } void @@ -128,46 +138,52 @@ notify_subscription(const char * const from) void notify_remind(void) { - gint unread = ui_unread(); - gint open = muc_invites_count(); - gint subs = presence_sub_request_count(); + gdouble elapsed = g_timer_elapsed(remind_timer, NULL); + gint remind_period = prefs_get_notify_remind(); + if (remind_period > 0 && elapsed >= remind_period) { + gint unread = ui_unread(); + gint open = muc_invites_count(); + gint subs = presence_sub_request_count(); - GString *text = g_string_new(""); + GString *text = g_string_new(""); - if (unread > 0) { - if (unread == 1) { - g_string_append(text, "1 unread message"); - } else { - g_string_append_printf(text, "%d unread messages", unread); - } - - } - if (open > 0) { if (unread > 0) { - g_string_append(text, "\n"); + if (unread == 1) { + g_string_append(text, "1 unread message"); + } else { + g_string_append_printf(text, "%d unread messages", unread); + } + } - if (open == 1) { - g_string_append(text, "1 room invite"); - } else { - g_string_append_printf(text, "%d room invites", open); + if (open > 0) { + if (unread > 0) { + g_string_append(text, "\n"); + } + if (open == 1) { + g_string_append(text, "1 room invite"); + } else { + g_string_append_printf(text, "%d room invites", open); + } } - } - if (subs > 0) { - if ((unread > 0) || (open > 0)) { - g_string_append(text, "\n"); + if (subs > 0) { + if ((unread > 0) || (open > 0)) { + g_string_append(text, "\n"); + } + if (subs == 1) { + g_string_append(text, "1 subscription request"); + } else { + g_string_append_printf(text, "%d subscription requests", subs); + } } - if (subs == 1) { - g_string_append(text, "1 subscription request"); - } else { - g_string_append_printf(text, "%d subscription requests", subs); + + if ((unread > 0) || (open > 0) || (subs > 0)) { + _notify(text->str, 5000, "Incoming message"); } - } - if ((unread > 0) || (open > 0) || (subs > 0)) { - _notify(text->str, 5000, "Incoming message"); - } + g_string_free(text, TRUE); - g_string_free(text, TRUE); + g_timer_start(remind_timer); + } } static void diff --git a/src/ui/ui.h b/src/ui/ui.h index 8c9690d6..1e78ce40 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -329,6 +329,7 @@ void rosterwin_roster(void); void occupantswin_occupants(const char * const room); // desktop notifier actions +void notifier_initialise(void); void notifier_uninit(void); void notify_typing(const char * const handle); |