mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Save the last install path, and load it next time we open the app
This commit is contained in:
parent
7faa65ca77
commit
de21eebe14
12
Wabbajack.App.Wpf/Messages/LoadLastLoadedModlist.cs
Normal file
12
Wabbajack.App.Wpf/Messages/LoadLastLoadedModlist.cs
Normal file
@ -0,0 +1,12 @@
|
||||
|
||||
using ReactiveUI;
|
||||
|
||||
namespace Wabbajack.Messages;
|
||||
|
||||
public class LoadLastLoadedModlist
|
||||
{
|
||||
public static void Send()
|
||||
{
|
||||
MessageBus.Current.SendMessage(new LoadLastLoadedModlist());
|
||||
}
|
||||
}
|
@ -24,6 +24,7 @@ using Wabbajack.Paths;
|
||||
using Wabbajack.RateLimiter;
|
||||
using Wabbajack.View_Models;
|
||||
using Wabbajack.Paths.IO;
|
||||
using Wabbajack.Services.OSIntegrated;
|
||||
using Consts = Wabbajack.Consts;
|
||||
using KnownFolders = Wabbajack.Paths.IO.KnownFolders;
|
||||
|
||||
@ -36,6 +37,8 @@ public enum ModManager
|
||||
|
||||
public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
|
||||
{
|
||||
private const string LastLoadedModlist = "last-loaded-modlist";
|
||||
|
||||
[Reactive]
|
||||
public ModList ModList { get; set; }
|
||||
|
||||
@ -72,7 +75,8 @@ public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
|
||||
private readonly ObservableAsPropertyHelper<bool> _installing;
|
||||
private readonly DTOSerializer _dtos;
|
||||
private readonly ILogger<InstallerVM> _logger;
|
||||
|
||||
private readonly SettingsManager _settingsManager;
|
||||
|
||||
[Reactive]
|
||||
public bool Installing { get; set; }
|
||||
|
||||
@ -89,9 +93,10 @@ public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
|
||||
|
||||
public ReactiveCommand<Unit, Unit> BackCommand { get; }
|
||||
|
||||
public InstallerVM(ILogger<InstallerVM> logger, DTOSerializer dtos) : base(logger)
|
||||
public InstallerVM(ILogger<InstallerVM> logger, DTOSerializer dtos, SettingsManager settingsManager) : base(logger)
|
||||
{
|
||||
_logger = logger;
|
||||
_settingsManager = settingsManager;
|
||||
_dtos = dtos;
|
||||
Installer = new MO2InstallerVM(this);
|
||||
|
||||
@ -119,6 +124,12 @@ public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
|
||||
.Subscribe(msg => LoadModlist(msg.Path).FireAndForget())
|
||||
.DisposeWith(CompositeDisposable);
|
||||
|
||||
MessageBus.Current.Listen<LoadLastLoadedModlist>()
|
||||
.Subscribe(msg =>
|
||||
{
|
||||
LoadLastModlist().FireAndForget();
|
||||
});
|
||||
|
||||
this.WhenActivated(disposables =>
|
||||
{
|
||||
ModListLocation.WhenAnyValue(l => l.TargetPath)
|
||||
@ -129,6 +140,13 @@ public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
|
||||
|
||||
}
|
||||
|
||||
private async Task LoadLastModlist()
|
||||
{
|
||||
var lst = await _settingsManager.Load<AbsolutePath>(LastLoadedModlist);
|
||||
if (lst.FileExists())
|
||||
await LoadModlist(lst);
|
||||
}
|
||||
|
||||
private async Task LoadModlist(AbsolutePath path)
|
||||
{
|
||||
using var ll = LoadingLock.WithLoading();
|
||||
@ -140,6 +158,7 @@ public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
|
||||
PopulateSlideShow(ModList);
|
||||
|
||||
ll.Succeed();
|
||||
await _settingsManager.Save(LastLoadedModlist, path);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -148,7 +167,6 @@ public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void PopulateSlideShow(ModList modList)
|
||||
{
|
||||
SlideShowTitle = modList.Name;
|
||||
|
@ -19,11 +19,16 @@ namespace Wabbajack
|
||||
public ICommand BrowseCommand { get; }
|
||||
public ICommand InstallCommand { get; }
|
||||
public ICommand CompileCommand { get; }
|
||||
|
||||
public ReactiveCommand<Unit, Unit> UpdateCommand { get; }
|
||||
|
||||
public ModeSelectionVM()
|
||||
{
|
||||
InstallCommand = ReactiveCommand.Create(() => NavigateToGlobal.Send(NavigateToGlobal.ScreenType.Installer));
|
||||
InstallCommand = ReactiveCommand.Create(() =>
|
||||
{
|
||||
LoadLastLoadedModlist.Send();
|
||||
NavigateToGlobal.Send(NavigateToGlobal.ScreenType.Installer);
|
||||
});
|
||||
CompileCommand = ReactiveCommand.Create(() => NavigateToGlobal.Send(NavigateToGlobal.ScreenType.Compiler));
|
||||
BrowseCommand = ReactiveCommand.Create(() => NavigateToGlobal.Send(NavigateToGlobal.ScreenType.ModListGallery));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user