BackNavigatingVM. Removed navigation stack

This commit is contained in:
Justin Swanson 2020-01-04 20:33:38 -06:00
parent cf2f988156
commit 2ab10fe1bb
4 changed files with 41 additions and 15 deletions

View File

@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reactive.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using Wabbajack.Common;
using Wabbajack.Lib;
namespace Wabbajack
{
public class BackNavigatingVM : ViewModel
{
[Reactive]
public ViewModel NavigateBackTarget { get; set; }
public ICommand BackCommand { get; }
public BackNavigatingVM(MainWindowVM mainWindowVM)
{
BackCommand = ReactiveCommand.Create(
execute: () => Utils.CatchAndLog(() => mainWindowVM.ActivePane = NavigateBackTarget),
canExecute: this.WhenAny(x => x.NavigateBackTarget)
.Select(x => x != null)
.ObserveOnGuiThread());
}
}
}

View File

@ -5,20 +5,19 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using Wabbajack.Lib;
using Wabbajack.Lib.Downloaders;
namespace Wabbajack
{
public class LoginManagerVM : ViewModel
public class LoginManagerVM : BackNavigatingVM
{
private MainWindowVM mainWindowVM;
public ICommand BackCommand { get; }
public List<INeedsLogin> Downloaders { get; }
public LoginManagerVM(MainWindowVM mainWindowVM)
: base(mainWindowVM)
{
BackCommand = ReactiveCommand.Create(() => mainWindowVM.NavigateBack());
Downloaders = DownloadDispatcher.Downloaders.OfType<INeedsLogin>().ToList();
}
}

View File

@ -1,4 +1,4 @@
using DynamicData;
using DynamicData;
using DynamicData.Binding;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
@ -40,8 +40,6 @@ namespace Wabbajack
public readonly UserInterventionHandlers UserInterventionHandlers;
public readonly LoginManagerVM LoginManagerVM;
public readonly List<ViewModel> NavigationTrail = new List<ViewModel>();
public ICommand CopyVersionCommand { get; }
public ICommand ShowLoginManagerVM { get; }
@ -150,16 +148,14 @@ namespace Wabbajack
installer.ModListLocation.TargetPath = path;
}
public void NavigateBack()
{
var prev = NavigationTrail.Last();
NavigationTrail.RemoveAt(NavigationTrail.Count - 1);
ActivePane = prev;
}
public void NavigateTo(ViewModel vm)
{
NavigationTrail.Add(ActivePane);
ActivePane = vm;
}
public void NavigateTo(BackNavigatingVM vm)
{
vm.NavigateBackTarget = ActivePane;
ActivePane = vm;
}

View File

@ -172,6 +172,7 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Compile Include="View Models\BackNavigatingVM.cs" />
<Compile Include="Views\Common\AttentionBorder.xaml.cs">
<DependentUpon>AttentionBorder.xaml</DependentUpon>
</Compile>