From 74c7fff077a4b9d5e53192c71b775c3d86837b48 Mon Sep 17 00:00:00 2001 From: Andreas Weizel Date: Sun, 10 Feb 2013 23:17:38 +0100 Subject: [PATCH] Now number of updates is shown for every NuGet repository in selection ComboBox. --- .../Fakes/FakePackageRepositories.cs | 10 ++- .../Model/Interfaces/IPackageRepositories.cs | 7 ++- .../Project/Src/Model/NuGetPackageManager.cs | 2 +- .../Project/Src/Model/PackageRepositories.cs | 23 ++++--- .../Project/Src/Model/PackageRepository.cs | 61 ++++++++++++------- .../Project/Src/View/AddInsView.xaml | 20 ++++-- .../Src/ViewModel/AddInsViewModelBase.cs | 31 ++++++---- .../Src/ViewModel/AvailableAddInsViewModel.cs | 2 +- .../Src/ViewModel/UpdatedAddInsViewModel.cs | 39 +++++++++++- 9 files changed, 143 insertions(+), 52 deletions(-) diff --git a/src/AddIns/Misc/AddInManager2/AddInManager2.Tests/Fakes/FakePackageRepositories.cs b/src/AddIns/Misc/AddInManager2/AddInManager2.Tests/Fakes/FakePackageRepositories.cs index f7bad4f16a..bf58705f1c 100644 --- a/src/AddIns/Misc/AddInManager2/AddInManager2.Tests/Fakes/FakePackageRepositories.cs +++ b/src/AddIns/Misc/AddInManager2/AddInManager2.Tests/Fakes/FakePackageRepositories.cs @@ -9,7 +9,7 @@ namespace ICSharpCode.AddInManager2.Tests.Fakes { public class FakePackageRepositories : IPackageRepositories { - public NuGet.IPackageRepository Registered + public NuGet.IPackageRepository AllRegistered { get { @@ -29,6 +29,14 @@ namespace ICSharpCode.AddInManager2.Tests.Fakes } } + public IEnumerable RegisteredPackageRepositories + { + get + { + throw new NotImplementedException(); + } + } + public NuGet.IPackageRepository GetRepositoryFromSource(NuGet.PackageSource packageSource) { throw new NotImplementedException(); 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 d16ab252b3..857f7aa1d2 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/Model/Interfaces/IPackageRepositories.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/Model/Interfaces/IPackageRepositories.cs @@ -9,7 +9,7 @@ namespace ICSharpCode.AddInManager2.Model { public interface IPackageRepositories { - IPackageRepository Registered + IPackageRepository AllRegistered { get; } @@ -20,6 +20,11 @@ namespace ICSharpCode.AddInManager2.Model set; } + IEnumerable RegisteredPackageRepositories + { + get; + } + IPackageRepository GetRepositoryFromSource(PackageSource packageSource); } } diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/Model/NuGetPackageManager.cs b/src/AddIns/Misc/AddInManager2/Project/Src/Model/NuGetPackageManager.cs index 36e87b145e..3afa25137c 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/Model/NuGetPackageManager.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/Model/NuGetPackageManager.cs @@ -110,7 +110,7 @@ namespace ICSharpCode.AddInManager2.Model } // Create new package manager instance - _packageManager = new NuGetPackageManagerImplementation(_repositories.Registered, _packageOutputDirectory); + _packageManager = new NuGetPackageManagerImplementation(_repositories.AllRegistered, _packageOutputDirectory); _packageManager.PackageInstalled += _packageEvents_NuGetPackageInstalled; _packageManager.PackageUninstalled += _packageEvents_NuGetPackageUninstalled; return _packageManager; diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs b/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs index 6a78bb08ce..88dc4064d0 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs @@ -17,8 +17,9 @@ namespace ICSharpCode.AddInManager2.Model /// public class PackageRepositories : IPackageRepositories { - private IPackageRepository _currentRepository; + private IPackageRepository _aggregatedRepository; private List _registeredPackageSources; + private IEnumerable _registeredPackageRepositories; private IAddInManagerEvents _events; private IAddInManagerSettings _settings; @@ -34,11 +35,11 @@ namespace ICSharpCode.AddInManager2.Model UpdateCurrentRepository(); } - public IPackageRepository Registered + public IPackageRepository AllRegistered { get { - return _currentRepository; + return _aggregatedRepository; } } @@ -62,6 +63,14 @@ namespace ICSharpCode.AddInManager2.Model } } + public IEnumerable RegisteredPackageRepositories + { + get + { + return _registeredPackageRepositories; + } + } + public IPackageRepository GetRepositoryFromSource(PackageSource packageSource) { IPackageRepository resultRepository = null; @@ -72,7 +81,7 @@ namespace ICSharpCode.AddInManager2.Model else { // If no active repository is set, get packages from all repositories - resultRepository = _currentRepository; + resultRepository = _aggregatedRepository; } return resultRepository; @@ -127,11 +136,11 @@ namespace ICSharpCode.AddInManager2.Model private void UpdateCurrentRepository() { - var repositories = + _registeredPackageRepositories = _registeredPackageSources.Select(packageSource => PackageRepositoryFactory.Default.CreateRepository(packageSource.Source)); - if (repositories.Any()) + if (_registeredPackageRepositories.Any()) { - _currentRepository = new AggregateRepository(repositories); + _aggregatedRepository = new AggregateRepository(_registeredPackageRepositories); } } } diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepository.cs b/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepository.cs index 0a06938c64..5f84307eef 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepository.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepository.cs @@ -8,7 +8,7 @@ namespace ICSharpCode.AddInManager2.Model { public class PackageRepository : Model { -// RegisteredPackageSource packageSource; + private int _highlightCount; public PackageRepository() { @@ -16,43 +16,60 @@ namespace ICSharpCode.AddInManager2.Model public PackageRepository(PackageSource packageSource) { -// this.packageSource = new RegisteredPackageSource(packageSource); Name = packageSource.Name; SourceUrl = packageSource.Source; } public string Name { -// get -// { -// return packageSource.Name; - // TODO -// return null; -// } -// set -// { -// packageSource.Name = value; -// } get; set; } public string SourceUrl { -// get -// { -// return packageSource.Source; - // TODO -// return null; -// } -// set -// { -// packageSource.Source = value; -// } get; set; } + public int HighlightCount + { + get + { + return _highlightCount; + } + set + { + _highlightCount = value; + OnPropertyChanged(vm => vm.HighlightCount); + OnPropertyChanged(vm => vm.HasHighlightCount); + OnPropertyChanged(vm => vm.NameWithHighlight); + } + } + + public bool HasHighlightCount + { + get + { + return (_highlightCount > 0); + } + } + + public string NameWithHighlight + { + get + { + if (_highlightCount > 0) + { + return String.Format("{0} ({1})", Name, _highlightCount); + } + else + { + return Name; + } + } + } + public PackageSource ToPackageSource() { return new PackageSource(SourceUrl, Name); diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/View/AddInsView.xaml b/src/AddIns/Misc/AddInManager2/Project/Src/View/AddInsView.xaml index 7a83dfe295..f097974aaf 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/View/AddInsView.xaml +++ b/src/AddIns/Misc/AddInManager2/Project/Src/View/AddInsView.xaml @@ -28,7 +28,17 @@ - + + + + +