SquareBoxUtils.cs
13.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
using System;
using System.Collections.Generic;
using System.Windows.Controls;
using OS.Spin.View.SquareBox;
using OS.Spin.ViewModle.Models;
using OS.Spin.Common;
namespace OS.Spin.View.Utils
{
public class SquareBoxUtils
{
private static SquareBoxUtils _squareBoxUtils = null;
private static object _lock = new object();
private static List<ControlUserOne> _userControlFathers = null; //控制父模板数据的存储
private static List<DefectShowData> _defectShowDatas = null; //控制父模板数据
private static SquareBoxDelegateUtil _squareBoxDelegateUtil = null; //创建委托实例
private static SquareBoxDefectDelegateUtil _squareBoxDefectDelegateUtil = null; //创建瑕疵点状态改变父模板控件委托
private static DefectShowDelegateUtil _defectShowDelegateUtil = null; //委托瑕疵点状态改变
private static DefectShowData _defectShowData = null; //保存之前选中状态的数据
/// <summary>
/// 无参构造函数
/// </summary>
public SquareBoxUtils()
{
_userControlFathers = new List<ControlUserOne>();
_squareBoxDefectDelegateUtil = new SquareBoxDefectDelegateUtil();
_defectShowDatas = new List<DefectShowData>();
_squareBoxDelegateUtil = new SquareBoxDelegateUtil();
_defectShowDelegateUtil = new DefectShowDelegateUtil();
_defectShowData = new DefectShowData();
}
/// <summary>
/// 返回选中状态的瑕疵对象
/// </summary>
/// <returns></returns>
public DefectShowData getDefect()
{
return _defectShowData;
}
/// <summary>
/// 选中其它的之后这个状态也要清楚,否则出现两个选中状态
/// </summary>
public void clearOneDefectShowData()
{
_defectShowData = null;
}
/// <summary>
/// 返回委托瑕疵点实例
/// </summary>
/// <returns></returns>
public DefectShowDelegateUtil getDefectShowDelegateUtil()
{
return _defectShowDelegateUtil;
}
/// <summary>
/// 返回父模板瑕疵点状态改变的控件集合
/// </summary>
/// <returns></returns>
public SquareBoxDefectDelegateUtil getSquareBoxDefectDelegateUtil()
{
return _squareBoxDefectDelegateUtil;
}
/// <summary>
/// 返回瑕疵点父模板控件集合
/// </summary>
/// <returns></returns>
public List<ControlUserOne> getControlUserOnes()
{
return _userControlFathers;
}
/// <summary>
/// 清空之前先查找是哪个被选中的
/// </summary>
/// <returns></returns>
public UserControOne findSelectedControOne()
{
try
{
for (int i = 0; i < _userControlFathers.Count; i++)
{
if (_userControlFathers[i].ground == 1) //找到为选中状态的那个
{
return _userControlFathers[i].userControOne; //找到了直接返回
}
}
}
catch (Exception ex)
{
LogisTrac.WriteLog(string.Format("findSelectedControOne:{0}", ex.Message));
}
return null; //没有找到直接返回Null
}
/// <summary>
/// 清空父模板
/// </summary>
public void clearControlUserOnes()
{
if (null != _userControlFathers && _userControlFathers.Count > 0)
{
_userControlFathers.Clear();
}
}
/// <summary>
/// 返回委托实例
/// </summary>
/// <returns></returns>
public SquareBoxDelegateUtil getSquareBoxDelegateUtil()
{
return _squareBoxDelegateUtil;
}
/// <summary>
/// 主界面添加瑕疵
/// </summary>
/// <param name="defectShowData"></param>
public void addDefectShowData(DefectShowData defectShowData)
{
if (null != _defectShowDatas && !_defectShowDatas.Contains(defectShowData))
{
_defectShowDatas.Add(defectShowData);
}
}
/// <summary>
/// 清空所有的瑕疵图片
/// </summary>
public void clearDefectShowData()
{
//非空才能清空该集合
if (null != _defectShowDatas && _defectShowDatas.Count > 0)
{
_defectShowDatas.Clear();
}
}
/// <summary>
/// 获取单列实例
/// </summary>
/// <returns></returns>
public static SquareBoxUtils getInstance()
{
if (_squareBoxUtils == null)
{
lock (_lock)
{
if (_squareBoxUtils == null)
{
_squareBoxUtils = new SquareBoxUtils();
}
}
}
return _squareBoxUtils;
}
/// <summary>
/// 数据赋值操作
/// </summary>
/// <param name="defectShowDatas"></param>
public void setDefectShowDatas(List<DefectShowData> defectShowDatas)
{
_defectShowDatas = defectShowDatas;
}
/// <summary>
/// 获取数据
/// </summary>
/// <returns></returns>
public List<DefectShowData> getDefectShowDatas()
{
return _defectShowDatas;
}
/// <summary>
/// 父模板赋值操作
/// </summary>
/// <param name="userControlFathers"></param>
public void setUserControlFathers(List<ControlUserOne> userControlFathers)
{
_userControlFathers = userControlFathers;
}
/// <summary>
/// 获取界面显示的集合
/// </summary>
/// <returns></returns>
public List<ControlUserOne> getUserControlFathers()
{
return _userControlFathers;
}
/// <summary>
/// 点击更新该元素的背景图片状态并且消除其它元素的状态
/// </summary>
/// <param name="userControl4"></param>
public void updateUserControlFathers(UserControl4 userControl4)
{
try
{
if (null != _userControlFathers && _userControlFathers.Count > 0)
{
if (isExitUserControl4(userControl4))
{
for (var i = 0; i < _userControlFathers.Count; i++)
{
ControlUserOne controlUserOne = _userControlFathers[i];
if (userControl4.Equals(controlUserOne.userControl4)) //这个操作是为了避免删除的时候,将其它为已选状态的元素给重置了
{
controlUserOne.ground = 1;
//clearOneDefectShowData(); //清空选中状态
}
else
{
controlUserOne.ground = 0;
}
}
}
}
}
catch (Exception ex)
{
LogisTrac.WriteLog(string.Format("updateUserControlFathers:{0}", ex.Message));
}
}
/// <summary>
/// 先判断一下该元素在集合中是否存在
/// </summary>
/// <param name="userControl4"></param>
/// <returns></returns>
public bool isExitUserControl4(UserControl4 userControl4)
{
try
{
bool a = false;
if (null != _userControlFathers && _userControlFathers.Count > 0)
{
for (var i = 0; i < _userControlFathers.Count; i++)
{
ControlUserOne controlUserOne = _userControlFathers[i];
if (userControl4.Equals(controlUserOne.userControl4)) //如果包含该元素则改变为ture
{
a = true;
}
}
}
return a;
}
catch (Exception ex)
{
LogisTrac.WriteLog(string.Format("isExitUserControl4:{0}", ex.Message));
return false;
}
}
/// <summary>
/// 从集合总删除该元素
/// </summary>
/// <param name="userControl2"></param>
public void removeUserControlFathers(OS.Spin.View.SquareBox.UserControl2 userControl2)
{
try
{
if (null != _userControlFathers && _userControlFathers.Count > 0)
{
for (var i = 0; i < _userControlFathers.Count; i++)
{
ControlUserOne controlUserOne = _userControlFathers[i];
OS.Spin.View.SquareBox.UserControl4 userControl4 = controlUserOne.userControl4;
Canvas canvas = userControl4.Canvas; //获取canvas对象
OS.Spin.View.SquareBox.UserControl2 user2 = (OS.Spin.View.SquareBox.UserControl2)canvas.Children[1]; //从集合中找到了该UserControl2
if (userControl2.Equals(user2)) //找到该对象
{
_userControlFathers.Remove(_userControlFathers[i]); //找到的话就删除该对象
}
}
}
}
catch (Exception ex)
{
LogisTrac.WriteLog(string.Format("removeUserControlFathers:{0}", ex.Message));
}
}
/// <summary>
/// 点击移除按钮删除显示区域选中的该瑕疵
/// </summary>
/// <param name="userControl2"></param>
public void removeDefectShowDatas(OS.Spin.View.SquareBox.UserControl2 userControl2)
{
try
{
OS.Spin.View.SquareBox.UserControOne userControOne = null;
DefectShowData defectShowData = null;
if (null != _userControlFathers && _userControlFathers.Count > 0)
{
for (var i = 0; i < _userControlFathers.Count; i++)
{
ControlUserOne controlUserOne = _userControlFathers[i];
OS.Spin.View.SquareBox.UserControl4 userControl4 = controlUserOne.userControl4;
Canvas canvas = userControl4.Canvas; //获取canvas对象
OS.Spin.View.SquareBox.UserControl2 user2 = (OS.Spin.View.SquareBox.UserControl2)canvas.Children[1]; //从集合中找到了该UserControl2
if (userControl2.Equals(user2)) //找到该对象
{
// _userControlFathers.Remove(_userControlFathers[i]); //找到的话就删除该对象
userControOne = controlUserOne.userControOne;
StackPanel stackPanel = userControOne.StackPanel;
//找到下面显示数据的用户控件
OS.Spin.View.SquareBox.UserControl1 userControl1 = (OS.Spin.View.SquareBox.UserControl1)stackPanel.Children[2];
//UserControl1的父StackPanel
StackPanel stackFather = userControl1.StackPanel;
StackPanel stackOne = (StackPanel)stackFather.Children[0]; //破洞
TextBlock textOne = (TextBlock)stackOne.Children[1];
String hole = textOne.Text; // 取role值
StackPanel stackTwo = (StackPanel)stackFather.Children[1]; //尺寸
TextBlock textTwo = (TextBlock)stackTwo.Children[1];
String size = textTwo.Text; //取size值
StackPanel stackThree = (StackPanel)stackFather.Children[2]; //属性
TextBlock textThree = (TextBlock)stackThree.Children[1];
String attribute = textThree.Text;
//能够比较的前提是瑕疵点照片没有重复的两张照片
defectShowData = new DefectShowData(hole, size, attribute);
}
}
}
if (null != defectShowData) //如果不为空,则证明找到了
{
//循环找到要移除的瑕疵点数
if (null != _defectShowDatas && _defectShowDatas.Count != 0)
{
for (var a = 0; a < _defectShowDatas.Count; a++)
{
if (defectShowData.hole.Equals(_defectShowDatas[a].hole) &&
defectShowData.size.Equals(_defectShowDatas[a].size) &&
defectShowData.attribute.Equals(_defectShowDatas[a].attribute))
{
_defectShowDatas.Remove(_defectShowDatas[a]);
}
}
}
}
}
catch (Exception ex)
{
LogisTrac.WriteLog(string.Format("removeDefectShowDatas:{0}", ex.Message));
}
}
}
}