1
0
Fork 0

Fix room notification reminders

This commit is contained in:
James Booth 2016-02-07 01:15:40 +00:00
parent abc2f0de39
commit 62b0cdd8fd
6 changed files with 42 additions and 13 deletions

View File

@ -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)
{

View File

@ -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);

View File

@ -345,7 +345,7 @@ ProfWin* win_create_muc_config(const char *const title, DataForm *form);
ProfWin* win_create_private(const char *const fulljid);
void win_update_virtual(ProfWin *window);
void win_free(ProfWin *window);
gboolean win_notify(ProfWin *window);
gboolean win_notify_remind(ProfWin *window);
int win_unread(ProfWin *window);
void win_resize(ProfWin *window);
void win_hide_subwin(ProfWin *window);

View File

@ -1308,7 +1308,7 @@ win_has_active_subwin(ProfWin *window)
}
gboolean
win_notify(ProfWin *window)
win_notify_remind(ProfWin *window)
{
switch (window->type) {
case WIN_CHAT:
@ -1327,15 +1327,7 @@ win_notify(ProfWin *window)
ProfMucWin *mucwin = (ProfMucWin*) window;
assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK);
if (prefs_get_room_notify(mucwin->roomjid) && mucwin->unread > 0) {
return TRUE;
} else if (prefs_get_room_notify_mention(mucwin->roomjid) && mucwin->unread_mentions) {
return TRUE;
} else if (prefs_get_room_notify_trigger(mucwin->roomjid) && mucwin->unread_triggers) {
return TRUE;
} else {
return FALSE;
}
return prefs_do_room_notify_mention(mucwin->roomjid, mucwin->unread, mucwin->unread_mentions, mucwin->unread_triggers);
}
case WIN_PRIVATE:
{

View File

@ -622,7 +622,7 @@ wins_do_notify_remind(void)
while (curr) {
ProfWin *window = curr->data;
if (win_notify(window)) {
if (win_notify_remind(window)) {
g_list_free(values);
return TRUE;
}

View File

@ -497,7 +497,7 @@ ProfWin* win_create_private(const char * const fulljid)
void win_update_virtual(ProfWin *window) {}
void win_free(ProfWin *window) {}
gboolean win_notify(ProfWin *window)
gboolean win_notify_remind(ProfWin *window)
{
return TRUE;
}