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.RateLimiter;
|
||||||
using Wabbajack.View_Models;
|
using Wabbajack.View_Models;
|
||||||
using Wabbajack.Paths.IO;
|
using Wabbajack.Paths.IO;
|
||||||
|
using Wabbajack.Services.OSIntegrated;
|
||||||
using Consts = Wabbajack.Consts;
|
using Consts = Wabbajack.Consts;
|
||||||
using KnownFolders = Wabbajack.Paths.IO.KnownFolders;
|
using KnownFolders = Wabbajack.Paths.IO.KnownFolders;
|
||||||
|
|
||||||
@ -36,6 +37,8 @@ public enum ModManager
|
|||||||
|
|
||||||
public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
|
public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
|
||||||
{
|
{
|
||||||
|
private const string LastLoadedModlist = "last-loaded-modlist";
|
||||||
|
|
||||||
[Reactive]
|
[Reactive]
|
||||||
public ModList ModList { get; set; }
|
public ModList ModList { get; set; }
|
||||||
|
|
||||||
@ -72,7 +75,8 @@ public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
|
|||||||
private readonly ObservableAsPropertyHelper<bool> _installing;
|
private readonly ObservableAsPropertyHelper<bool> _installing;
|
||||||
private readonly DTOSerializer _dtos;
|
private readonly DTOSerializer _dtos;
|
||||||
private readonly ILogger<InstallerVM> _logger;
|
private readonly ILogger<InstallerVM> _logger;
|
||||||
|
private readonly SettingsManager _settingsManager;
|
||||||
|
|
||||||
[Reactive]
|
[Reactive]
|
||||||
public bool Installing { get; set; }
|
public bool Installing { get; set; }
|
||||||
|
|
||||||
@ -89,9 +93,10 @@ public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
|
|||||||
|
|
||||||
public ReactiveCommand<Unit, Unit> BackCommand { get; }
|
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;
|
_logger = logger;
|
||||||
|
_settingsManager = settingsManager;
|
||||||
_dtos = dtos;
|
_dtos = dtos;
|
||||||
Installer = new MO2InstallerVM(this);
|
Installer = new MO2InstallerVM(this);
|
||||||
|
|
||||||
@ -119,6 +124,12 @@ public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
|
|||||||
.Subscribe(msg => LoadModlist(msg.Path).FireAndForget())
|
.Subscribe(msg => LoadModlist(msg.Path).FireAndForget())
|
||||||
.DisposeWith(CompositeDisposable);
|
.DisposeWith(CompositeDisposable);
|
||||||
|
|
||||||
|
MessageBus.Current.Listen<LoadLastLoadedModlist>()
|
||||||
|
.Subscribe(msg =>
|
||||||
|
{
|
||||||
|
LoadLastModlist().FireAndForget();
|
||||||
|
});
|
||||||
|
|
||||||
this.WhenActivated(disposables =>
|
this.WhenActivated(disposables =>
|
||||||
{
|
{
|
||||||
ModListLocation.WhenAnyValue(l => l.TargetPath)
|
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)
|
private async Task LoadModlist(AbsolutePath path)
|
||||||
{
|
{
|
||||||
using var ll = LoadingLock.WithLoading();
|
using var ll = LoadingLock.WithLoading();
|
||||||
@ -140,6 +158,7 @@ public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
|
|||||||
PopulateSlideShow(ModList);
|
PopulateSlideShow(ModList);
|
||||||
|
|
||||||
ll.Succeed();
|
ll.Succeed();
|
||||||
|
await _settingsManager.Save(LastLoadedModlist, path);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -148,7 +167,6 @@ public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void PopulateSlideShow(ModList modList)
|
private void PopulateSlideShow(ModList modList)
|
||||||
{
|
{
|
||||||
SlideShowTitle = modList.Name;
|
SlideShowTitle = modList.Name;
|
||||||
|
@ -19,11 +19,16 @@ namespace Wabbajack
|
|||||||
public ICommand BrowseCommand { get; }
|
public ICommand BrowseCommand { get; }
|
||||||
public ICommand InstallCommand { get; }
|
public ICommand InstallCommand { get; }
|
||||||
public ICommand CompileCommand { get; }
|
public ICommand CompileCommand { get; }
|
||||||
|
|
||||||
public ReactiveCommand<Unit, Unit> UpdateCommand { get; }
|
public ReactiveCommand<Unit, Unit> UpdateCommand { get; }
|
||||||
|
|
||||||
public ModeSelectionVM()
|
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));
|
CompileCommand = ReactiveCommand.Create(() => NavigateToGlobal.Send(NavigateToGlobal.ScreenType.Compiler));
|
||||||
BrowseCommand = ReactiveCommand.Create(() => NavigateToGlobal.Send(NavigateToGlobal.ScreenType.ModListGallery));
|
BrowseCommand = ReactiveCommand.Create(() => NavigateToGlobal.Send(NavigateToGlobal.ScreenType.ModListGallery));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user