58
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
1 using System;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
2 using System.ComponentModel;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
3 using System.Linq;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
4 using System.Windows;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
5 using System.Windows.Input;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
6 using FluentValidation;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
7 using SilverlightValidation.Interfaces;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
8 using SilverlightValidation.Models;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
9 using SilverlightValidation.Commands;
|
60
|
10 using GalaSoft.MvvmLight.Messaging;
|
|
11 using SilverlightValidation.Messages;
|
58
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
12
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
13 namespace SilverlightValidation.ViewModels
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
14 {
|
98
|
15 public class UserViewModel : ViewModelBase, IUserViewModel, IEditableObject
|
58
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
16 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
17 #region Fields
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
18
|
102
|
19 private readonly AbstractValidator<IUserModel> _validator;
|
58
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
20 private UserModel _data;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
21 private UserModel _backup;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
22
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
23 #endregion
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
24
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
25 #region Constructor
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
26
|
102
|
27 public UserViewModel(UserModel model, AbstractValidator<IUserModel> validator)
|
58
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
28 {
|
97
|
29 if (model == null) throw new ArgumentNullException("model");
|
|
30 if (validator == null) throw new ArgumentNullException("validator");
|
|
31
|
58
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
32 _validator = validator;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
33 _data = model;
|
98
|
34 _backup = model.Clone() as UserModel;
|
58
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
35
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
36 OkCommand = new RelayCommand(OkCommandExecute);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
37 CancelCommand = new RelayCommand(CancelCommandExecute);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
38 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
39
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
40 #endregion
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
41
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
42 #region Methods
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
43
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
44 private void SetProperties(IUserModel source)
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
45 {
|
60
|
46 _data.Username = source.Username;
|
|
47 _data.Password = source.Password;
|
|
48 _data.Email = source.Email;
|
|
49 _data.DateOfBirth = source.DateOfBirth;
|
|
50 _data.Description = source.Description;
|
58
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
51 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
52
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
53 #endregion
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
54
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
55 #region Properties
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
56
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
57 private const string UsernameProperty = "Username";
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
58 public string Username
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
59 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
60 get { return _data.Username; }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
61 set
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
62 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
63 if (_data.Username != value)
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
64 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
65 _data.Username = value;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
66 RaisePropertyChanged(UsernameProperty);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
67 IsChanged = true;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
68 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
69
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
70 ClearError(UsernameProperty);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
71 var validationResult = _validator.Validate(this, UsernameProperty);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
72 if (!validationResult.IsValid)
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
73 validationResult.Errors.ToList().ForEach(x => SetError(UsernameProperty, x.ErrorMessage));
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
74 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
75 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
76
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
77 private const string PasswordProperty = "Password";
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
78 public string Password
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
79 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
80 get { return _data.Password; }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
81 set
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
82 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
83 if (_data.Password != value)
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
84 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
85 _data.Password = value;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
86 RaisePropertyChanged(PasswordProperty);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
87 IsChanged = true;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
88 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
89
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
90 ClearError(PasswordProperty);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
91 var validationResult = _validator.Validate(this, PasswordProperty);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
92 if (!validationResult.IsValid)
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
93 validationResult.Errors.ToList().ForEach(x => SetError(PasswordProperty, x.ErrorMessage));
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
94 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
95 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
96
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
97 private const string EmailProperty = "Email";
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
98 public string Email
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
99 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
100 get { return _data.Email; }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
101 set
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
102 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
103 if (_data.Email != value)
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
104 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
105 _data.Email = value;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
106 RaisePropertyChanged(EmailProperty);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
107 IsChanged = true;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
108 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
109
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
110 ClearError(EmailProperty);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
111 var validationResult = _validator.Validate(this, EmailProperty);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
112 if (!validationResult.IsValid)
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
113 validationResult.Errors.ToList().ForEach(x => SetError(EmailProperty, x.ErrorMessage));
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
114 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
115 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
116
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
117 private const string DateOfBirthProperty = "DateOfBirth";
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
118 public DateTime? DateOfBirth
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
119 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
120 get { return _data.DateOfBirth; }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
121 set
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
122 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
123 if (_data.DateOfBirth != value)
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
124 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
125 _data.DateOfBirth = value;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
126 RaisePropertyChanged(DateOfBirthProperty);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
127 IsChanged = true;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
128 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
129
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
130 ClearError(DateOfBirthProperty);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
131 var validationResult = _validator.Validate(this, DateOfBirthProperty);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
132 if (!validationResult.IsValid)
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
133 validationResult.Errors.ToList().ForEach(x => SetError(DateOfBirthProperty, x.ErrorMessage));
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
134 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
135 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
136
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
137 private const string DescriptionProperty = "Description";
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
138 public string Description
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
139 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
140 get { return _data.Description; }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
141 set
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
142 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
143 if (_data.Description != value)
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
144 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
145 _data.Description = value;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
146 RaisePropertyChanged(DescriptionProperty);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
147 IsChanged = true;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
148 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
149
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
150 ClearError(DescriptionProperty);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
151 var validationResult = _validator.Validate(this, DescriptionProperty);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
152 if (!validationResult.IsValid)
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
153 validationResult.Errors.ToList().ForEach(x => SetError(DescriptionProperty, x.ErrorMessage));
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
154 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
155 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
156
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
157 #endregion
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
158
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
159 #region Commands
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
160
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
161 public ICommand OkCommand { get; set; }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
162 public ICommand CancelCommand { get; set; }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
163
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
164 private void OkCommandExecute(object obj)
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
165 {
|
60
|
166 RefreshToViewErrors();
|
58
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
167
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
168 if (IsChanged && !HasErrors)
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
169 {
|
60
|
170 // save here
|
106
|
171 Messenger.Default.Send(new UserViewResponseMessage() { UserViewModel = this });
|
58
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
172 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
173 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
174
|
60
|
175 // in case user hasn't touched the form
|
|
176 private void RefreshToViewErrors()
|
|
177 {
|
|
178 Username = _data.Username;
|
|
179 Password = _data.Password;
|
|
180 Email = _data.Email;
|
|
181 DateOfBirth = _data.DateOfBirth;
|
|
182 }
|
|
183
|
58
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
184 private void CancelCommandExecute(object obj)
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
185 {
|
106
|
186 Messenger.Default.Send(new UserViewResponseMessage() { UserViewModel = null });
|
58
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
187 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
188
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
189 #endregion
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
190
|
60
|
191 private void ResetFormData()
|
58
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
192 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
193 SetProperties(_backup);
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
194 ClearAllErrors();
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
195 IsChanged = false;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
196 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
197
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
198 public bool IsChanged { get; private set; }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
199
|
60
|
200 #region IEditableObject for datagrid
|
58
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
201
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
202 private bool inEdit;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
203 public void BeginEdit()
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
204 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
205 if (inEdit) return;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
206 inEdit = true;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
207 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
208
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
209 public void CancelEdit()
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
210 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
211 if (!inEdit) return;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
212 inEdit = false;
|
60
|
213 ResetFormData();
|
58
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
214 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
215
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
216 public void EndEdit()
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
217 {
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
218 if (!inEdit) return;
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
219 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
220
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
221 #endregion
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
222 }
|
Steven Hollidge <stevenhollidge@hotmail.com>
parents:
diff
changeset
|
223 }
|