Add option to omit alerts when marked as being away

This commit is contained in:
Berke Viktor 2012-10-13 12:38:01 +02:00
parent 0ec02c13c7
commit b67b223c26
6 changed files with 21 additions and 16 deletions

View File

@ -392,6 +392,7 @@ default_file (void)
const struct prefs vars[] = { const struct prefs vars[] = {
{"away_auto_unmark", P_OFFINT (auto_unmark_away), TYPE_BOOL}, {"away_auto_unmark", P_OFFINT (auto_unmark_away), TYPE_BOOL},
{"away_omit_alerts", P_OFFINT (away_omit_alerts), TYPE_BOOL},
{"away_reason", P_OFFSET (awayreason), TYPE_STR}, {"away_reason", P_OFFSET (awayreason), TYPE_STR},
{"away_show_message", P_OFFINT (show_away_message), TYPE_BOOL}, {"away_show_message", P_OFFINT (show_away_message), TYPE_BOOL},
{"away_show_once", P_OFFINT (show_away_once), TYPE_BOOL}, {"away_show_once", P_OFFINT (show_away_once), TYPE_BOOL},

View File

@ -2203,9 +2203,9 @@ text_emit (int index, session *sess, char *a, char *b, char *c, char *d)
case XP_TE_DPRIVMSG: case XP_TE_DPRIVMSG:
case XP_TE_PRIVACTION: case XP_TE_PRIVACTION:
case XP_TE_DPRIVACTION: case XP_TE_DPRIVACTION:
if (chanopt_is_set_a (prefs.input_beep_priv, sess->alert_beep)) if (chanopt_is_set_a (prefs.input_beep_priv, sess->alert_beep) && !prefs.away_omit_alerts)
sound_beep (sess); sound_beep (sess);
if (chanopt_is_set_a (prefs.input_flash_priv, sess->alert_taskbar)) if (chanopt_is_set_a (prefs.input_flash_priv, sess->alert_taskbar) && !prefs.away_omit_alerts)
fe_flash_window (sess); fe_flash_window (sess);
/* why is this one different? because of plugin-tray.c's hooks! ugly */ /* why is this one different? because of plugin-tray.c's hooks! ugly */
if (sess->alert_tray == SET_ON) if (sess->alert_tray == SET_ON)
@ -2215,9 +2215,9 @@ text_emit (int index, session *sess, char *a, char *b, char *c, char *d)
/* ===Highlighted message=== */ /* ===Highlighted message=== */
case XP_TE_HCHANACTION: case XP_TE_HCHANACTION:
case XP_TE_HCHANMSG: case XP_TE_HCHANMSG:
if (chanopt_is_set_a (prefs.input_beep_hilight, sess->alert_beep)) if (chanopt_is_set_a (prefs.input_beep_hilight, sess->alert_beep) && !prefs.away_omit_alerts)
sound_beep (sess); sound_beep (sess);
if (chanopt_is_set_a (prefs.input_flash_hilight, sess->alert_taskbar)) if (chanopt_is_set_a (prefs.input_flash_hilight, sess->alert_taskbar) && !prefs.away_omit_alerts)
fe_flash_window (sess); fe_flash_window (sess);
if (sess->alert_tray == SET_ON) if (sess->alert_tray == SET_ON)
fe_tray_set_icon (FE_ICON_MESSAGE); fe_tray_set_icon (FE_ICON_MESSAGE);
@ -2226,9 +2226,9 @@ text_emit (int index, session *sess, char *a, char *b, char *c, char *d)
/* ===Channel message=== */ /* ===Channel message=== */
case XP_TE_CHANACTION: case XP_TE_CHANACTION:
case XP_TE_CHANMSG: case XP_TE_CHANMSG:
if (chanopt_is_set_a (prefs.input_beep_chans, sess->alert_beep)) if (chanopt_is_set_a (prefs.input_beep_chans, sess->alert_beep) && !prefs.away_omit_alerts)
sound_beep (sess); sound_beep (sess);
if (chanopt_is_set_a (prefs.input_flash_chans, sess->alert_taskbar)) if (chanopt_is_set_a (prefs.input_flash_chans, sess->alert_taskbar) && !prefs.away_omit_alerts)
fe_flash_window (sess); fe_flash_window (sess);
if (sess->alert_tray == SET_ON) if (sess->alert_tray == SET_ON)
fe_tray_set_icon (FE_ICON_MESSAGE); fe_tray_set_icon (FE_ICON_MESSAGE);

View File

@ -156,6 +156,7 @@ struct xchatprefs
int away_timeout; int away_timeout;
int away_size_max; int away_size_max;
int away_omit_alerts;
int gui_pane_left_size; int gui_pane_left_size;
int gui_pane_right_size; int gui_pane_right_size;

View File

@ -587,7 +587,7 @@ fe_set_hilight (struct session *sess)
if (sess->gui->is_tab) if (sess->gui->is_tab)
fe_set_tab_color (sess, 3); /* set tab to blue */ fe_set_tab_color (sess, 3); /* set tab to blue */
if (prefs.input_flash_hilight) if (prefs.input_flash_hilight && !prefs.away_omit_alerts)
fe_flash_window (sess); /* taskbar flash */ fe_flash_window (sess); /* taskbar flash */
} }

View File

@ -578,7 +578,7 @@ tray_hilight_cb (char *word[], void *userdata)
/*if (tray_status == TS_HIGHLIGHT) /*if (tray_status == TS_HIGHLIGHT)
return XCHAT_EAT_NONE;*/ return XCHAT_EAT_NONE;*/
if (prefs.input_tray_hilight) if (prefs.input_tray_hilight && !prefs.away_omit_alerts)
{ {
tray_set_flash (ICON_HILIGHT); tray_set_flash (ICON_HILIGHT);
@ -592,7 +592,7 @@ tray_hilight_cb (char *word[], void *userdata)
tray_hilight_count, word[1], xchat_get_info (ph, "channel")); tray_hilight_count, word[1], xchat_get_info (ph, "channel"));
} }
if (prefs.input_balloon_hilight) if (prefs.input_balloon_hilight && !prefs.away_omit_alerts)
tray_set_balloonf (word[2], _(DISPLAY_NAME": Highlighted message from: %s (%s)"), tray_set_balloonf (word[2], _(DISPLAY_NAME": Highlighted message from: %s (%s)"),
word[1], xchat_get_info (ph, "channel")); word[1], xchat_get_info (ph, "channel"));
@ -605,7 +605,7 @@ tray_message_cb (char *word[], void *userdata)
if (/*tray_status == TS_MESSAGE ||*/ tray_status == TS_HIGHLIGHT) if (/*tray_status == TS_MESSAGE ||*/ tray_status == TS_HIGHLIGHT)
return XCHAT_EAT_NONE; return XCHAT_EAT_NONE;
if (prefs.input_tray_chans) if (prefs.input_tray_chans && !prefs.away_omit_alerts)
{ {
tray_set_flash (ICON_MSG); tray_set_flash (ICON_MSG);
@ -617,7 +617,7 @@ tray_message_cb (char *word[], void *userdata)
tray_set_tipf (_(DISPLAY_NAME": %u new public messages."), tray_pub_count); tray_set_tipf (_(DISPLAY_NAME": %u new public messages."), tray_pub_count);
} }
if (prefs.input_balloon_chans) if (prefs.input_balloon_chans && !prefs.away_omit_alerts)
tray_set_balloonf (word[2], _(DISPLAY_NAME": New public message from: %s (%s)"), tray_set_balloonf (word[2], _(DISPLAY_NAME": New public message from: %s (%s)"),
word[1], xchat_get_info (ph, "channel")); word[1], xchat_get_info (ph, "channel"));
@ -646,7 +646,7 @@ tray_priv (char *from, char *text)
tray_set_tipf (_(DISPLAY_NAME": %u private messages, latest from: %s (%s)"), tray_set_tipf (_(DISPLAY_NAME": %u private messages, latest from: %s (%s)"),
tray_priv_count, from, network); tray_priv_count, from, network);
if (prefs.input_balloon_priv) if (prefs.input_balloon_priv && !prefs.away_omit_alerts)
tray_set_balloonf (text, _(DISPLAY_NAME": Private message from: %s (%s)"), tray_set_balloonf (text, _(DISPLAY_NAME": Private message from: %s (%s)"),
from, network); from, network);
} }
@ -657,7 +657,7 @@ tray_priv_cb (char *word[], void *userdata)
/*if (tray_status == TS_HIGHLIGHT) /*if (tray_status == TS_HIGHLIGHT)
return XCHAT_EAT_NONE;*/ return XCHAT_EAT_NONE;*/
if (prefs.input_tray_priv) if (prefs.input_tray_priv && !prefs.away_omit_alerts)
tray_priv (word[1], word[2]); tray_priv (word[1], word[2]);
return XCHAT_EAT_NONE; return XCHAT_EAT_NONE;
@ -669,7 +669,7 @@ tray_invited_cb (char *word[], void *userdata)
/*if (tray_status == TS_HIGHLIGHT) /*if (tray_status == TS_HIGHLIGHT)
return XCHAT_EAT_NONE;*/ return XCHAT_EAT_NONE;*/
if (prefs.input_tray_priv) if (prefs.input_tray_priv && !prefs.away_omit_alerts)
tray_priv (word[2], "Invited"); tray_priv (word[2], "Invited");
return XCHAT_EAT_NONE; return XCHAT_EAT_NONE;
@ -687,7 +687,7 @@ tray_dcc_cb (char *word[], void *userdata)
if (!network) if (!network)
network = xchat_get_info (ph, "server"); network = xchat_get_info (ph, "server");
if (prefs.input_tray_priv) if (prefs.input_tray_priv && !prefs.away_omit_alerts)
{ {
tray_set_flash (ICON_FILE); tray_set_flash (ICON_FILE);
@ -700,7 +700,7 @@ tray_dcc_cb (char *word[], void *userdata)
tray_file_count, word[1], network); tray_file_count, word[1], network);
} }
if (prefs.input_balloon_priv) if (prefs.input_balloon_priv && !prefs.away_omit_alerts)
tray_set_balloonf ("", _(DISPLAY_NAME": File offer from: %s (%s)"), tray_set_balloonf ("", _(DISPLAY_NAME": File offer from: %s (%s)"),
word[1], network); word[1], network);

View File

@ -361,6 +361,7 @@ static const setting alert_settings[] =
{ST_3OGGLE, N_("Make a beep sound on:"), 0, 0, (void *)beeplist, 0}, {ST_3OGGLE, N_("Make a beep sound on:"), 0, 0, (void *)beeplist, 0},
{ST_TOGGLE, N_("Enable system tray icon"), P_OFFINTNL(gui_tray), 0, 0, 0}, {ST_TOGGLE, N_("Enable system tray icon"), P_OFFINTNL(gui_tray), 0, 0, 0},
{ST_TOGGLE, N_("Omit alerts when marked as being away"), P_OFFINTNL(away_omit_alerts), 0, 0, 0},
{ST_HEADER, N_("Highlighted Messages"),0,0,0}, {ST_HEADER, N_("Highlighted Messages"),0,0,0},
{ST_LABEL, N_("Highlighted messages are ones where your nickname is mentioned, but also:"), 0, 0, 0, 1}, {ST_LABEL, N_("Highlighted messages are ones where your nickname is mentioned, but also:"), 0, 0, 0, 1},
@ -381,6 +382,8 @@ static const setting alert_settings_hextray[] =
{ST_3OGGLE, N_("Blink task bar on:"), 0, 0, (void *)taskbarlist, 0}, {ST_3OGGLE, N_("Blink task bar on:"), 0, 0, (void *)taskbarlist, 0},
{ST_3OGGLE, N_("Make a beep sound on:"), 0, 0, (void *)beeplist, 0}, {ST_3OGGLE, N_("Make a beep sound on:"), 0, 0, (void *)beeplist, 0},
{ST_TOGGLE, N_("Omit alerts when marked as being away"), P_OFFINTNL(away_omit_alerts), 0, 0, 0},
{ST_HEADER, N_("Highlighted Messages"),0,0,0}, {ST_HEADER, N_("Highlighted Messages"),0,0,0},
{ST_LABEL, N_("Highlighted messages are ones where your nickname is mentioned, but also:"), 0, 0, 0, 1}, {ST_LABEL, N_("Highlighted messages are ones where your nickname is mentioned, but also:"), 0, 0, 0, 1},