Start modernization

# Conflicts:
#	.gitignore
#	App.xaml
#	App.xaml.cs
#	AudioWatcher.cs
#	Delcom/DeviceManagement.cs
#	Delcom/StoplightIndicator.cs
#	LICENSE.md
#	LightController.cs
#	Properties/AssemblyInfo.cs
#	Properties/Resources.Designer.cs
#	Properties/Resources.resx
#	Properties/Settings.Designer.cs
#	Properties/Settings.settings
#	README.md
#	UpdateCheck.cs
#	WorkIndicator.csproj
#	WorkIndicator.sln
#	WorkIndicator.sln.DotSettings
This commit is contained in:
2026-08-07 10:46:25 -04:00
parent 287c008117
commit 4b9145054b
32 changed files with 1183 additions and 1031 deletions
+43 -21
View File
@@ -15,20 +15,40 @@ namespace WorkIndicator
public static class LightController
{
private static StoplightIndicator _stoplightIndicator;
private static UsbService _usbService;
private static bool _initialized;
private static Status _status = Status.Auto;
public static void Initialize()
{
_usbService = new UsbService();
_usbService.DevicesChanged += DevicesChanged;
_stoplightIndicator = new StoplightIndicator();
_stoplightIndicator.SetLight(StoplightIndicator.Light.Yellow, StoplightIndicator.LightState.On);
Properties.Settings.Default.PropertyChanged += HandleSettingChange;
AudioWatcher.MicrophoneInUseChanged += AudioWatcher_MicrophoneInUseChanged;
AudioWatcher.Start();
_initialized = true;
}
private static void HandleSettingChange(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(Properties.Settings.Default.DefaultStatus))
UpdateLights();
}
private static void DevicesChanged()
{
_stoplightIndicator?.Dispose();
_stoplightIndicator = new StoplightIndicator();
UpdateLights();
}
private static void AudioWatcher_MicrophoneInUseChanged(bool microphoneInUse)
{
UpdateLights();
@@ -44,6 +64,8 @@ namespace WorkIndicator
_stoplightIndicator.SetLights(StoplightIndicator.LightState.Off, StoplightIndicator.LightState.Off, StoplightIndicator.LightState.Off);
_stoplightIndicator.Dispose();
_usbService.Dispose();
_initialized = false;
}
@@ -63,36 +85,36 @@ namespace WorkIndicator
var yellow = StoplightIndicator.LightState.Off;
var green = StoplightIndicator.LightState.Off;
if (_status == Status.Auto)
var status = _status;
if (status == Status.Auto)
{
if (AudioWatcher.MicrophoneInUse())
{
red = StoplightIndicator.LightState.On;
status = Status.OnPhone;
}
else
{
yellow = StoplightIndicator.LightState.On;
status = (Status) Enum.Parse(typeof(Status), Properties.Settings.Default.DefaultStatus);
}
}
else
switch (status)
{
switch (_status)
{
case Status.Free:
green = StoplightIndicator.LightState.On;
break;
case Status.Working:
yellow = StoplightIndicator.LightState.On;
break;
case Status.OnPhone:
red = StoplightIndicator.LightState.On;
break;
case Status.Talking:
red = StoplightIndicator.LightState.Blink;
break;
default:
throw new ArgumentOutOfRangeException();
}
case Status.Free:
green = StoplightIndicator.LightState.On;
break;
case Status.Working:
yellow = StoplightIndicator.LightState.On;
break;
case Status.OnPhone:
red = StoplightIndicator.LightState.On;
break;
case Status.Talking:
red = StoplightIndicator.LightState.Blink;
break;
default:
throw new ArgumentOutOfRangeException();
}
_stoplightIndicator.SetLights(red, yellow, green);