Browse Source

Fix all remaining nits - this commit will be used as a breakpoint for the upcoming syntax reimplementation.

pull/1461/head
Jumar Macato 8 years ago
parent
commit
b0456d46a1
  1. 10
      src/Avalonia.Animation/Easing/Easing.cs
  2. 33
      src/Avalonia.Controls/ProgressBar.cs
  3. 18
      src/Avalonia.Visuals/Animation/CrossFade.cs
  4. 26
      src/Avalonia.Visuals/Animation/PageSlide.cs
  5. 8
      src/Markup/Avalonia.Markup.Xaml/PortableXaml/AvaloniaDefaultTypeConverters.cs

10
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>Returns the instance of the parsed type.</returns>
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<string, Type>();
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);

33
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> _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>(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;
}
}

18
src/Avalonia.Visuals/Animation/CrossFade.cs

@ -51,6 +51,8 @@ namespace Avalonia.Animation
{
var tasks = new List<Task>();
// 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<double>(),
// 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<double>(),
// Duration).ToTask());
}
//await Task.WhenAll(tasks.ToArray());
// FIXME: This is temporary until animations are fixed.
await Task.Delay(1);

26
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<double>(),
// 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<double>(),
// Duration).ToTask());
}
//await Task.WhenAll(tasks.ToArray());
}
// FIXME: This is temporary until animations are fixed.
await Task.Delay(1);

8
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
{

Loading…
Cancel
Save