Beispiel #1
0
        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;
            }
        }
Beispiel #2
0
        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);
                }
            }
        }