Don't show notification reminders for messages the user does not want notifications for

This commit is contained in:
James Booth
2016-02-04 01:24:37 +00:00
parent e1962261a9
commit 6702bb9739
8 changed files with 57 additions and 49 deletions

View File

@@ -258,9 +258,7 @@ chatwin_incoming_msg(ProfChatWin *chatwin, const char *const resource, const cha
}
chatwin->unread++;
if (notify) {
chatwin->notify = TRUE;
}
if (prefs_get_boolean(PREF_CHLOG) && prefs_get_boolean(PREF_HISTORY)) {
_chatwin_history(chatwin, chatwin->barejid);
}

View File

@@ -72,9 +72,6 @@ privwin_incoming_msg(ProfPrivateWin *privatewin, const char *const message, GDat
win_print_incoming_message(window, timestamp, jidp->resourcepart, message, PROF_MSG_PLAIN);
privatewin->unread++;
if (notify) {
privatewin->notify = TRUE;
}
if (prefs_get_boolean(PREF_FLASH)) {
flash();

View File

@@ -102,7 +102,6 @@ typedef struct prof_chat_win_t {
ProfWin window;
char *barejid;
int unread;
gboolean notify;
ChatState *state;
gboolean is_otr;
gboolean otr_is_trusted;
@@ -119,7 +118,6 @@ typedef struct prof_muc_win_t {
int unread;
gboolean unread_mentions;
gboolean unread_triggers;
gboolean notify;
gboolean showjid;
unsigned long memcheck;
} ProfMucWin;
@@ -135,7 +133,6 @@ typedef struct prof_private_win_t {
ProfWin window;
char *fulljid;
int unread;
gboolean notify;
unsigned long memcheck;
gboolean occupant_offline;
gboolean room_left;

View File

@@ -141,7 +141,6 @@ win_create_chat(const char *const barejid)
new_win->pgp_send = FALSE;
new_win->history_shown = FALSE;
new_win->unread = 0;
new_win->notify = FALSE;
new_win->state = chat_state_new();
new_win->memcheck = PROFCHATWIN_MEMCHECK;
@@ -183,7 +182,6 @@ win_create_muc(const char *const roomjid)
new_win->unread = 0;
new_win->unread_mentions = FALSE;
new_win->unread_triggers = FALSE;
new_win->notify = FALSE;
if (prefs_get_boolean(PREF_OCCUPANTS_JID)) {
new_win->showjid = TRUE;
} else {
@@ -219,7 +217,6 @@ win_create_private(const char *const fulljid)
new_win->fulljid = strdup(fulljid);
new_win->unread = 0;
new_win->notify = FALSE;
new_win->occupant_offline = FALSE;
new_win->room_left = FALSE;
@@ -1313,19 +1310,45 @@ win_has_active_subwin(ProfWin *window)
gboolean
win_notify(ProfWin *window)
{
if (window->type == WIN_CHAT) {
switch (window->type) {
case WIN_CHAT:
{
ProfChatWin *chatwin = (ProfChatWin*) window;
assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK);
return chatwin->notify;
} else if (window->type == WIN_MUC) {
if (prefs_get_boolean(PREF_NOTIFY_CHAT) && chatwin->unread > 0) {
return TRUE;
} else {
return FALSE;
}
}
case WIN_MUC:
{
ProfMucWin *mucwin = (ProfMucWin*) window;
assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK);
return mucwin->notify;
} else if (window->type == WIN_PRIVATE) {
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;
}
}
case WIN_PRIVATE:
{
ProfPrivateWin *privatewin = (ProfPrivateWin*) window;
assert(privatewin->memcheck == PROFPRIVATEWIN_MEMCHECK);
return privatewin->notify;
} else {
if (prefs_get_boolean(PREF_NOTIFY_CHAT) && privatewin->unread > 0) {
return TRUE;
} else {
return FALSE;
}
}
default:
return FALSE;
}
}