public App() { Data = new SettingsStorage(); Settings = Data.Settings; //This is here to cause entityframework to load a little faster... Poller = new ObserverPoller(); PollerService = TaskAsService.Create(token => Poller.Run(token)); }
public MainWindow(SettingsStorage data, ObserverPoller poller) { Data = data; Poller = poller; InitializeComponent(); }
public void JobChanged(ObserverPoller poller, ObserverServer server, ObserverJob job, ChangeType changeType) { var settings = Data.Settings; var enabled = (server?.Healthy ?? true) && (job?.Enabled ?? true); switch (changeType) { case ChangeType.BuildCompleted: if (!(enabled && settings.EnableNotifications) || settings.AlertOnChangesOnly) break; _notifyIcon.ShowBalloonTip(2000, "Build Complete", $"Job: {job?.DisplayName} is no longer building", ToolTipIcon.Warning); break; case ChangeType.BuildStarted: if (!(enabled && settings.EnableNotifications) || settings.AlertOnChangesOnly) break; _notifyIcon.ShowBalloonTip(2000, "Build Started", $"Job: {job?.DisplayName} is now building", ToolTipIcon.Warning); break; case ChangeType.BuildStatusChange: if (!(enabled && settings.EnableNotifications)) break; _notifyIcon.ShowBalloonTip(2000, "Status Change", $"Job: {job?.DisplayName} is now {job?.Status}", ToolTipIcon.Warning); break; case ChangeType.MissingJob: _notifyIcon.ShowBalloonTip(2000, "Job No Longer Exists", $"Job: {job?.DisplayName} no longer exists", ToolTipIcon.Warning); break; case ChangeType.NewJobFound: _notifyIcon.ShowBalloonTip(2000, "New Job", $"Job: {job?.DisplayName} has been found", ToolTipIcon.Warning); break; case ChangeType.ErrorPollingServer: _notifyIcon.ShowBalloonTip(10000, "Error Polling Server", $"Server: '{server?.Name}' at '{server?.Url}' could not be polled", ToolTipIcon.Error); break; case ChangeType.ErrorPollingJob: _notifyIcon.ShowBalloonTip(10000, "Error Polling Job", $"Job: '{job?.DisplayName ?? job?.Name}' in '{server?.Name}' could not be polled", ToolTipIcon.Error); break; default: throw new ArgumentOutOfRangeException(nameof(changeType), changeType, null); } if (enabled && settings.EnableSounds) { switch (changeType) { case ChangeType.BuildCompleted: case ChangeType.BuildStarted: SystemSounds.Beep.Play(); break; case ChangeType.BuildStatusChange: SystemSounds.Hand.Play(); break; case ChangeType.MissingJob: case ChangeType.ErrorPollingServer: case ChangeType.ErrorPollingJob: SystemSounds.Asterisk.Play(); break; } } }