You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.5 KiB
82 lines
2.5 KiB
// 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 System.Linq; |
|
using System.Windows.Input; |
|
|
|
namespace ICSharpCode.PackageManagement |
|
{ |
|
public class PackageManagementOptionsViewModel : ViewModelBase<PackageManagementOptionsViewModel> |
|
{ |
|
IRecentPackageRepository recentPackageRepository; |
|
IMachinePackageCache machinePackageCache; |
|
IProcess process; |
|
|
|
public PackageManagementOptionsViewModel(IRecentPackageRepository recentPackageRepository) |
|
: this(recentPackageRepository, new MachinePackageCache(), new Process()) |
|
{ |
|
} |
|
|
|
public PackageManagementOptionsViewModel( |
|
IRecentPackageRepository recentPackageRepository, |
|
IMachinePackageCache machinePackageCache, |
|
IProcess process) |
|
{ |
|
this.recentPackageRepository = recentPackageRepository; |
|
this.machinePackageCache = machinePackageCache; |
|
this.process = process; |
|
|
|
this.HasNoRecentPackages = !RecentPackageRepositoryHasPackages(); |
|
this.HasNoCachedPackages = !MachinePackageCacheHasPackages(); |
|
|
|
CreateCommands(); |
|
} |
|
|
|
public bool HasNoRecentPackages { get; private set; } |
|
public bool HasNoCachedPackages { get; private set; } |
|
|
|
bool MachinePackageCacheHasPackages() |
|
{ |
|
return machinePackageCache.GetPackages().Any(); |
|
} |
|
|
|
bool RecentPackageRepositoryHasPackages() |
|
{ |
|
return recentPackageRepository.GetPackages().Any(); |
|
} |
|
|
|
void CreateCommands() |
|
{ |
|
ClearRecentPackagesCommand = |
|
new DelegateCommand(param => ClearRecentPackages(), param => !HasNoRecentPackages); |
|
ClearCachedPackagesCommand = |
|
new DelegateCommand(param => ClearCachedPackages(), param => !HasNoCachedPackages); |
|
BrowseCachedPackagesCommand = |
|
new DelegateCommand(param => BrowseCachedPackages(), param => !HasNoCachedPackages); |
|
} |
|
|
|
public ICommand ClearRecentPackagesCommand { get; private set; } |
|
public ICommand ClearCachedPackagesCommand { get; private set; } |
|
public ICommand BrowseCachedPackagesCommand { get; private set; } |
|
|
|
public void ClearRecentPackages() |
|
{ |
|
recentPackageRepository.Clear(); |
|
HasNoRecentPackages = true; |
|
OnPropertyChanged(viewModel => viewModel.HasNoRecentPackages); |
|
} |
|
|
|
public void ClearCachedPackages() |
|
{ |
|
machinePackageCache.Clear(); |
|
HasNoCachedPackages = true; |
|
OnPropertyChanged(viewModel => viewModel.HasNoCachedPackages); |
|
} |
|
|
|
public void BrowseCachedPackages() |
|
{ |
|
process.Start(machinePackageCache.Source); |
|
} |
|
} |
|
}
|
|
|