mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
BackNavigatingVM. Removed navigation stack
This commit is contained in:
parent
cf2f988156
commit
2ab10fe1bb
30
Wabbajack/View Models/BackNavigatingVM.cs
Normal file
30
Wabbajack/View Models/BackNavigatingVM.cs
Normal 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());
|
||||
}
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user