public void Hide(bool animate = true, bool checkHideStatus = true, bool checkIdleStatus = true) { KeepOpenForIntro = false; KeepOpenUntilIdle = false; if (_view.AnimationRunning || !_view.IsVisible) { return; } if (checkHideStatus && !IsHideable()) { return; } if (checkIdleStatus && !_view.IsIdle) { KeepOpenUntilIdle = true; return; } if (animate && _settings.Style.AnimationTime != 0) { _view.Animate(AnimationMode.Hide); } else { _view.Hide(); } _view.ViewModel.OnHide(); }
public override void Start(object[] args = null) { base.Start(args); Controller.ApplyScreenSettings(WidgetModel.GameOrientationSettings); WidgetView.Hide(); }
public static void Animate(this WidgetView view, AnimationMode animationMode, bool focus = false, Action astartAction = null, Action aendAction = null, bool?isDocked = null, HorizontalAlignment?dockHorizontalAlignment = null, VerticalAlignment?dockVerticalAlignment = null) { var settings = view.Id.GetSettings(); var horizontalAlignment = dockHorizontalAlignment ?? settings.HorizontalAlignment; var verticalAlignment = dockVerticalAlignment ?? settings.VerticalAlignment; var docked = isDocked ?? settings.IsDocked; view.RenderTransformOrigin = new Point(0.5, 0.5); if (docked) { switch (horizontalAlignment) { case HorizontalAlignment.Left: view.RenderTransformOrigin = new Point(0, view.RenderTransformOrigin.Y); break; case HorizontalAlignment.Right: view.RenderTransformOrigin = new Point(1, view.RenderTransformOrigin.Y); break; } switch (verticalAlignment) { case VerticalAlignment.Top: view.RenderTransformOrigin = new Point(view.RenderTransformOrigin.X, 0); break; case VerticalAlignment.Bottom: view.RenderTransformOrigin = new Point(view.RenderTransformOrigin.X, 1); break; } } Action startAction = delegate { if (animationMode == AnimationMode.Show) { view.Show(); } astartAction?.Invoke(); view.AnimationRunning = true; }; Action finishAction = delegate { if (animationMode == AnimationMode.Hide) { view.Hide(); } else { if (focus && view.Settings.RefocusMainElementOnShow) { view.FocusMainElement(); } } aendAction?.Invoke(); view.AnimationRunning = false; }; if (settings.Style.AnimationType == AnimationType.None) { startAction(); finishAction(); return; } var doubleAnimation = new DoubleAnimation { Duration = new Duration(TimeSpan.FromMilliseconds(settings.Style.AnimationTime)), From = animationMode == AnimationMode.Show ? 0 : 1, To = animationMode == AnimationMode.Show ? 1 : 0, FillBehavior = FillBehavior.Stop, EasingFunction = settings.Style.AnimationEase ? new SineEase { EasingMode = animationMode == AnimationMode.Show ? EasingMode.EaseIn : EasingMode.EaseOut } : null }; // Start animation. startAction(); switch (settings.Style.AnimationType) { case AnimationType.Fade: var storyBoard = new Storyboard(); storyBoard.Completed += (sender, args) => finishAction(); storyBoard.Children.Add(doubleAnimation); Storyboard.SetTarget(doubleAnimation, view); Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath(UIElement.OpacityProperty)); storyBoard.Begin(); break; case AnimationType.Slide: var counter = 0; doubleAnimation.Completed += delegate { counter++; if (counter == 2) { finishAction(); } }; var trans = new ScaleTransform(); view.RenderTransform = trans; trans.BeginAnimation(ScaleTransform.ScaleXProperty, doubleAnimation); trans.BeginAnimation(ScaleTransform.ScaleYProperty, doubleAnimation); break; default: finishAction(); break; } }