From b0456d46a186bac69a11e2aae199e5c061a511a8 Mon Sep 17 00:00:00 2001 From: Jumar Macato Date: Mon, 21 May 2018 21:15:45 +0800 Subject: [PATCH] Fix all remaining nits - this commit will be used as a breakpoint for the upcoming syntax reimplementation. --- src/Avalonia.Animation/Easing/Easing.cs | 10 +++--- src/Avalonia.Controls/ProgressBar.cs | 33 +++---------------- src/Avalonia.Visuals/Animation/CrossFade.cs | 18 ++-------- src/Avalonia.Visuals/Animation/PageSlide.cs | 26 +++------------ .../AvaloniaDefaultTypeConverters.cs | 8 +---- 5 files changed, 17 insertions(+), 78 deletions(-) diff --git a/src/Avalonia.Animation/Easing/Easing.cs b/src/Avalonia.Animation/Easing/Easing.cs index 00ebacafe8..62bcf723fb 100644 --- a/src/Avalonia.Animation/Easing/Easing.cs +++ b/src/Avalonia.Animation/Easing/Easing.cs @@ -1,4 +1,4 @@ -using Avalonia.Collections; +using Avalonia.Collections; using System; using System.Collections.Generic; using System.Text; @@ -28,17 +28,15 @@ namespace Avalonia.Animation.Easings /// Returns the instance of the parsed type. public static Easing Parse(string e) { - // TODO: There should be a better way to - // find all the subclasses than this method... if (_easingTypes == null) { _easingTypes = new Dictionary(); - var derivedTypes = AppDomain.CurrentDomain.GetAssemblies() - .SelectMany(p => p.GetTypes()) + // Fetch the built-in easings. + var derivedTypes = typeof(Easing).Assembly.GetTypes() .Where(p => p.Namespace == s_thisType.Namespace) .Where(p => p.IsSubclassOf(s_thisType)) - .Select(p=>p).ToList(); + .Select(p => p).ToList(); foreach (var easingType in derivedTypes) _easingTypes.Add(easingType.Name, easingType); diff --git a/src/Avalonia.Controls/ProgressBar.cs b/src/Avalonia.Controls/ProgressBar.cs index e41d86636a..5e5a460368 100644 --- a/src/Avalonia.Controls/ProgressBar.cs +++ b/src/Avalonia.Controls/ProgressBar.cs @@ -102,11 +102,13 @@ namespace Avalonia.Controls UpdateIndicator(Bounds.Size); } + // TODO: Implement Indeterminate Progress animation + // in xaml (most ideal) or if it's not possible + // then on this class. private class IndeterminateAnimation : IDisposable { private WeakReference _progressBar; - //private IDisposable _indeterminateBindSubscription; - //private TimeSpan _startTime; + private bool _disposed; public bool Disposed => _disposed; @@ -114,12 +116,7 @@ namespace Avalonia.Controls private IndeterminateAnimation(ProgressBar progressBar) { _progressBar = new WeakReference(progressBar); - //_startTime = Animate.Stopwatch.Elapsed; - //_indeterminateBindSubscription = Animate.Timer.TakeWhile(x => (x - _startTime).TotalSeconds <= 4.0) - // .Select(GetAnimationRect) - // .Finally(() => _startTime = Animate.Stopwatch.Elapsed) - // .Repeat() - // .Subscribe(AnimationTick); + } public static IndeterminateAnimation StartAnimation(ProgressBar progressBar) @@ -129,31 +126,11 @@ namespace Avalonia.Controls private Rect GetAnimationRect(TimeSpan time) { - //if (_progressBar.TryGetTarget(out var progressBar)) - //{ - // if (progressBar.Orientation == Orientation.Horizontal) - // return new Rect(-progressBar._indicator.Width - 5 + (time - _startTime).TotalSeconds / 4.0 * (progressBar.Bounds.Width + progressBar._indicator.Width + 10), 0, progressBar._indicator.Bounds.Width, progressBar._indicator.Bounds.Height); - // else - // return new Rect(0, progressBar.Bounds.Height + 5 - (time - _startTime).TotalSeconds / 4.0 * (progressBar.Bounds.Height + progressBar._indicator.Height + 10), progressBar._indicator.Bounds.Width, progressBar._indicator.Bounds.Height); - //} - //else - //{ - // _indeterminateBindSubscription.Dispose(); return Rect.Empty; - //} - } - - private void AnimationTick(Rect rect) - { - //if (_progressBar.TryGetTarget(out var progressBar)) - // progressBar._indicator.Arrange(rect); - //else - // _indeterminateBindSubscription.Dispose(); } public void Dispose() { - //_indeterminateBindSubscription?.Dispose(); _disposed = true; } } diff --git a/src/Avalonia.Visuals/Animation/CrossFade.cs b/src/Avalonia.Visuals/Animation/CrossFade.cs index bf532c62c3..410ad0a3b3 100644 --- a/src/Avalonia.Visuals/Animation/CrossFade.cs +++ b/src/Avalonia.Visuals/Animation/CrossFade.cs @@ -51,6 +51,8 @@ namespace Avalonia.Animation { var tasks = new List(); + // TODO: Implement relevant transition logic here (or discard this class) + // in favor of XAML based transition for pages if (to != null) { to.Opacity = 0; @@ -58,13 +60,6 @@ namespace Avalonia.Animation if (from != null) { - //tasks.Add(Animate.Property( - // (IAvaloniaObject)from, - // Visual.OpacityProperty, - // from.Opacity, - // 0, - // LinearEasing.For(), - // Duration).ToTask()); } if (to != null) @@ -72,17 +67,8 @@ namespace Avalonia.Animation to.Opacity = 0; to.IsVisible = true; - //tasks.Add(Animate.Property( - // (IAvaloniaObject)to, - // Visual.OpacityProperty, - // 0, - // 1, - // LinearEasing.For(), - // Duration).ToTask()); } - //await Task.WhenAll(tasks.ToArray()); - // FIXME: This is temporary until animations are fixed. await Task.Delay(1); diff --git a/src/Avalonia.Visuals/Animation/PageSlide.cs b/src/Avalonia.Visuals/Animation/PageSlide.cs index 2eb0426bc5..13f9e67d29 100644 --- a/src/Avalonia.Visuals/Animation/PageSlide.cs +++ b/src/Avalonia.Visuals/Animation/PageSlide.cs @@ -74,34 +74,18 @@ namespace Avalonia.Animation var distance = Orientation == SlideAxis.Horizontal ? parent.Bounds.Width : parent.Bounds.Height; var translateProperty = Orientation == SlideAxis.Horizontal ? TranslateTransform.XProperty : TranslateTransform.YProperty; + + // TODO: Implement relevant transition logic here (or discard this class) + // in favor of XAML based transition for pages if (from != null) { - //var transform = new TranslateTransform(); - //from.RenderTransform = transform; - //tasks.Add(Animate.Property( - // transform, - // translateProperty, - // 0.0, - // forward ? -distance : distance, - // LinearEasing.For(), - // Duration).ToTask()); + } if (to != null) { - //var transform = new TranslateTransform(); - //to.RenderTransform = transform; - to.IsVisible = true; - //tasks.Add(Animate.Property( - // transform, - // translateProperty, - // forward ? distance : -distance, - // 0.0, - // LinearEasing.For(), - // Duration).ToTask()); - } - //await Task.WhenAll(tasks.ToArray()); + } // FIXME: This is temporary until animations are fixed. await Task.Delay(1); diff --git a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaDefaultTypeConverters.cs b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaDefaultTypeConverters.cs index 209b326255..21b9f2586a 100644 --- a/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaDefaultTypeConverters.cs +++ b/src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaDefaultTypeConverters.cs @@ -1,19 +1,13 @@ -using System; +using System; using System.Collections.Generic; -using System.Globalization; -using System.Reflection; using Avalonia.Markup.Xaml.Converters; using Avalonia.Media; using Avalonia.Media.Imaging; using Avalonia.Styling; -using Portable.Xaml.ComponentModel; -using System.ComponentModel; using Avalonia.Controls; using Avalonia.Input; using Avalonia.Collections; using Avalonia.Controls.Templates; -using Avalonia.Animation; -using Avalonia.Animation.Easings; namespace Avalonia.Markup.Xaml.PortableXaml {