diff --git a/src/AddIns/Misc/AddInManager2/Project/AddInManager2.csproj b/src/AddIns/Misc/AddInManager2/Project/AddInManager2.csproj index a519d22f32..9e9d3386c9 100644 --- a/src/AddIns/Misc/AddInManager2/Project/AddInManager2.csproj +++ b/src/AddIns/Misc/AddInManager2/Project/AddInManager2.csproj @@ -97,7 +97,9 @@ + + diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/AddInManagerServices.cs b/src/AddIns/Misc/AddInManager2/Project/Src/AddInManagerServices.cs index b273719c76..3756f2fa52 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/AddInManagerServices.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/AddInManagerServices.cs @@ -3,7 +3,6 @@ using System; using ICSharpCode.AddInManager2.Model; -using ICSharpCode.AddInManager2.Model.Interfaces; namespace ICSharpCode.AddInManager2 { @@ -37,6 +36,12 @@ namespace ICSharpCode.AddInManager2 get; set; } + + public IAddInManagerSettings Settings + { + get; + set; + } } private static AddInManagerServiceContainer _container; @@ -44,8 +49,9 @@ namespace ICSharpCode.AddInManager2 static AddInManagerServices() { _container = new AddInManagerServiceContainer(); + _container.Settings = new AddInManagerSettings(); _container.Events = new AddInManagerEvents(); - _container.Repositories = new PackageRepositories(_container.Events); + _container.Repositories = new PackageRepositories(_container.Events, _container.Settings); _container.NuGet = new NuGetPackageManager(_container.Repositories, _container.Events); _container.Setup = new AddInSetup(_container.Events, _container.NuGet); } @@ -82,6 +88,14 @@ namespace ICSharpCode.AddInManager2 } } + public static IAddInManagerSettings Settings + { + get + { + return _container.Settings; + } + } + public static IAddInManagerServices Services { get diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/Model/AddInManagerSettings.cs b/src/AddIns/Misc/AddInManager2/Project/Src/Model/AddInManagerSettings.cs new file mode 100644 index 0000000000..d9f00f9526 --- /dev/null +++ b/src/AddIns/Misc/AddInManager2/Project/Src/Model/AddInManagerSettings.cs @@ -0,0 +1,50 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) + +using System; +using ICSharpCode.SharpDevelop; + +namespace ICSharpCode.AddInManager2.Model +{ + /// + /// Handler for managing all persisted settings of AddInManager AddIn. + /// + public class AddInManagerSettings : IAddInManagerSettings + { + public string[] PackageRepositories + { + get + { + return SD.PropertyService.Get("AddInManager2.PackageRepositories", null); + } + set + { + SD.PropertyService.Set("AddInManager2.PackageRepositories", value ?? new string[0]); + } + } + + public bool ShowPreinstalledAddIns + { + get + { + return SD.PropertyService.Get("AddInManager2.ShowPreinstalledAddIns", false); + } + set + { + SD.PropertyService.Set("AddInManager2.ShowPreinstalledAddIns", value); + } + } + + public bool ShowPrereleases + { + get + { + return SD.PropertyService.Get("AddInManager2.ShowPrereleases", false); + } + set + { + SD.PropertyService.Set("AddInManager2.ShowPrereleases", value); + } + } + } +} diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/Model/Interfaces/IAddInManagerServices.cs b/src/AddIns/Misc/AddInManager2/Project/Src/Model/Interfaces/IAddInManagerServices.cs index 3075ab8706..e992e66525 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/Model/Interfaces/IAddInManagerServices.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/Model/Interfaces/IAddInManagerServices.cs @@ -3,7 +3,7 @@ using System; -namespace ICSharpCode.AddInManager2.Model.Interfaces +namespace ICSharpCode.AddInManager2.Model { /// /// Basic interface providing instances to all services of AddInManager AddIn. @@ -29,5 +29,10 @@ namespace ICSharpCode.AddInManager2.Model.Interfaces { get; } + + IAddInManagerSettings Settings + { + get; + } } } diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/Model/Interfaces/IAddInManagerSettings.cs b/src/AddIns/Misc/AddInManager2/Project/Src/Model/Interfaces/IAddInManagerSettings.cs new file mode 100644 index 0000000000..7d884d3634 --- /dev/null +++ b/src/AddIns/Misc/AddInManager2/Project/Src/Model/Interfaces/IAddInManagerSettings.cs @@ -0,0 +1,31 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) + +using System; + +namespace ICSharpCode.AddInManager2.Model +{ + /// + /// Description of ISettings. + /// + public interface IAddInManagerSettings + { + string[] PackageRepositories + { + get; + set; + } + + bool ShowPreinstalledAddIns + { + get; + set; + } + + bool ShowPrereleases + { + get; + set; + } + } +} diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/Model/Model.cs b/src/AddIns/Misc/AddInManager2/Project/Src/Model/Model.cs index e623702304..c7757c5906 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/Model/Model.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/Model/Model.cs @@ -4,16 +4,26 @@ using System; using System.ComponentModel; using System.Linq.Expressions; -using ICSharpCode.AddInManager2.Model.Interfaces; namespace ICSharpCode.AddInManager2.Model { public abstract class Model : INotifyPropertyChanged { - private IAddInManagerServices _addInManager = null; + private IAddInManagerServices _services = null; public event PropertyChangedEventHandler PropertyChanged; + public Model() + { + // Use default services container + _services = AddInManagerServices.Services; + } + + public Model(IAddInManagerServices services) + { + _services = services; + } + public string PropertyChangedFor(Expression> expression) { MemberExpression memberExpression = expression.Body as MemberExpression; @@ -47,18 +57,11 @@ namespace ICSharpCode.AddInManager2.Model { get { - if (_addInManager == null) - { - return AddInManagerServices.Services; - } - else - { - return _addInManager; - } + return _services; } set { - _addInManager = value; + _services = value; } } } diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/Model/NuGetPackageManager.cs b/src/AddIns/Misc/AddInManager2/Project/Src/Model/NuGetPackageManager.cs index 5ac153c906..594463c789 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/Model/NuGetPackageManager.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/Model/NuGetPackageManager.cs @@ -7,6 +7,7 @@ using System.IO; using System.Linq; using System.Runtime.Versioning; using ICSharpCode.Core; +using ICSharpCode.SharpDevelop; using NuGet; namespace ICSharpCode.AddInManager2.Model @@ -44,7 +45,7 @@ namespace ICSharpCode.AddInManager2.Model { _repositories = repositories; _events = events; - _packageOutputDirectory = Path.Combine(PropertyService.ConfigDirectory, "NuGet"); + _packageOutputDirectory = Path.Combine(SD.PropertyService.ConfigDirectory, "NuGet"); _logger = new PackageMessageLogger(_events); diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs b/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs index 11e1a716b4..64c6d21149 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs @@ -23,10 +23,12 @@ namespace ICSharpCode.AddInManager2.Model private List _registeredPackageSources; private IAddInManagerEvents _events; + private IAddInManagerSettings _settings; - public PackageRepositories(IAddInManagerEvents events) + public PackageRepositories(IAddInManagerEvents events, IAddInManagerSettings settings) { _events = events; + _settings = settings; _registeredPackageSources = new List(); @@ -84,7 +86,7 @@ namespace ICSharpCode.AddInManager2.Model private void LoadPackageSources() { _registeredPackageSources.Clear(); - var savedRepositories = SD.PropertyService.Get("AddInManager2.PackageRepositories", null); + var savedRepositories = _settings.PackageRepositories; if ((savedRepositories != null) && (savedRepositories.Length > 0)) { foreach (string repositoryEntry in savedRepositories) @@ -114,7 +116,7 @@ namespace ICSharpCode.AddInManager2.Model private void SavePackageSources() { var savedRepositories = _registeredPackageSources.Select(ps => ps.Name + "=" + ps.Source); - SD.PropertyService.Set("AddInManager2.PackageRepositories", savedRepositories.ToArray()); + _settings.PackageRepositories = savedRepositories.ToArray(); UpdateCurrentRepository(); } diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/View/AddInsView.xaml b/src/AddIns/Misc/AddInManager2/Project/Src/View/AddInsView.xaml index 1a41cf0fca..c66db50110 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/View/AddInsView.xaml +++ b/src/AddIns/Misc/AddInManager2/Project/Src/View/AddInsView.xaml @@ -535,7 +535,7 @@ x:Name="prereleaseAddInsCheckBox" Margin="4" Content="{core:Localize AddInManager2.AddInsView.ShowPrereleaseAddIns}" - IsChecked="{Binding Path=ShowPrereleaseAddins, UpdateSourceTrigger=PropertyChanged}" + IsChecked="{Binding Path=ShowPrereleases, UpdateSourceTrigger=PropertyChanged}" Command="{Binding Path=UpdatePrereleaseFilterCommand}" /> diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInManagerViewModel.cs b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInManagerViewModel.cs index d3d627b12b..9c9157ec15 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInManagerViewModel.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInManagerViewModel.cs @@ -21,6 +21,18 @@ namespace ICSharpCode.AddInManager2.ViewModel private bool _hasError; public AddInManagerViewModel() + : base() + { + Initialize(); + } + + public AddInManagerViewModel(IAddInManagerServices services) + : base(services) + { + Initialize(); + } + + private void Initialize() { // Visuals this.Title = SD.ResourceService.GetString("AddInManager.Title"); diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInPackageViewModelBase.cs b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInPackageViewModelBase.cs index 5f8b5de51f..b5f9cc01a5 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInPackageViewModelBase.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInPackageViewModelBase.cs @@ -22,6 +22,13 @@ namespace ICSharpCode.AddInManager2.ViewModel private DelegateCommand optionsCommand; public AddInPackageViewModelBase() + : base() + { + CreateCommands(); + } + + public AddInPackageViewModelBase(IAddInManagerServices services) + : base(services) { CreateCommands(); } diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInsViewModelBase.cs b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInsViewModelBase.cs index 570131222d..16aa2d97a0 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInsViewModelBase.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInsViewModelBase.cs @@ -22,6 +22,18 @@ namespace ICSharpCode.AddInManager2.ViewModel private ObservableCollection _packageSources; public AddInsViewModelBase() + :base() + { + Initialize(); + } + + public AddInsViewModelBase(IAddInManagerServices services) + : base(services) + { + Initialize(); + } + + private void Initialize() { // Initialization of internal lists _pages = new Pages(); @@ -37,7 +49,7 @@ namespace ICSharpCode.AddInManager2.ViewModel CreateCommands(); } - void CreateCommands() + private void CreateCommands() { ShowNextPageCommand = new DelegateCommand(param => ShowNextPage()); ShowPreviousPageCommand = new DelegateCommand(param => ShowPreviousPage()); diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AvailableAddInsViewModel.cs b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AvailableAddInsViewModel.cs index 7eabb18c11..cd906c6474 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AvailableAddInsViewModel.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AvailableAddInsViewModel.cs @@ -19,6 +19,17 @@ namespace ICSharpCode.AddInManager2.ViewModel { public AvailableAddInsViewModel() : base() + { + Initialize(); + } + + public AvailableAddInsViewModel(IAddInManagerServices services) + : base(services) + { + Initialize(); + } + + private void Initialize() { IsSearchable = true; ShowPackageSources = true; diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/InstalledAddInsViewModel.cs b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/InstalledAddInsViewModel.cs index a21e6a795c..5c1697dcfc 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/InstalledAddInsViewModel.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/InstalledAddInsViewModel.cs @@ -20,6 +20,17 @@ namespace ICSharpCode.AddInManager2.ViewModel { public InstalledAddInsViewModel() : base() + { + Initialize(); + } + + public InstalledAddInsViewModel(IAddInManagerServices services) + : base(services) + { + Initialize(); + } + + private void Initialize() { AllowInstallFromArchive = true; HasFilterForPreinstalled = true; @@ -140,12 +151,12 @@ namespace ICSharpCode.AddInManager2.ViewModel private void LoadPreinstalledAddInFilter() { - ShowPreinstalledAddIns = SD.PropertyService.Get("AddInManager2.ShowPreinstalledAddIns", false); + ShowPreinstalledAddIns = AddInManager.Settings.ShowPreinstalledAddIns; } private void SavePreinstalledAddInFilter() { - SD.PropertyService.Set("AddInManager2.ShowPreinstalledAddIns", ShowPreinstalledAddIns); + AddInManager.Settings.ShowPreinstalledAddIns = ShowPreinstalledAddIns; } protected override void InstallFromArchive() diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/NuGetAddInsViewModelBase.cs b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/NuGetAddInsViewModelBase.cs index 15ce36d0c9..902fbf6ee3 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/NuGetAddInsViewModelBase.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/NuGetAddInsViewModelBase.cs @@ -23,6 +23,11 @@ namespace ICSharpCode.AddInManager2.ViewModel { } + public NuGetAddInsViewModelBase(IAddInManagerServices services) + : base(services) + { + } + /// /// Returns all the packages. /// diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/NuGetPackageViewModel.cs b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/NuGetPackageViewModel.cs index dc6391b676..1401ac1d5b 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/NuGetPackageViewModel.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/NuGetPackageViewModel.cs @@ -23,6 +23,12 @@ namespace ICSharpCode.AddInManager2.ViewModel { this._package = package; } + + public NuGetPackageViewModel(IAddInManagerServices services, IPackage package) + : base(services) + { + this._package = package; + } public IPackage Package { diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/OfflineAddInViewModel.cs b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/OfflineAddInViewModel.cs index a64b64903a..67745d8704 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/OfflineAddInViewModel.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/OfflineAddInViewModel.cs @@ -35,6 +35,17 @@ namespace ICSharpCode.AddInManager2.ViewModel public OfflineAddInsViewModelBase(ManagedAddIn addIn) : base() + { + Initialize(addIn); + } + + public OfflineAddInsViewModelBase(IAddInManagerServices services, ManagedAddIn addIn) + : base(services) + { + Initialize(addIn); + } + + private void Initialize(ManagedAddIn addIn) { _markedAddIn = addIn; if (_markedAddIn != null) diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/PackageRepositoriesViewModel.cs b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/PackageRepositoriesViewModel.cs index ebe7a993ed..0a2cc7a4f2 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/PackageRepositoriesViewModel.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/PackageRepositoriesViewModel.cs @@ -31,6 +31,18 @@ namespace ICSharpCode.AddInManager2.ViewModel PackageRepository selectedPackageRepository; public PackageRepositoriesViewModel() + : base() + { + Initialize(); + } + + public PackageRepositoriesViewModel(IAddInManagerServices services) + : base(services) + { + Initialize(); + } + + private void Initialize() { this.packageSources = new ObservableCollection(); CreateCommands(); diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/UpdatedAddInsViewModel.cs b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/UpdatedAddInsViewModel.cs index b577afc478..fe95c10c8c 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/UpdatedAddInsViewModel.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/UpdatedAddInsViewModel.cs @@ -23,10 +23,23 @@ namespace ICSharpCode.AddInManager2.ViewModel public UpdatedAddInsViewModel() : base() + { + Initialize(); + } + + public UpdatedAddInsViewModel(IAddInManagerServices services) + : base(services) + { + Initialize(); + } + + private void Initialize() { IsSearchable = true; HasFilterForPrereleases = true; - Title = SD.ResourceService.GetString("AddInManager2.Views.Updates");; + Title = SD.ResourceService.GetString("AddInManager2.Views.Updates"); + + ShowPrereleases = AddInManager.Settings.ShowPrereleases; AddInManager.Events.AddInInstalled += NuGetPackagesChanged; AddInManager.Events.AddInUninstalled += NuGetPackagesChanged; @@ -93,6 +106,7 @@ namespace ICSharpCode.AddInManager2.ViewModel protected override void UpdatePrereleaseFilter() { + AddInManager.Settings.ShowPrereleases = ShowPrereleases; ReadPackages(); }