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();
}