using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Controls; using OS.Spin.View.SquareBox; using OS.Spin.ViewModle.Models; namespace OS.Spin.View.Utils { public class SquareBoxUtils { private static SquareBoxUtils _squareBoxUtils = null; private static object _lock = new object(); private static List _userControlFathers = null; //控制父模板数据的存储 private static List _defectShowDatas = null; //控制父模板数据 private static SquareBoxDelegateUtil _squareBoxDelegateUtil = null; //创建委托实例 private static SquareBoxDefectDelegateUtil _squareBoxDefectDelegateUtil = null; //创建瑕疵点状态改变父模板控件委托 private static DefectShowDelegateUtil _defectShowDelegateUtil = null; //委托瑕疵点状态改变 /// /// 无参构造函数 /// public SquareBoxUtils() { _userControlFathers = new List(); _squareBoxDefectDelegateUtil = new SquareBoxDefectDelegateUtil(); _defectShowDatas = new List(); _squareBoxDelegateUtil = new SquareBoxDelegateUtil(); _defectShowDelegateUtil = new DefectShowDelegateUtil(); } /// /// 返回委托瑕疵点实例 /// /// public DefectShowDelegateUtil getDefectShowDelegateUtil() { return _defectShowDelegateUtil; } /// /// 返回父模板瑕疵点状态改变的控件集合 /// /// public SquareBoxDefectDelegateUtil getSquareBoxDefectDelegateUtil() { return _squareBoxDefectDelegateUtil; } /// /// 返回瑕疵点父模板控件集合 /// /// public List getControlUserOnes() { return _userControlFathers; } /// /// 清空父模板 /// public void clearControlUserOnes() { if (null != _userControlFathers && _userControlFathers.Count > 0) { _userControlFathers.Clear(); } } /// /// 返回委托实例 /// /// public SquareBoxDelegateUtil getSquareBoxDelegateUtil() { return _squareBoxDelegateUtil; } /// /// 主界面添加瑕疵 /// /// public void addDefectShowData(DefectShowData defectShowData) { if(null != _defectShowDatas && !_defectShowDatas.Contains(defectShowData)) { _defectShowDatas.Add(defectShowData); } } /// /// 清空所有的瑕疵图片 /// public void clearDefectShowData() { //非空才能清空该集合 if (null != _defectShowDatas && _defectShowDatas.Count > 0) { _defectShowDatas.Clear(); } } /// /// 获取单列实例 /// /// public static SquareBoxUtils getInstance() { if (_squareBoxUtils == null) { lock (_lock) { if (_squareBoxUtils == null) { _squareBoxUtils = new SquareBoxUtils(); } } } return _squareBoxUtils; } /// /// 数据赋值操作 /// /// public void setDefectShowDatas(List defectShowDatas) { _defectShowDatas = defectShowDatas; } /// /// 获取数据 /// /// public List getDefectShowDatas() { return _defectShowDatas; } /// /// 父模板赋值操作 /// /// public void setUserControlFathers(List userControlFathers) { _userControlFathers = userControlFathers; } /// /// 获取界面显示的集合 /// /// public List getUserControlFathers() { return _userControlFathers; } /// /// 点击更新该元素的背景图片状态并且消除其它元素的状态 /// /// public void updateUserControlFathers(UserControl4 userControl4) { 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; } else { controlUserOne.ground = 0; } } } } } /// /// 先判断一下该元素在集合中是否存在 /// /// /// public bool isExitUserControl4(UserControl4 userControl4) { 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; } /// /// 从集合总删除该元素 /// /// public void removeUserControlFathers(OS.Spin.View.SquareBox.UserControl2 userControl2) { 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]); //找到的话就删除该对象 } } } } /// /// 点击移除按钮删除显示区域选中的该瑕疵 /// /// public void removeDefectShowDatas(OS.Spin.View.SquareBox.UserControl2 userControl2) { 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]); } } } } } } }