mirror of
https://github.com/profanity-im/profanity.git
synced 2024-11-03 19:37:16 -05:00
Fix room notification reminders
This commit is contained in:
parent
abc2f0de39
commit
62b0cdd8fd
@ -277,6 +277,42 @@ prefs_do_room_notify(gboolean current_win, const char *const roomjid, const char
|
|||||||
return FALSE;
|
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
|
void
|
||||||
prefs_set_room_notify(const char *const roomjid, gboolean value)
|
prefs_set_room_notify(const char *const roomjid, gboolean value)
|
||||||
{
|
{
|
||||||
|
@ -235,6 +235,7 @@ void prefs_set_string(preference_t pref, char *value);
|
|||||||
gboolean prefs_do_chat_notify(gboolean current_win);
|
gboolean prefs_do_chat_notify(gboolean current_win);
|
||||||
gboolean prefs_do_room_notify(gboolean current_win, const char *const roomjid, const char *const mynick,
|
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);
|
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);
|
GList* prefs_message_get_triggers(const char *const message);
|
||||||
|
|
||||||
void prefs_set_room_notify(const char *const roomjid, gboolean value);
|
void prefs_set_room_notify(const char *const roomjid, gboolean value);
|
||||||
|
@ -345,7 +345,7 @@ ProfWin* win_create_muc_config(const char *const title, DataForm *form);
|
|||||||
ProfWin* win_create_private(const char *const fulljid);
|
ProfWin* win_create_private(const char *const fulljid);
|
||||||
void win_update_virtual(ProfWin *window);
|
void win_update_virtual(ProfWin *window);
|
||||||
void win_free(ProfWin *window);
|
void win_free(ProfWin *window);
|
||||||
gboolean win_notify(ProfWin *window);
|
gboolean win_notify_remind(ProfWin *window);
|
||||||
int win_unread(ProfWin *window);
|
int win_unread(ProfWin *window);
|
||||||
void win_resize(ProfWin *window);
|
void win_resize(ProfWin *window);
|
||||||
void win_hide_subwin(ProfWin *window);
|
void win_hide_subwin(ProfWin *window);
|
||||||
|
@ -1308,7 +1308,7 @@ win_has_active_subwin(ProfWin *window)
|
|||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
win_notify(ProfWin *window)
|
win_notify_remind(ProfWin *window)
|
||||||
{
|
{
|
||||||
switch (window->type) {
|
switch (window->type) {
|
||||||
case WIN_CHAT:
|
case WIN_CHAT:
|
||||||
@ -1327,15 +1327,7 @@ win_notify(ProfWin *window)
|
|||||||
ProfMucWin *mucwin = (ProfMucWin*) window;
|
ProfMucWin *mucwin = (ProfMucWin*) window;
|
||||||
assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK);
|
assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK);
|
||||||
|
|
||||||
if (prefs_get_room_notify(mucwin->roomjid) && mucwin->unread > 0) {
|
return prefs_do_room_notify_mention(mucwin->roomjid, mucwin->unread, mucwin->unread_mentions, mucwin->unread_triggers);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
case WIN_PRIVATE:
|
case WIN_PRIVATE:
|
||||||
{
|
{
|
||||||
|
@ -622,7 +622,7 @@ wins_do_notify_remind(void)
|
|||||||
|
|
||||||
while (curr) {
|
while (curr) {
|
||||||
ProfWin *window = curr->data;
|
ProfWin *window = curr->data;
|
||||||
if (win_notify(window)) {
|
if (win_notify_remind(window)) {
|
||||||
g_list_free(values);
|
g_list_free(values);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -497,7 +497,7 @@ ProfWin* win_create_private(const char * const fulljid)
|
|||||||
|
|
||||||
void win_update_virtual(ProfWin *window) {}
|
void win_update_virtual(ProfWin *window) {}
|
||||||
void win_free(ProfWin *window) {}
|
void win_free(ProfWin *window) {}
|
||||||
gboolean win_notify(ProfWin *window)
|
gboolean win_notify_remind(ProfWin *window)
|
||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user