using Alphaleonis.Win32.Filesystem; using ReactiveUI; using ReactiveUI.Fody.Helpers; using System.Collections.ObjectModel; using System.Linq; using System.Reactive.Linq; using Wabbajack.Common; using Wabbajack.Lib; using Wabbajack.Lib.ModListRegistry; namespace Wabbajack.UI { public class ModeSelectionWindowVM : ViewModel { public ObservableCollection ModLists { get; } = new ObservableCollection(ModlistMetadata.LoadFromGithub()); [Reactive] public ModlistMetadata SelectedModList { get; set; } private readonly ObservableAsPropertyHelper _canInstall; public bool CanInstall => _canInstall.Value; public ModeSelectionWindowVM() { _canInstall = this.WhenAny(x => x.SelectedModList) .Select(x => x != null) .ToProperty(this, nameof(CanInstall)); } internal string Download() { if (!Directory.Exists(Consts.ModListDownloadFolder)) Directory.CreateDirectory(Consts.ModListDownloadFolder); string dest = Path.Combine(Consts.ModListDownloadFolder, SelectedModList.Links.MachineURL + ExtensionManager.Extension); var window = new DownloadWindow(SelectedModList.Links.Download, SelectedModList.Title, SelectedModList.Links.DownloadMetadata?.Size ?? 0, dest); window.ShowDialog(); if (window.Result == DownloadWindow.WindowResult.Completed) return dest; return null; } } }