mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Fix some wiring on the launcher page
This commit is contained in:
parent
6bc1662399
commit
f7a9be2d7e
@ -3,9 +3,9 @@
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||
x:Class="Wabbajack.App.Screens.LauncherScreen">
|
||||
x:Class="Wabbajack.App.Screens.LauncherView">
|
||||
<Grid RowDefinitions="40, *, Auto">
|
||||
<TextBlock Grid.Row="0" x:Name="StatusText" FontSize="20" FontWeight="Bold">[20/30] Installing Files</TextBlock>
|
||||
<TextBlock Grid.Row="0" x:Name="StatusText" FontSize="20" FontWeight="Bold"></TextBlock>
|
||||
<Viewbox Grid.Row="1" HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Stretch="Uniform">
|
||||
|
@ -7,15 +7,17 @@ using Wabbajack.App.Views;
|
||||
|
||||
namespace Wabbajack.App.Screens
|
||||
{
|
||||
public partial class LauncherScreen : ScreenBase<LauncherViewModel>
|
||||
public partial class LauncherView : ScreenBase<LauncherViewModel>
|
||||
{
|
||||
public LauncherScreen()
|
||||
public LauncherView()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.WhenActivated(disposables =>
|
||||
{
|
||||
this.OneWayBind(ViewModel, vm => vm.Image, view => view.SlideImage.Source)
|
||||
.DisposeWith(disposables);
|
||||
this.OneWayBind(ViewModel, vm => vm.Title, view => view.StatusText.Text)
|
||||
.DisposeWith(disposables);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -23,6 +23,9 @@ namespace Wabbajack.App.Screens
|
||||
[Reactive]
|
||||
public InstallationConfigurationSetting? Setting { get; set; }
|
||||
|
||||
[Reactive]
|
||||
public string Title { get; set; }
|
||||
|
||||
public LauncherViewModel(InstallationStateManager manager)
|
||||
{
|
||||
Activator = new ViewModelActivator();
|
||||
@ -31,6 +34,7 @@ namespace Wabbajack.App.Screens
|
||||
{
|
||||
this.WhenAnyValue(v => v.InstallFolder)
|
||||
.SelectAsync(disposables, async folder => await manager.GetByInstallFolder(folder))
|
||||
.ObserveOn(RxApp.MainThreadScheduler)
|
||||
.Where(v => v != null)
|
||||
.BindTo(this, vm => vm.Setting)
|
||||
.DisposeWith(disposables);
|
||||
@ -40,7 +44,13 @@ namespace Wabbajack.App.Screens
|
||||
.Select(v => new Bitmap((v!.Image).ToString()))
|
||||
.BindTo(this, vm => vm.Image)
|
||||
.DisposeWith(disposables);
|
||||
|
||||
|
||||
this.WhenAnyValue(v => v.Setting)
|
||||
.Where(v => v is { Metadata: { } })
|
||||
.Select(v => $"{v!.Metadata!.Title} v{v!.Metadata.Version}")
|
||||
.BindTo(this, vm => vm.Title)
|
||||
.DisposeWith(disposables);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -46,6 +46,8 @@ namespace Wabbajack.App
|
||||
services.AddSingleton<IScreenView, StandardInstallationView>();
|
||||
services.AddSingleton<IScreenView, SettingsView>();
|
||||
services.AddSingleton<IScreenView, BrowseView>();
|
||||
services.AddSingleton<IScreenView, LauncherView>();
|
||||
|
||||
services.AddSingleton<InstallationStateManager>();
|
||||
services.AddSingleton<HttpClient>();
|
||||
|
||||
@ -56,6 +58,7 @@ namespace Wabbajack.App
|
||||
services.AddAllSingleton<IReceiverMarker, NexusLoginViewModel>();
|
||||
services.AddAllSingleton<IReceiverMarker, LoversLabOAuthLoginViewModel>();
|
||||
services.AddAllSingleton<IReceiverMarker, VectorPlexusOAuthLoginViewModel>();
|
||||
services.AddAllSingleton<IReceiverMarker, LauncherViewModel>();
|
||||
|
||||
// Services
|
||||
services.AddAllSingleton<IDownloader, IDownloader<Manual>, ManualDownloader>();
|
||||
|
@ -14,9 +14,11 @@ using ReactiveUI.Fody.Helpers;
|
||||
using ReactiveUI.Validation.Helpers;
|
||||
using Wabbajack.App.Interfaces;
|
||||
using Wabbajack.App.Messages;
|
||||
using Wabbajack.App.Models;
|
||||
using Wabbajack.App.Screens;
|
||||
using Wabbajack.App.Views;
|
||||
using Wabbajack.Common;
|
||||
using Wabbajack.Paths.IO;
|
||||
using Wabbajack.RateLimiter;
|
||||
|
||||
namespace Wabbajack.App.ViewModels
|
||||
@ -28,6 +30,7 @@ namespace Wabbajack.App.ViewModels
|
||||
private readonly IResource[] _resources;
|
||||
private StatusReport[] _prevReport;
|
||||
private readonly Task _resourcePoller;
|
||||
private readonly InstallationStateManager _manager;
|
||||
|
||||
[Reactive]
|
||||
public Control CurrentScreen { get; set; }
|
||||
@ -44,11 +47,13 @@ namespace Wabbajack.App.ViewModels
|
||||
[Reactive]
|
||||
public string ResourceStatus { get; set; }
|
||||
|
||||
public MainWindowViewModel(IEnumerable<IScreenView> screens, IEnumerable<IResource> resources, IServiceProvider provider)
|
||||
public MainWindowViewModel(IEnumerable<IScreenView> screens, IEnumerable<IResource> resources, IServiceProvider provider,
|
||||
InstallationStateManager manager)
|
||||
{
|
||||
_provider = provider;
|
||||
_screens = screens;
|
||||
_resources = resources.ToArray();
|
||||
_manager = manager;
|
||||
|
||||
_prevReport = NextReport();
|
||||
|
||||
@ -73,9 +78,26 @@ namespace Wabbajack.App.ViewModels
|
||||
.DisposeWith(disposables);
|
||||
|
||||
});
|
||||
|
||||
Receive(new NavigateTo(typeof(ModeSelectionViewModel)));
|
||||
|
||||
LoadFirstScreen().FireAndForget();
|
||||
|
||||
}
|
||||
|
||||
private async Task LoadFirstScreen()
|
||||
{
|
||||
var setting = await _manager.GetLastState();
|
||||
if (setting.Install != default && setting.Install.DirectoryExists())
|
||||
{
|
||||
BreadCrumbs =
|
||||
BreadCrumbs.Push((Control)_screens.First(s => s.ViewModelType == typeof(ModeSelectionViewModel)));
|
||||
|
||||
MessageBus.Instance.Send(new ConfigureLauncher(setting.Install));
|
||||
Receive(new NavigateTo(typeof(LauncherViewModel)));
|
||||
}
|
||||
else
|
||||
{
|
||||
Receive(new NavigateTo(typeof(ModeSelectionViewModel)));
|
||||
}
|
||||
}
|
||||
|
||||
private StatusReport[] NextReport()
|
||||
|
Loading…
Reference in New Issue
Block a user