/// <summary> /// Hide the PlayerStatusBar on mouse inactivity /// </summary> /// <param name="sender">Sender object</param> /// <param name="e">EventArgs</param> private void OnInactivity(object sender, EventArgs e) { // remember mouse position InactiveMousePosition = Mouse.GetPosition(Container); if (!PlayerStatusBar.Opacity.Equals(1.0)) { return; } var opacityAnimation = new DoubleAnimationUsingKeyFrames { Duration = new Duration(TimeSpan.FromSeconds(0.5)), KeyFrames = new DoubleKeyFrameCollection { new EasingDoubleKeyFrame(1.0, KeyTime.FromPercent(0)), new EasingDoubleKeyFrame(0.0, KeyTime.FromPercent(1.0), new PowerEase { EasingMode = EasingMode.EaseInOut }) } }; PlayerStatusBar.BeginAnimation(OpacityProperty, opacityAnimation); DispatcherHelper.CheckBeginInvokeOnUI(async() => { await Task.Delay(500); PlayerStatusBar.Visibility = Visibility.Hidden; }); }
/// <summary> /// Hide the PlayerStatusBar on mouse inactivity /// </summary> /// <param name="sender">Sender object</param> /// <param name="e">EventArgs</param> private void OnInactivity(object sender, EventArgs e) { if (InactiveMousePosition == Mouse.GetPosition(Container)) { var window = System.Windows.Window.GetWindow(this); if (window != null) { window.Cursor = Cursors.None; } var opacityAnimation = new DoubleAnimationUsingKeyFrames { Duration = new Duration(TimeSpan.FromSeconds(0.5)), KeyFrames = new DoubleKeyFrameCollection { new EasingDoubleKeyFrame(0.0, KeyTime.FromPercent(1d), new PowerEase { EasingMode = EasingMode.EaseInOut }) } }; PlayerStatusBar.BeginAnimation(OpacityProperty, opacityAnimation); UpperPanel.BeginAnimation(OpacityProperty, opacityAnimation); } InactiveMousePosition = Mouse.GetPosition(Container); }
/// <summary> /// Show the PlayerStatusBar on mouse activity /// </summary> /// <param name="sender">Sender object</param> /// <param name="e">EventArgs</param> private async void OnActivity(object sender, PreProcessInputEventArgs e) { await MouseActivitySemaphore.WaitAsync(); if (e.StagingItem == null) { MouseActivitySemaphore.Release(); return; } var inputEventArgs = e.StagingItem.Input; if (!(inputEventArgs is MouseEventArgs) && !(inputEventArgs is KeyboardEventArgs)) { MouseActivitySemaphore.Release(); return; } var mouseEventArgs = e.StagingItem.Input as MouseEventArgs; // no button is pressed and the position is still the same as the application became inactive if (mouseEventArgs?.LeftButton == MouseButtonState.Released && mouseEventArgs.RightButton == MouseButtonState.Released && mouseEventArgs.MiddleButton == MouseButtonState.Released && mouseEventArgs.XButton1 == MouseButtonState.Released && mouseEventArgs.XButton2 == MouseButtonState.Released && InactiveMousePosition == mouseEventArgs.GetPosition(Container)) { MouseActivitySemaphore.Release(); return; } var opacityAnimation = new DoubleAnimationUsingKeyFrames { Duration = new Duration(TimeSpan.FromSeconds(0.1)), KeyFrames = new DoubleKeyFrameCollection { new EasingDoubleKeyFrame(1.0, KeyTime.FromPercent(1.0), new PowerEase { EasingMode = EasingMode.EaseInOut }) } }; PlayerStatusBar.BeginAnimation(OpacityProperty, opacityAnimation); UpperPanel.BeginAnimation(OpacityProperty, opacityAnimation); var window = System.Windows.Window.GetWindow(this); if (window != null) { window.Cursor = Cursors.Arrow; } await Task.Delay(TimeSpan.FromSeconds(1)); MouseActivitySemaphore.Release(); }
/// <summary> /// Show the PlayerStatusBar on mouse activity /// </summary> /// <param name="sender">Sender object</param> /// <param name="e">EventArgs</param> private async void OnActivity(object sender, PreProcessInputEventArgs e) { if (_isMouseActivityCaptured) { return; } _isMouseActivityCaptured = true; var inputEventArgs = e.StagingItem.Input; if (!(inputEventArgs is MouseEventArgs) && !(inputEventArgs is KeyboardEventArgs)) { _isMouseActivityCaptured = false; return; } var mouseEventArgs = e.StagingItem.Input as MouseEventArgs; // no button is pressed and the position is still the same as the application became inactive if (mouseEventArgs?.LeftButton == MouseButtonState.Released && mouseEventArgs.RightButton == MouseButtonState.Released && mouseEventArgs.MiddleButton == MouseButtonState.Released && mouseEventArgs.XButton1 == MouseButtonState.Released && mouseEventArgs.XButton2 == MouseButtonState.Released && InactiveMousePosition == mouseEventArgs.GetPosition(Container)) { _isMouseActivityCaptured = false; return; } var opacityAnimation = new DoubleAnimationUsingKeyFrames { Duration = new Duration(TimeSpan.FromSeconds(0.1)), KeyFrames = new DoubleKeyFrameCollection { new EasingDoubleKeyFrame(1.0, KeyTime.FromPercent(1.0), new PowerEase { EasingMode = EasingMode.EaseInOut }) } }; PlayerStatusBar.BeginAnimation(OpacityProperty, opacityAnimation); await Task.Delay(TimeSpan.FromSeconds(1)); _isMouseActivityCaptured = false; }
/// <summary> /// Hide the PlayerStatusBar on mouse inactivity /// </summary> /// <param name="sender">Sender object</param> /// <param name="e">EventArgs</param> private void OnInactivity(object sender, EventArgs e) { InactiveMousePosition = Mouse.GetPosition(Container); var opacityAnimation = new DoubleAnimationUsingKeyFrames { Duration = new Duration(TimeSpan.FromSeconds(0.5)), KeyFrames = new DoubleKeyFrameCollection { new EasingDoubleKeyFrame(0.0, KeyTime.FromPercent(1d), new PowerEase { EasingMode = EasingMode.EaseInOut }) } }; PlayerStatusBar.BeginAnimation(OpacityProperty, opacityAnimation); }
/// <summary> /// Show the PlayerStatusBar on mouse activity /// </summary> /// <param name="sender">Sender object</param> /// <param name="e">EventArgs</param> private void OnActivity(object sender, PreProcessInputEventArgs e) { var inputEventArgs = e.StagingItem.Input; if (inputEventArgs is MouseEventArgs || inputEventArgs is KeyboardEventArgs) { if (e.StagingItem.Input is MouseEventArgs) { var mouseEventArgs = (MouseEventArgs)e.StagingItem.Input; // no button is pressed and the position is still the same as the application became inactive if (mouseEventArgs.LeftButton == MouseButtonState.Released && mouseEventArgs.RightButton == MouseButtonState.Released && mouseEventArgs.MiddleButton == MouseButtonState.Released && mouseEventArgs.XButton1 == MouseButtonState.Released && mouseEventArgs.XButton2 == MouseButtonState.Released && InactiveMousePosition == mouseEventArgs.GetPosition(Container)) { return; } } if (!PlayerStatusBar.Opacity.Equals(0.0)) { return; } var opacityAnimation = new DoubleAnimationUsingKeyFrames { Duration = new Duration(TimeSpan.FromSeconds(0.1)), KeyFrames = new DoubleKeyFrameCollection { new EasingDoubleKeyFrame(0.0, KeyTime.FromPercent(0)), new EasingDoubleKeyFrame(1.0, KeyTime.FromPercent(1.0), new PowerEase { EasingMode = EasingMode.EaseInOut }) } }; PlayerStatusBar.BeginAnimation(OpacityProperty, opacityAnimation); PlayerStatusBar.Visibility = Visibility.Visible; } }