version 1.5, taskbar notificaitons
This commit is contained in:
parent
53734e0f8d
commit
f18fcd2a14
|
@ -14,3 +14,12 @@ Useful when working with big solutions or when build/test run/hitting a breakpoi
|
||||||
This is an open source project, join!
|
This is an open source project, join!
|
||||||
|
|
||||||
Twitter: @GanzhaVitalii
|
Twitter: @GanzhaVitalii
|
||||||
|
|
||||||
|
Version 1.5:
|
||||||
|
* Added Task bar notifications. (https://github.com/thecoderok/vsdingextension/issues/1)
|
||||||
|
It can be disabled in Tools->Options->Ding->Show tray notifications
|
||||||
|
|
||||||
|
Version 1.4:
|
||||||
|
* Added options dialog (Tools->Options->Ding). Now it is possible to enable/disable what sounds to play. Thanks to https://github.com/dannoh
|
||||||
|
* Added option to play sounds only if Visual Studio in background. Thanks to https://github.com/dannoh
|
||||||
|
* Support for Visual studio 2015
|
|
@ -6,6 +6,7 @@ MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5BD9D4DB-8683-4698-8D24-01EE7306F73A}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5BD9D4DB-8683-4698-8D24-01EE7306F73A}"
|
||||||
ProjectSection(SolutionItems) = preProject
|
ProjectSection(SolutionItems) = preProject
|
||||||
IntegrationTests.testsettings = IntegrationTests.testsettings
|
IntegrationTests.testsettings = IntegrationTests.testsettings
|
||||||
|
README.md = README.md
|
||||||
UnitTests.testsettings = UnitTests.testsettings
|
UnitTests.testsettings = UnitTests.testsettings
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
|
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
|
||||||
<Metadata>
|
<Metadata>
|
||||||
<Identity Id="ab75aa82-c4e8-42a7-b4ec-b5bae2fa4925" Version="1.4" Language="en-US" Publisher="Vitalii Ganzha" />
|
<Identity Id="ab75aa82-c4e8-42a7-b4ec-b5bae2fa4925" Version="1.5" Language="en-US" Publisher="Vitalii Ganzha" />
|
||||||
<DisplayName>Visual Studio Ding extension for VS 2012</DisplayName>
|
<DisplayName>Visual Studio Ding extension for VS 2012</DisplayName>
|
||||||
<Description xml:space="preserve">This small extension will play notification sounds when following events occur:
|
<Description xml:space="preserve">This small extension will play notification sounds when following events occur:
|
||||||
- Build Complete
|
- Build Complete
|
||||||
|
|
|
@ -12,28 +12,33 @@ namespace VitaliiGanzha.VsDingExtension
|
||||||
[Category("Beeps")]
|
[Category("Beeps")]
|
||||||
[DisplayName("Breakpoint")]
|
[DisplayName("Breakpoint")]
|
||||||
[Description("Beep when a breakpoint is hit")]
|
[Description("Beep when a breakpoint is hit")]
|
||||||
public bool BreakpointBeep { get; set; }
|
public bool IsBeepOnBreakpointHit { get; set; }
|
||||||
|
|
||||||
[Category("Beeps")]
|
[Category("Beeps")]
|
||||||
[DisplayName("Build")]
|
[DisplayName("Build")]
|
||||||
[Description("Beep when a build is completed")]
|
[Description("Beep when a build is completed")]
|
||||||
public bool BuildBeep { get; set; }
|
public bool IsBeepOnBuildComplete { get; set; }
|
||||||
|
|
||||||
[Category("Beeps")]
|
[Category("Beeps")]
|
||||||
[DisplayName("Tests")]
|
[DisplayName("Tests")]
|
||||||
[Description("Beep when a test run is completed")]
|
[Description("Beep when a test run is completed")]
|
||||||
public bool TestBeep { get; set; }
|
public bool IsBuildOnTestComplete { get; set; }
|
||||||
|
|
||||||
[DisplayName("Only when in background")]
|
[DisplayName("Only when in background")]
|
||||||
[Description("Beep only when Visual Studio does not have focus")]
|
[Description("Beep only when Visual Studio does not have focus")]
|
||||||
public bool BeepOnUnfocus { get; set; }
|
public bool IsBeepOnlyWhenVisualStudioIsInBackground { get; set; }
|
||||||
|
|
||||||
|
[DisplayName("Show tray notifications")]
|
||||||
|
[Description("Show tray notifications for enabled events")]
|
||||||
|
public bool ShowTrayNotifications { get; set; }
|
||||||
|
|
||||||
public OptionsDialog()
|
public OptionsDialog()
|
||||||
{
|
{
|
||||||
BreakpointBeep = true;
|
IsBeepOnBreakpointHit = true;
|
||||||
BuildBeep = true;
|
IsBeepOnBuildComplete = true;
|
||||||
TestBeep = true;
|
IsBuildOnTestComplete = true;
|
||||||
BeepOnUnfocus = false;
|
ShowTrayNotifications = true;
|
||||||
|
IsBeepOnlyWhenVisualStudioIsInBackground = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
Version 1.4:
|
Version 1.5:
|
||||||
|
* Added Task bar notifications. (https://github.com/thecoderok/vsdingextension/issues/1)
|
||||||
|
It can be disabled in Tools->Options->Ding->Show tray notifications
|
||||||
|
|
||||||
|
Version 1.4:
|
||||||
* Added options dialog (Tools->Options->Ding). Now it is possible to enable/disable what sounds to play. Thanks to https://github.com/dannoh
|
* Added options dialog (Tools->Options->Ding). Now it is possible to enable/disable what sounds to play. Thanks to https://github.com/dannoh
|
||||||
* Added option to play sounds only if Visual Studio in background. Thanks to https://github.com/dannoh
|
* Added option to play sounds only if Visual Studio in background. Thanks to https://github.com/dannoh
|
||||||
* Support for Visual studio 2015
|
* Support for Visual studio 2015
|
|
@ -2,9 +2,11 @@
|
||||||
{
|
{
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.Drawing;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Media;
|
using System.Media;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
using EnvDTE;
|
using EnvDTE;
|
||||||
|
|
||||||
|
@ -59,14 +61,17 @@
|
||||||
|
|
||||||
buildEvents.OnBuildDone += (scope, action) =>
|
buildEvents.OnBuildDone += (scope, action) =>
|
||||||
{
|
{
|
||||||
if (Options.BuildBeep)
|
if (Options.IsBeepOnBuildComplete)
|
||||||
PlaySafe(buildCompleteSoundPlayer);
|
{
|
||||||
|
HandleEventSafe(buildCompleteSoundPlayer, "Build has been completed.");
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
debugEvents.OnEnterBreakMode += delegate(dbgEventReason reason, ref dbgExecutionAction action)
|
debugEvents.OnEnterBreakMode += delegate(dbgEventReason reason, ref dbgExecutionAction action)
|
||||||
{
|
{
|
||||||
if (reason != dbgEventReason.dbgEventReasonStep && Options.BreakpointBeep)
|
if (reason != dbgEventReason.dbgEventReasonStep && Options.IsBeepOnBreakpointHit)
|
||||||
{
|
{
|
||||||
PlaySafe(debugSoundPlayer);
|
HandleEventSafe(debugSoundPlayer, "Breakpoint was hit.");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -95,7 +100,42 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PlaySafe(SoundPlayer soundPlayer)
|
private void HandleEventSafe(SoundPlayer soundPlayer, string messageText)
|
||||||
|
{
|
||||||
|
PlaySoundSafe(soundPlayer);
|
||||||
|
ShowNotifyMessage(messageText);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ShowNotifyMessage(string messageText)
|
||||||
|
{
|
||||||
|
if (!_options.ShowTrayNotifications)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
string autoAppendMessage = System.Environment.NewLine + "You can disable this notification in:" + System.Environment.NewLine + "Tools->Options->Ding->Show tray notifications";
|
||||||
|
messageText = string.Format("{0}{1}", messageText, autoAppendMessage);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task.Run(async () =>
|
||||||
|
{
|
||||||
|
var tray = new NotifyIcon
|
||||||
|
{
|
||||||
|
Icon = SystemIcons.Application,
|
||||||
|
BalloonTipIcon = ToolTipIcon.Info,
|
||||||
|
BalloonTipText = messageText,
|
||||||
|
BalloonTipTitle = "Visual Studio Ding extension",
|
||||||
|
Visible = true
|
||||||
|
};
|
||||||
|
|
||||||
|
tray.ShowBalloonTip(5000);
|
||||||
|
await System.Threading.Tasks.Task.Delay(5000);
|
||||||
|
tray.Icon = (Icon)null;
|
||||||
|
tray.Visible = false;
|
||||||
|
tray.Dispose();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PlaySoundSafe(SoundPlayer soundPlayer)
|
||||||
{
|
{
|
||||||
if (ShouldPlaySound())
|
if (ShouldPlaySound())
|
||||||
{
|
{
|
||||||
|
@ -112,23 +152,23 @@
|
||||||
|
|
||||||
private bool ShouldPlaySound()
|
private bool ShouldPlaySound()
|
||||||
{
|
{
|
||||||
if (!Options.BeepOnUnfocus)
|
if (!Options.IsBeepOnlyWhenVisualStudioIsInBackground)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return Options.BeepOnUnfocus && !ApplicationIsActivated();
|
return Options.IsBeepOnlyWhenVisualStudioIsInBackground && !ApplicationIsActivated();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OperationStateOnStateChanged(object sender, OperationStateChangedEventArgs operationStateChangedEventArgs)
|
private void OperationStateOnStateChanged(object sender, OperationStateChangedEventArgs operationStateChangedEventArgs)
|
||||||
{
|
{
|
||||||
if (Options.TestBeep && operationStateChangedEventArgs.State.HasFlag(TestOperationStates.TestExecutionFinished))
|
if (Options.IsBuildOnTestComplete && operationStateChangedEventArgs.State.HasFlag(TestOperationStates.TestExecutionFinished))
|
||||||
{
|
{
|
||||||
PlaySafe(testCompleteSoundPlayer);
|
HandleEventSafe(testCompleteSoundPlayer, "Test execution has been completed.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public bool ApplicationIsActivated()
|
private bool ApplicationIsActivated()
|
||||||
{
|
{
|
||||||
var activatedHandle = GetForegroundWindow();
|
var activatedHandle = GetForegroundWindow();
|
||||||
if (activatedHandle == IntPtr.Zero)
|
if (activatedHandle == IntPtr.Zero)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
|
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
|
||||||
<Metadata>
|
<Metadata>
|
||||||
<Identity Id="26ba08d0-0d25-4479-8684-3054dd122876" Version="1.4" Language="en-US" Publisher="Vitalii Ganzha" />
|
<Identity Id="26ba08d0-0d25-4479-8684-3054dd122876" Version="1.5" Language="en-US" Publisher="Vitalii Ganzha" />
|
||||||
<DisplayName>Visual Studio Ding extension</DisplayName>
|
<DisplayName>Visual Studio Ding extension</DisplayName>
|
||||||
<Description xml:space="preserve">This small extension will play notification sounds when following events occur:
|
<Description xml:space="preserve">This small extension will play notification sounds when following events occur:
|
||||||
- Build Complete
|
- Build Complete
|
||||||
|
|
Loading…
Reference in New Issue