Browse Source

Merge branch 'master' into code-cleanup

pull/2439/head
Steven Kirk 8 years ago
committed by GitHub
parent
commit
354a4f8bdd
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      samples/BindingDemo/App.xaml.cs
  2. 1
      samples/ControlCatalog.Desktop/Program.cs
  3. 1
      samples/ControlCatalog.NetCore/Program.cs
  4. 1
      samples/RenderDemo/App.xaml.cs
  5. 1
      samples/VirtualizationDemo/Program.cs
  6. 7
      src/Avalonia.ReactiveUI/AppBuilderExtensions.cs
  7. 8
      src/Avalonia.ReactiveUI/Attributes.cs
  8. 18
      src/Avalonia.ReactiveUI/AvaloniaActivationForViewFetcher.cs
  9. 2
      src/Avalonia.ReactiveUI/ReactiveUserControl.cs
  10. 2
      src/Avalonia.ReactiveUI/ReactiveWindow.cs
  11. 8
      src/Avalonia.ReactiveUI/RoutedViewHost.cs
  12. 1
      tests/Avalonia.ReactiveUI.UnitTests/AvaloniaActivationForViewFetcherTest.cs
  13. 1
      tests/Avalonia.ReactiveUI.UnitTests/RoutedViewHostTest.cs

1
samples/BindingDemo/App.xaml.cs

@ -3,6 +3,7 @@ using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Logging.Serilog; using Avalonia.Logging.Serilog;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.ReactiveUI;
using Serilog; using Serilog;
namespace BindingDemo namespace BindingDemo

1
samples/ControlCatalog.Desktop/Program.cs

@ -4,6 +4,7 @@ using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Logging.Serilog; using Avalonia.Logging.Serilog;
using Avalonia.Platform; using Avalonia.Platform;
using Avalonia.ReactiveUI;
using Serilog; using Serilog;
namespace ControlCatalog namespace ControlCatalog

1
samples/ControlCatalog.NetCore/Program.cs

@ -4,6 +4,7 @@ using System.Linq;
using System.Threading; using System.Threading;
using Avalonia; using Avalonia;
using Avalonia.Skia; using Avalonia.Skia;
using Avalonia.ReactiveUI;
namespace ControlCatalog.NetCore namespace ControlCatalog.NetCore
{ {

1
samples/RenderDemo/App.xaml.cs

@ -4,6 +4,7 @@
using Avalonia; using Avalonia;
using Avalonia.Logging.Serilog; using Avalonia.Logging.Serilog;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.ReactiveUI;
namespace RenderDemo namespace RenderDemo
{ {

1
samples/VirtualizationDemo/Program.cs

@ -5,6 +5,7 @@ using System;
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Logging.Serilog; using Avalonia.Logging.Serilog;
using Avalonia.ReactiveUI;
using Serilog; using Serilog;
namespace VirtualizationDemo namespace VirtualizationDemo

7
src/Avalonia.ReactiveUI/AppBuilderExtensions.cs

@ -6,10 +6,15 @@ using Avalonia.Threading;
using ReactiveUI; using ReactiveUI;
using Splat; using Splat;
namespace Avalonia namespace Avalonia.ReactiveUI
{ {
public static class AppBuilderExtensions public static class AppBuilderExtensions
{ {
/// <summary>
/// Initializes ReactiveUI framework to use with Avalonia. Registers Avalonia
/// scheduler and Avalonia activation for view fetcher. Always remember to
/// call this method if you are using ReactiveUI in your application.
/// </summary>
public static TAppBuilder UseReactiveUI<TAppBuilder>(this TAppBuilder builder) public static TAppBuilder UseReactiveUI<TAppBuilder>(this TAppBuilder builder)
where TAppBuilder : AppBuilderBase<TAppBuilder>, new() where TAppBuilder : AppBuilderBase<TAppBuilder>, new()
{ {

8
src/Avalonia.ReactiveUI/Attributes.cs

@ -0,0 +1,8 @@
// Copyright (c) The Avalonia Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System.Reflection;
using System.Runtime.CompilerServices;
using Avalonia.Metadata;
[assembly: XmlnsDefinition("http://reactiveui.net", "Avalonia.ReactiveUI")]

18
src/Avalonia.ReactiveUI/AvaloniaActivationForViewFetcher.cs

@ -9,15 +9,24 @@ using Avalonia.VisualTree;
using Avalonia.Controls; using Avalonia.Controls;
using ReactiveUI; using ReactiveUI;
namespace Avalonia namespace Avalonia.ReactiveUI
{ {
/// <summary>
/// Determines when Avalonia IVisuals get activated.
/// </summary>
public class AvaloniaActivationForViewFetcher : IActivationForViewFetcher public class AvaloniaActivationForViewFetcher : IActivationForViewFetcher
{ {
/// <summary>
/// Returns affinity for view.
/// </summary>
public int GetAffinityForView(Type view) public int GetAffinityForView(Type view)
{ {
return typeof(IVisual).GetTypeInfo().IsAssignableFrom(view.GetTypeInfo()) ? 10 : 0; return typeof(IVisual).GetTypeInfo().IsAssignableFrom(view.GetTypeInfo()) ? 10 : 0;
} }
/// <summary>
/// Returns activation observable for activatable Avalonia view.
/// </summary>
public IObservable<bool> GetActivationForView(IActivatable view) public IObservable<bool> GetActivationForView(IActivatable view)
{ {
if (!(view is IVisual visual)) return Observable.Return(false); if (!(view is IVisual visual)) return Observable.Return(false);
@ -25,6 +34,9 @@ namespace Avalonia
return GetActivationForVisual(visual); return GetActivationForVisual(visual);
} }
/// <summary>
/// Listens to Opened and Closed events for Avalonia windows.
/// </summary>
private IObservable<bool> GetActivationForWindowBase(WindowBase window) private IObservable<bool> GetActivationForWindowBase(WindowBase window)
{ {
var windowLoaded = Observable var windowLoaded = Observable
@ -42,6 +54,10 @@ namespace Avalonia
.DistinctUntilChanged(); .DistinctUntilChanged();
} }
/// <summary>
/// Listens to AttachedToVisualTree and DetachedFromVisualTree
/// events for Avalonia IVisuals.
/// </summary>
private IObservable<bool> GetActivationForVisual(IVisual visual) private IObservable<bool> GetActivationForVisual(IVisual visual)
{ {
var visualLoaded = Observable var visualLoaded = Observable

2
src/Avalonia.ReactiveUI/ReactiveUserControl.cs

@ -6,7 +6,7 @@ using Avalonia.VisualTree;
using Avalonia.Controls; using Avalonia.Controls;
using ReactiveUI; using ReactiveUI;
namespace Avalonia namespace Avalonia.ReactiveUI
{ {
/// <summary> /// <summary>
/// A ReactiveUI UserControl that implements <see cref="IViewFor{TViewModel}"/> /// A ReactiveUI UserControl that implements <see cref="IViewFor{TViewModel}"/>

2
src/Avalonia.ReactiveUI/ReactiveWindow.cs

@ -6,7 +6,7 @@ using Avalonia.VisualTree;
using Avalonia.Controls; using Avalonia.Controls;
using ReactiveUI; using ReactiveUI;
namespace Avalonia namespace Avalonia.ReactiveUI
{ {
/// <summary> /// <summary>
/// A ReactiveUI Window that implements <see cref="IViewFor{TViewModel}"/> /// A ReactiveUI Window that implements <see cref="IViewFor{TViewModel}"/>

8
src/Avalonia.ReactiveUI/RoutedViewHost.cs

@ -1,13 +1,17 @@
// Copyright (c) The Avalonia Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System; using System;
using System.Reactive.Disposables; using System.Reactive.Disposables;
using System.Reactive.Linq; using System.Reactive.Linq;
using Avalonia.Animation; using Avalonia.Animation;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Styling; using Avalonia.Styling;
using Avalonia;
using ReactiveUI; using ReactiveUI;
using Splat; using Splat;
namespace Avalonia namespace Avalonia.ReactiveUI
{ {
/// <summary> /// <summary>
/// This control hosts the View associated with ReactiveUI RoutingState, /// This control hosts the View associated with ReactiveUI RoutingState,
@ -157,7 +161,7 @@ namespace Avalonia
return; return;
} }
var viewLocator = ViewLocator ?? ReactiveUI.ViewLocator.Current; var viewLocator = ViewLocator ?? global::ReactiveUI.ViewLocator.Current;
var view = viewLocator.ResolveView(viewModel); var view = viewLocator.ResolveView(viewModel);
if (view == null) throw new Exception($"Couldn't find view for '{viewModel}'. Is it registered?"); if (view == null) throw new Exception($"Couldn't find view for '{viewModel}'. Is it registered?");

1
tests/Avalonia.ReactiveUI.UnitTests/AvaloniaActivationForViewFetcherTest.cs

@ -11,6 +11,7 @@ using DynamicData;
using Xunit; using Xunit;
using Splat; using Splat;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.ReactiveUI;
namespace Avalonia namespace Avalonia
{ {

1
tests/Avalonia.ReactiveUI.UnitTests/RoutedViewHostTest.cs

@ -14,6 +14,7 @@ using Avalonia.Markup.Xaml;
using System.ComponentModel; using System.ComponentModel;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Reactive; using System.Reactive;
using Avalonia.ReactiveUI;
namespace Avalonia namespace Avalonia
{ {

Loading…
Cancel
Save