Router - Require routable VMs to implement new RoutableScreen

This commit is contained in:
Robert committed 2023-09-02 15:52:17 +02:00
1 parent 318ec99ad4
commit c132edeb51
43 files changed
+284 -287

No files matched your search

@@ -1,8 +1,9 @@
using Artemis.UI.Shared;
using Artemis.UI.Shared.Routing;
namespace Artemis.UI.Screens.Root;
public class BlankViewModel : ViewModelBase, IMainScreenViewModel
public class BlankViewModel : RoutableScreen, IMainScreenViewModel
{
/// <inheritdoc />
public ViewModelBase? TitleBarViewModel => null;
@@ -1,5 +1,6 @@
using System;
using System.Reactive.Disposables;
using Artemis.UI.Shared.Routing;
using Avalonia.ReactiveUI;
using Avalonia.Threading;
using ReactiveUI;
@@ -14,7 +15,7 @@ public partial class RootView : ReactiveUserControl<RootViewModel>
this.WhenActivated(d => ViewModel.WhenAnyValue(vm => vm.Screen).Subscribe(Navigate).DisposeWith(d));
}
private void Navigate(IMainScreenViewModel viewModel)
private void Navigate(RoutableScreen viewModel)
{
try
{
+4 -6
View File
@@ -18,7 +18,7 @@ using ReactiveUI;
namespace Artemis.UI.Screens.Root;
public class RootViewModel : RoutableScreen<IMainScreenViewModel>, IMainWindowProvider
public class RootViewModel : RoutableHostScreen<RoutableScreen>, IMainWindowProvider
{
private readonly ICoreService _coreService;
private readonly IDebugService _debugService;
@@ -100,12 +100,10 @@ public class RootViewModel : RoutableScreen<IMainScreenViewModel>, IMainWindowPr
_router.GoForward();
}
private void UpdateTitleBarViewModel(IMainScreenViewModel? viewModel)
private void UpdateTitleBarViewModel(RoutableScreen? viewModel)
{
if (viewModel?.TitleBarViewModel != null)
TitleBarViewModel = viewModel.TitleBarViewModel;
else
TitleBarViewModel = _defaultTitleBarViewModel;
IMainScreenViewModel? mainScreenViewModel = viewModel as IMainScreenViewModel;
TitleBarViewModel = mainScreenViewModel?.TitleBarViewModel ?? _defaultTitleBarViewModel;
}
private void CurrentMainWindowOnClosing(object? sender, EventArgs e)