예제 #1
0
        public async void StartShortBreak()
        {
            ShortBreakHandler.Stop();
            LongBreakHandler.Stop();

            UIViewModels.HeaderMenu.ManualBreakEnabled = false;
            UIViewModels.ShortLongBreakTimeRemaining.NextShortBreak = App.LocalizedEnvironment.Translation.EyesGuard.Resting;
            UIViewModels.NotifyIcon.NextShortBreak = LocalizedEnvironment.Translation.EyesGuard.Resting;

            NextShortBreak      = App.Configuration.ShortBreakGap;
            ShortBreakShownOnce = true;
            var shortWindow = new ShortBreakWindow()
            {
                DataContext = UIViewModels.ShortBreak
            };

            ShortBreakVisibleTime = App.Configuration.ShortBreakDuration;
            UIViewModels.ShortBreak.TimeRemaining = ((int)ShortBreakVisibleTime.TotalSeconds).ToString();
            UIViewModels.ShortBreak.ShortMessage  = GetShortWindowMessage();
            try
            {
                await shortWindow.ShowUsingLinearAnimationAsync();

                shortWindow.Show();
                shortWindow.BringIntoView();
                shortWindow.Focus();
            }
            catch { }

            ShortDurationCounter.Start();
        }
예제 #2
0
        private async void EndShortBreak()
        {
            if (Configuration.SaveStats)
            {
                Configuration.ShortBreaksCompleted++;
                UpdateStats();
            }

            UIViewModels.ShortLongBreakTimeRemaining.NextShortBreak = LocalizedEnvironment.Translation.EyesGuard.Waiting;
            UIViewModels.NotifyIcon.NextShortBreak = LocalizedEnvironment.Translation.EyesGuard.Waiting;

            await CurrentShortBreakWindow.HideUsingLinearAnimationAsync();

            if (CurrentShortBreakWindow != null)
            {
                ((ShortBreakWindow)CurrentShortBreakWindow).LetItClose = true;
                CurrentShortBreakWindow.Close();
                CurrentShortBreakWindow = null;
            }
            if (!App.Configuration.OnlyOneShortBreak && Configuration.ProtectionState == GuardStates.Protecting)
            {
                ShortBreakHandler.Start();
            }
            LongBreakHandler.Start();
            ShortDurationCounter.Stop();

            UIViewModels.HeaderMenu.ManualBreakEnabled = true;
        }
예제 #3
0
        public static void UpdateTimeHandlers()
        {
            if (Configuration.ProtectionState == GuardStates.Protecting)
            {
                if (!(Configuration.OnlyOneShortBreak && ShortBreakShownOnce))
                {
                    ShortBreakHandler.Start();
                }

                LongBreakHandler.Start();
            }
            else if (Configuration.ProtectionState == GuardStates.NotProtecting)
            {
                ShortBreakHandler.Stop();
                LongBreakHandler.Stop();
            }
        }
예제 #4
0
        public async void StartLongBreak()
        {
            ShortBreakHandler.Stop();
            LongBreakHandler.Stop();
            UIViewModels.HeaderMenu.ManualBreakEnabled             = false;
            UIViewModels.ShortLongBreakTimeRemaining.NextLongBreak = LocalizedEnvironment.Translation.EyesGuard.Resting;
            UIViewModels.NotifyIcon.NextLongBreak = LocalizedEnvironment.Translation.EyesGuard.Resting;

            NextShortBreak = App.Configuration.ShortBreakGap;
            NextLongBreak  = App.Configuration.LongBreakGap;

            var longWindow = new LongBreakWindow()
            {
                DataContext = UIViewModels.LongBreak
            };

            LongBreakVisibleTime = App.Configuration.LongBreakDuration;
            UIViewModels.LongBreak.TimeRemaining =
                LocalizedEnvironment.Translation.EyesGuard.LongBreakTimeRemaining.FormatWith(new
            {
                LongBreakVisibleTime.Hours,
                LongBreakVisibleTime.Minutes,
                LongBreakVisibleTime.Seconds
            });

            UIViewModels.LongBreak.CanCancel = (Configuration.ForceUserToBreak) ? Visibility.Collapsed : Visibility.Visible;

            if (CurrentShortBreakWindow != null)
            {
                ((ShortBreakWindow)CurrentShortBreakWindow).LetItClose = true;
                CurrentShortBreakWindow.Close();
                CurrentShortBreakWindow = null;
            }
            ShortDurationCounter.Stop();
            await longWindow.ShowUsingLinearAnimationAsync();

            longWindow.Show();
            longWindow.BringIntoView();
            longWindow.Focus();

            LongDurationCounter.Start();
        }
예제 #5
0
        private async Task EndLongBreak()
        {
            ((LongBreakWindow)CurrentLongBreakWindow).LetItClose = true;
            if (Configuration.SaveStats)
            {
                Configuration.LongBreaksCompleted++;
                UpdateStats();
            }
            await CurrentLongBreakWindow.HideUsingLinearAnimationAsync();

            CurrentLongBreakWindow.Close();
            CurrentLongBreakWindow = null;
            ShortBreakShownOnce    = false;
            if (Configuration.ProtectionState == GuardStates.Protecting)
            {
                ShortBreakHandler.Start();
                LongBreakHandler.Start();
            }
            LongDurationCounter.Stop();

            UIViewModels.HeaderMenu.ManualBreakEnabled = true;
        }
예제 #6
0
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            // Check if application is running by startup
            if (e.Args.Length > 0 && e.Args[0] == "/auto")
            {
                LaunchMinimized = true;
            }

            Configurations.Configuration.InitializeLocalFolder();
            Configurations.Configuration.LoadSettingsFromFile();

            InitalizeLocalizedEnvironment();

            if (programInstancesCount > 1)
            {
                MessageBox.Show(LocalizedEnvironment.Translation.Application.DoNotRunMultipleInstances);
                Shutdown();
            }

            InitializeIdleDetector(Configuration.SystemIdleDetectionEnabled);

            ToolTipService.ShowDurationProperty.OverrideMetadata(
                typeof(DependencyObject), new FrameworkPropertyMetadata(int.MaxValue));

            if (Configuration.CustomShortMessages.Length == 0)
            {
                Configuration.CustomShortMessages = new string[]
                {
                    "Stare far-off"
                };
            }

            BasePrequirementsLoaded = true;

            // Ignore paused protecting state
            if (Configuration.ProtectionState == GuardStates.PausedProtecting)
            {
                Configuration.ProtectionState = GuardStates.Protecting;
            }

            if ((int)Configuration.ShortBreakGap.TotalMinutes < 1)
            {
                Configuration.ShortBreakGap = new TimeSpan(0, 1, 0);
            }

            if ((int)Configuration.LongBreakGap.TotalMinutes < 5)
            {
                Configuration.LongBreakGap = new TimeSpan(0, 5, 0);
            }

            if ((int)Configuration.ShortBreakDuration.TotalSeconds < 2)
            {
                Configuration.ShortBreakDuration = new TimeSpan(0, 0, 2);
            }

            if ((int)Configuration.LongBreakDuration.TotalSeconds < 5)
            {
                Configuration.LongBreakDuration = new TimeSpan(0, 0, 5);
            }

            Configuration.SaveSettingsToFile();

            NextShortBreak        = Configuration.ShortBreakGap;
            NextLongBreak         = Configuration.LongBreakGap;
            ShortBreakVisibleTime = Configuration.ShortBreakDuration;
            LongBreakVisibleTime  = Configuration.LongBreakDuration;

            if (Configuration.ProtectionState == GuardStates.Protecting)
            {
                ShortBreakHandler.Start();
                LongBreakHandler.Start();
            }

            UpdateShortTimeString();
            UpdateLongTimeString();
            UpdateKeyTimeVisible();
            UpdateStats();

            ShortBreakHandler.Tick += ShortBreakHandler_Tick;
            LongBreakHandler.Tick  += LongBreakHandler_Tick;
            PauseHandler.Tick      += PauseHandler_Tick;

            ShortDurationCounter.Tick += ShortDurationCounter_Tick;
            LongDurationCounter.Tick  += LongDurationCounter_Tick;

            TaskbarIcon             = "App.GlobalTaskbarIcon".Translate <TaskbarIcon>();
            TaskbarIcon.DataContext = UIViewModels.NotifyIcon;

            UpdateTaskbarIcon();

            if (TaskbarIcon != null && !Configuration.TrayNotificationSaidBefore)
            {
                TaskbarIcon.ShowBalloonTip(
                    LocalizedEnvironment.Translation.Application.Notifications.FirstLaunch.Title,
                    LocalizedEnvironment.Translation.Application.Notifications.FirstLaunch.Message,
                    BalloonIcon.Info);

                Configuration.TrayNotificationSaidBefore = true;
                Configuration.SaveSettingsToFile();
            }
        }