void Init() { Parallel.ForEach(installers, installer => { try { installer.Init(); } catch (Exception ex) { eventAggregator.PublishOnUIThread(new FailureEvent { FailureDescription = $"Failed to get release information for {installer.Name}", FailureText = ex.Message }); } }); var i = 0; Items = installers .OrderBy(x => x.ImageName) .Select(x => new Item { Order = i++, Name = x.Name, ImageUrl = GetImage(x.ImageName), Description = x.Description, Status = x.Status, EventAggregator = eventAggregator, Selected = (x.InstallState != InstallState.Installed) && x.SelectedByDefault, CheckBoxVisible = x.InstallState != InstallState.Installed ? Visibility.Visible : Visibility.Collapsed, UninstallVisible = x.InstallState != InstallState.NotInstalled ? Visibility.Visible : Visibility.Hidden, UninstallText = $"Uninstall {x.Name}", Installer = x }).ToList(); IsInstallEnabled = Items.Any(pd => pd.Selected); Items.BindActionToPropChanged(() => { IsInstallEnabled = Items.Any(p => p.Selected); }, "Selected"); LoadingVisibility = Visibility.Collapsed; if (PendingRestartAndResume.ResumedFromRestart) { var pendingInstalls = PendingRestartAndResume.Installs(); if (pendingInstalls.Count > 0) { foreach (var item in Items) { if (pendingInstalls.Contains(item.Name) && item.CheckBoxVisible == Visibility.Visible) { item.Selected = true; } else { item.Selected = false; } } eventAggregator.PublishOnUIThread(new ResumeInstallCommand { Installs = pendingInstalls }); } PendingRestartAndResume.CleanupResume(); } }
public SelectItemsViewModel(IEnumerable <IInstaller> installers, IEventAggregator eventAggregator, PendingRestartAndResume pendingRestartAndResume, ILifetimeScope lifetimeScope, IWindowManager windowManager, InstallActionValidator installActionValidator) { DisplayName = "Selected Items"; this.installers = installers.ToList(); this.eventAggregator = eventAggregator; this.PendingRestartAndResume = pendingRestartAndResume; this.windowManager = windowManager; this.installActionValidator = installActionValidator; this.lifetimeScope = lifetimeScope; }
public Installer(IEnumerable <IInstaller> installers, IEventAggregator eventAggregator, PendingRestartAndResume pendingRestartAndResume) { this.installers = installers.ToList(); this.eventAggregator = eventAggregator; this.pendingRestartAndResume = pendingRestartAndResume; }