summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorBerke Viktor <bviktor@hexchat.org>2012-10-13 12:38:01 +0200
committerBerke Viktor <bviktor@hexchat.org>2012-10-13 12:38:01 +0200
commitb67b223c26ad4cc1784070b8d69e85623814e2d2 (patch)
tree5df4442ffefb94fed950b9d85b2220f89dc8317a
parent0ec02c13c7b17f2ad74a834f8b7b2d1ecc2d4630 (diff)
Add option to omit alerts when marked as being away
-rw-r--r--src/common/cfgfiles.c1
-rw-r--r--src/common/text.c12
-rw-r--r--src/common/xchat.h1
-rw-r--r--src/fe-gtk/fe-gtk.c2
-rw-r--r--src/fe-gtk/plugin-tray.c18
-rw-r--r--src/fe-gtk/setup.c3
6 files changed, 21 insertions, 16 deletions
diff --git a/src/common/cfgfiles.c b/src/common/cfgfiles.c
index a787668e..d6a17a1e 100644
--- a/src/common/cfgfiles.c
+++ b/src/common/cfgfiles.c
@@ -392,6 +392,7 @@ default_file (void)
 
 const struct prefs vars[] = {
 	{"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_show_message", P_OFFINT (show_away_message), TYPE_BOOL},
 	{"away_show_once", P_OFFINT (show_away_once), TYPE_BOOL},
diff --git a/src/common/text.c b/src/common/text.c
index b558affd..20e4fd45 100644
--- a/src/common/text.c
+++ b/src/common/text.c
@@ -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_PRIVACTION:
 	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);
-		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);
 		/* why is this one different? because of plugin-tray.c's hooks! ugly */
 		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=== */
 	case XP_TE_HCHANACTION:
 	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);
-		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);
 		if (sess->alert_tray == SET_ON)
 			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=== */
 	case XP_TE_CHANACTION:
 	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);
-		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);
 		if (sess->alert_tray == SET_ON)
 			fe_tray_set_icon (FE_ICON_MESSAGE);
diff --git a/src/common/xchat.h b/src/common/xchat.h
index e9e4f157..6f82ed76 100644
--- a/src/common/xchat.h
+++ b/src/common/xchat.h
@@ -156,6 +156,7 @@ struct xchatprefs
 
 	int away_timeout;
 	int away_size_max;
+	int away_omit_alerts;
 
 	int gui_pane_left_size;
 	int gui_pane_right_size;
diff --git a/src/fe-gtk/fe-gtk.c b/src/fe-gtk/fe-gtk.c
index 5b4260fd..f7264f73 100644
--- a/src/fe-gtk/fe-gtk.c
+++ b/src/fe-gtk/fe-gtk.c
@@ -587,7 +587,7 @@ fe_set_hilight (struct session *sess)
 	if (sess->gui->is_tab)
 		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 */
 }
 
diff --git a/src/fe-gtk/plugin-tray.c b/src/fe-gtk/plugin-tray.c
index 4b649d47..0897f423 100644
--- a/src/fe-gtk/plugin-tray.c
+++ b/src/fe-gtk/plugin-tray.c
@@ -578,7 +578,7 @@ tray_hilight_cb (char *word[], void *userdata)
 	/*if (tray_status == TS_HIGHLIGHT)
 		return XCHAT_EAT_NONE;*/
 
-	if (prefs.input_tray_hilight)
+	if (prefs.input_tray_hilight && !prefs.away_omit_alerts)
 	{
 		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"));
 	}
 
-	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)"),
 								 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)
 		return XCHAT_EAT_NONE;
 
-	if (prefs.input_tray_chans)
+	if (prefs.input_tray_chans && !prefs.away_omit_alerts)
 	{
 		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);
 	}
 
-	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)"),
 								 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_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)"),
 								 from, network);
 }
@@ -657,7 +657,7 @@ tray_priv_cb (char *word[], void *userdata)
 	/*if (tray_status == TS_HIGHLIGHT)
 		return XCHAT_EAT_NONE;*/
 
-	if (prefs.input_tray_priv)
+	if (prefs.input_tray_priv && !prefs.away_omit_alerts)
 		tray_priv (word[1], word[2]);
 
 	return XCHAT_EAT_NONE;
@@ -669,7 +669,7 @@ tray_invited_cb (char *word[], void *userdata)
 	/*if (tray_status == TS_HIGHLIGHT)
 		return XCHAT_EAT_NONE;*/
 
-	if (prefs.input_tray_priv)
+	if (prefs.input_tray_priv && !prefs.away_omit_alerts)
 		tray_priv (word[2], "Invited");
 
 	return XCHAT_EAT_NONE;
@@ -687,7 +687,7 @@ tray_dcc_cb (char *word[], void *userdata)
 	if (!network)
 		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);
 
@@ -700,7 +700,7 @@ tray_dcc_cb (char *word[], void *userdata)
 								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)"),
 								word[1], network);
 
diff --git a/src/fe-gtk/setup.c b/src/fe-gtk/setup.c
index d773cbdf..60a17a0c 100644
--- a/src/fe-gtk/setup.c
+++ b/src/fe-gtk/setup.c
@@ -361,6 +361,7 @@ static const setting alert_settings[] =
 	{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_("Omit alerts when marked as being away"), P_OFFINTNL(away_omit_alerts), 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},
@@ -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_("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_LABEL,	N_("Highlighted messages are ones where your nickname is mentioned, but also:"), 0, 0, 0, 1},