示例#1
0
 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();
 }
示例#3
0
        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;
                }

            }
        }