2
// ManagePackagesViewModel.cs
5
// Matt Ward <ward.matt@gmail.com>
7
// Copyright (C) 2013 Matthew Ward
9
// Permission is hereby granted, free of charge, to any person obtaining
10
// a copy of this software and associated documentation files (the
11
// "Software"), to deal in the Software without restriction, including
12
// without limitation the rights to use, copy, modify, merge, publish,
13
// distribute, sublicense, and/or sell copies of the Software, and to
14
// permit persons to whom the Software is furnished to do so, subject to
15
// the following conditions:
17
// The above copyright notice and this permission notice shall be
18
// included in all copies or substantial portions of the Software.
20
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30
using System.Collections.ObjectModel;
35
namespace ICSharpCode.PackageManagement
37
public class ManagePackagesViewModel : ViewModelBase<ManagePackagesViewModel>, IDisposable
39
IThreadSafePackageManagementEvents packageManagementEvents;
40
PackagesViewModels packagesViewModels;
41
ManagePackagesViewTitle viewTitle;
45
public ManagePackagesViewModel(
46
PackagesViewModels packagesViewModels,
47
ManagePackagesViewTitle viewTitle,
48
IThreadSafePackageManagementEvents packageManagementEvents)
50
this.packagesViewModels = packagesViewModels;
51
this.viewTitle = viewTitle;
52
this.packageManagementEvents = packageManagementEvents;
54
packageManagementEvents.PackageOperationError += PackageOperationError;
55
packageManagementEvents.PackageOperationsStarting += PackageOperationsStarting;
58
public AvailablePackagesViewModel AvailablePackagesViewModel {
59
get { return packagesViewModels.AvailablePackagesViewModel; }
62
public InstalledPackagesViewModel InstalledPackagesViewModel {
63
get { return packagesViewModels.InstalledPackagesViewModel; }
66
public RecentPackagesViewModel RecentPackagesViewModel {
67
get { return packagesViewModels.RecentPackagesViewModel; }
70
public UpdatedPackagesViewModel UpdatedPackagesViewModel {
71
get { return packagesViewModels.UpdatedPackagesViewModel; }
75
get { return viewTitle.Title; }
80
packagesViewModels.Dispose();
82
packageManagementEvents.PackageOperationError -= PackageOperationError;
83
packageManagementEvents.PackageOperationsStarting -= PackageOperationsStarting;
84
packageManagementEvents.Dispose();
87
void PackageOperationError(object sender, PackageOperationExceptionEventArgs e)
89
ShowErrorMessage(e.Exception.Message);
92
void ShowErrorMessage(string message)
94
this.Message = message;
98
public string Message {
99
get { return message; }
102
OnPropertyChanged(model => model.Message);
106
public bool HasError {
107
get { return hasError; }
110
OnPropertyChanged(model => model.HasError);
114
void PackageOperationsStarting(object sender, EventArgs e)
122
this.HasError = false;