diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/Model/Interfaces/IPackageRepositories.cs b/src/AddIns/Misc/AddInManager2/Project/Src/Model/Interfaces/IPackageRepositories.cs index 3a2d88990f..2433c11b8d 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/Model/Interfaces/IPackageRepositories.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/Model/Interfaces/IPackageRepositories.cs @@ -14,20 +14,23 @@ namespace ICSharpCode.AddInManager2.Model get; } - IPackageRepository Active - { - get; - } +// IPackageRepository Active +// { +// get; +// } +// +// PackageSource ActiveSource +// { +// get; +// set; +// } - PackageSource ActiveSource - { - get; - set; - } IEnumerable RegisteredPackageSources { get; set; } + + IPackageRepository GetRepositoryFromSource(PackageSource packageSource); } } diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs b/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs index 64c6d21149..26a86c6f70 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs @@ -83,6 +83,22 @@ namespace ICSharpCode.AddInManager2.Model } } + public IPackageRepository GetRepositoryFromSource(PackageSource packageSource) + { + IPackageRepository resultRepository = null; + if (packageSource != null) + { + resultRepository = PackageRepositoryFactory.Default.CreateRepository(packageSource.Source); + } + else + { + // If no active repository is set, get packages from all repositories + resultRepository = _currentRepository; + } + + return resultRepository; + } + private void LoadPackageSources() { _registeredPackageSources.Clear(); diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInsViewModelBase.cs b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInsViewModelBase.cs index 16aa2d97a0..842b8f0522 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInsViewModelBase.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInsViewModelBase.cs @@ -9,6 +9,7 @@ using System.Linq; using System.Text; using System.Windows.Input; using ICSharpCode.AddInManager2.Model; +using ICSharpCode.SharpDevelop; using NuGet; namespace ICSharpCode.AddInManager2.ViewModel @@ -18,6 +19,8 @@ namespace ICSharpCode.AddInManager2.ViewModel private Pages _pages; private int _highlightCount; private string _title; + private PackageSource _activePackageSource; + private IPackageRepository _activePackageRepository; private ObservableCollection _packageSources; @@ -35,6 +38,8 @@ namespace ICSharpCode.AddInManager2.ViewModel private void Initialize() { + _activePackageRepository = null; + // Initialization of internal lists _pages = new Pages(); _highlightCount = 0; @@ -249,7 +254,7 @@ namespace ICSharpCode.AddInManager2.ViewModel protected void UpdatePackageViewModels(IEnumerable newPackageViewModels) { ClearPackages(); - AddInPackages.AddRange(newPackageViewModels); + NuGet.CollectionExtensions.AddRange(AddInPackages, newPackageViewModels); UpdateInstallationState(); } @@ -426,22 +431,36 @@ namespace ICSharpCode.AddInManager2.ViewModel { SelectedPackageSource = oldValue; } + else + { + // Select first source + SelectedPackageSource = _packageSources.FirstOrDefault(); + } } public PackageSource SelectedPackageSource { get { - return AddInManager.Repositories.ActiveSource; + return _activePackageSource; } set { - AddInManager.Repositories.ActiveSource = value; + _activePackageSource = value; + _activePackageRepository = AddInManager.Repositories.GetRepositoryFromSource(_activePackageSource); ReadPackages(); OnPropertyChanged(m => m.SelectedPackageSource); } } + public IPackageRepository ActiveRepository + { + get + { + return _activePackageRepository; + } + } + public bool ShowPreinstalledAddIns { get; diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AvailableAddInsViewModel.cs b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AvailableAddInsViewModel.cs index bd2c03d0b6..afc08985ca 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AvailableAddInsViewModel.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AvailableAddInsViewModel.cs @@ -49,7 +49,7 @@ namespace ICSharpCode.AddInManager2.ViewModel protected override IQueryable GetAllPackages() { - return AddInManager.Repositories.Active.GetPackages(); + return (ActiveRepository ?? AddInManager.Repositories.Registered).GetPackages(); } protected override IEnumerable GetFilteredPackagesBeforePagingResults(IQueryable allPackages) diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/UpdatedAddInsViewModel.cs b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/UpdatedAddInsViewModel.cs index fe95c10c8c..14e0193761 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/UpdatedAddInsViewModel.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/UpdatedAddInsViewModel.cs @@ -36,6 +36,7 @@ namespace ICSharpCode.AddInManager2.ViewModel private void Initialize() { IsSearchable = true; + ShowPackageSources = true; HasFilterForPrereleases = true; Title = SD.ResourceService.GetString("AddInManager2.Views.Updates"); @@ -84,7 +85,7 @@ namespace ICSharpCode.AddInManager2.ViewModel { IQueryable localPackages = installedPackages; localPackages = FilterPackages(localPackages); - var updatedPackages = GetUpdatedPackages(AddInManager.Repositories.Registered, localPackages); + var updatedPackages = GetUpdatedPackages(ActiveRepository ?? AddInManager.Repositories.Registered, localPackages); HighlightCount = updatedPackages.Count(); return updatedPackages.AsQueryable(); }