1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-12-04 14:46:46 -05:00

Added unread message count to chat windows

This commit is contained in:
James Booth 2012-09-23 20:10:03 +01:00
parent 6d329343dc
commit 4662f21cb4
2 changed files with 22 additions and 2 deletions

View File

@ -56,6 +56,7 @@ struct prof_win {
WINDOW *win; WINDOW *win;
int y_pos; int y_pos;
int paged; int paged;
int unread;
}; };
// gui startup and shutdown, resize // gui startup and shutdown, resize
@ -97,6 +98,7 @@ void win_contact_offline(const char * const from, const char * const show,
void win_disconnected(void); void win_disconnected(void);
void win_show(const char * const msg); void win_show(const char * const msg);
void win_bad_show(const char * const msg); void win_bad_show(const char * const msg);
gint win_get_unread(void);
// console window actions // console window actions
void cons_help(void); void cons_help(void);

View File

@ -229,6 +229,17 @@ win_show_typing(const char * const from)
#endif #endif
} }
gint
win_get_unread(void)
{
int i;
gint result = 0;
for (i = 0; i < NUM_WINS; i++) {
result += _wins[i].unread;
}
return result;
}
void void
win_show_incomming_msg(const char * const from, const char * const message) win_show_incomming_msg(const char * const from, const char * const message)
{ {
@ -245,17 +256,21 @@ win_show_incomming_msg(const char * const from, const char * const message)
_win_show_user(win, short_from, 1); _win_show_user(win, short_from, 1);
_win_show_message(win, message); _win_show_message(win, message);
// currently viewing chat window with sender
if (win_index == _curr_prof_win) { if (win_index == _curr_prof_win) {
title_bar_set_typing(FALSE); title_bar_set_typing(FALSE);
title_bar_draw(); title_bar_draw();
status_bar_active(win_index); status_bar_active(win_index);
dirty = TRUE; dirty = TRUE;
// not currently viewing chat window with sender
} else { } else {
status_bar_new(win_index); status_bar_new(win_index);
_cons_show_incoming_message(short_from, win_index); _cons_show_incoming_message(short_from, win_index);
if (prefs_get_flash()) if (prefs_get_flash())
flash(); flash();
_wins[win_index].unread++;
} }
if (prefs_get_beep()) if (prefs_get_beep())
@ -647,6 +662,7 @@ _create_windows(void)
wbkgd(cons.win, COLOUR_TEXT); wbkgd(cons.win, COLOUR_TEXT);
cons.y_pos = 0; cons.y_pos = 0;
cons.paged = 0; cons.paged = 0;
cons.unread = 0;
scrollok(cons.win, TRUE); scrollok(cons.win, TRUE);
_wins[0] = cons; _wins[0] = cons;
@ -689,7 +705,7 @@ _create_windows(void)
wbkgd(chat.win, COLOUR_TEXT); wbkgd(chat.win, COLOUR_TEXT);
chat.y_pos = 0; chat.y_pos = 0;
chat.paged = 0; chat.paged = 0;
// wattrset(chat.win, A_BOLD); chat.unread = 0;
scrollok(chat.win, TRUE); scrollok(chat.win, TRUE);
_wins[i] = chat; _wins[i] = chat;
} }
@ -778,6 +794,8 @@ _win_switch_if_active(const int i)
if (strcmp(_wins[i].from, "") != 0) { if (strcmp(_wins[i].from, "") != 0) {
_curr_prof_win = i; _curr_prof_win = i;
win_page_off(); win_page_off();
_wins[i].unread = 0;
if (i == 0) { if (i == 0) {
title_bar_title(); title_bar_title();