private async void SessionSwitchHandler(object sender, SessionSwitchEventArgs e) { switch (e.Reason) { case SessionSwitchReason.SessionLock: case SessionSwitchReason.SessionLogoff: case SessionSwitchReason.RemoteDisconnect: case SessionSwitchReason.ConsoleDisconnect: modelHelpers.Gallifrey.StartIdleTimer(); machineLocked = true; break; case SessionSwitchReason.SessionUnlock: case SessionSwitchReason.SessionLogon: case SessionSwitchReason.RemoteConnect: case SessionSwitchReason.ConsoleConnect: try { var idleTimerId = modelHelpers.Gallifrey.StopIdleTimer(); var idleTimer = modelHelpers.Gallifrey.IdleTimerCollection.GetTimer(idleTimerId); if (idleTimer == null) { return; } if (idleTimer.IdleTimeValue.TotalSeconds < 60 || idleTimer.IdleTimeValue.TotalHours > 10) { modelHelpers.Gallifrey.IdleTimerCollection.RemoveTimer(idleTimerId); } else { this.FlashWindow(); Activate(); Topmost = true; if (modelHelpers.FlyoutOpen) { modelHelpers.HideAllFlyouts(); } await modelHelpers.OpenFlyout(new LockedTimer(modelHelpers)); this.StopFlashingWindow(); Topmost = false; foreach (var hiddenFlyout in modelHelpers.GetHiddenFlyouts()) { await modelHelpers.OpenFlyout(hiddenFlyout); } } } catch (NoIdleTimerRunningException) { } machineLocked = false; break; } }
private async void StopLockTimer(int threshold) { var idleTimerId = modelHelpers.Gallifrey.StopLockTimer(); if (!idleTimerId.HasValue) { return; } var idleTimer = modelHelpers.Gallifrey.IdleTimerCollection.GetTimer(idleTimerId.Value); if (idleTimer == null) { return; } if (modelHelpers.Gallifrey.Settings.AppSettings.TargetLogPerDay == TimeSpan.Zero && idleTimer.IdleTimeValue > TimeSpan.FromHours(10)) { modelHelpers.Gallifrey.IdleTimerCollection.RemoveTimer(idleTimerId.Value); } else if (idleTimer.IdleTimeValue > modelHelpers.Gallifrey.Settings.AppSettings.TargetLogPerDay) { modelHelpers.Gallifrey.IdleTimerCollection.RemoveTimer(idleTimerId.Value); } else if (idleTimer.IdleTimeValue.TotalMilliseconds < threshold) { modelHelpers.Gallifrey.IdleTimerCollection.RemoveTimer(idleTimerId.Value); var runningId = modelHelpers.Gallifrey.JiraTimerCollection.GetRunningTimerId(); if (runningId.HasValue) { modelHelpers.Gallifrey.JiraTimerCollection.GetTimer(runningId.Value).AddIdleTimer(idleTimer); } } else { if (modelHelpers.FlyoutOpenOrDialogShowing) { modelHelpers.HideAllFlyouts(); } await modelHelpers.OpenFlyout(new LockedTimer(modelHelpers)); foreach (var hiddenFlyout in modelHelpers.GetHiddenFlyouts()) { await modelHelpers.OpenFlyout(hiddenFlyout); } } }