SquareBoxUtils.cs 11.1 KB
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<ControlUserOne> _userControlFathers = null;      //控制父模板数据的存储
        private static List<DefectShowData> _defectShowDatas = null;        //控制父模板数据
        private static SquareBoxDelegateUtil _squareBoxDelegateUtil = null;  //创建委托实例
        private static SquareBoxDefectDelegateUtil _squareBoxDefectDelegateUtil = null; //创建瑕疵点状态改变父模板控件委托
        private static DefectShowDelegateUtil _defectShowDelegateUtil = null;   //委托瑕疵点状态改变
        /// <summary>
        /// 无参构造函数
        /// </summary>
        public SquareBoxUtils()
        {
            _userControlFathers = new List<ControlUserOne>();
            _squareBoxDefectDelegateUtil = new SquareBoxDefectDelegateUtil();
            _defectShowDatas = new List<DefectShowData>();
            _squareBoxDelegateUtil = new SquareBoxDelegateUtil();
            _defectShowDelegateUtil = new DefectShowDelegateUtil();
        }

        /// <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>
        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)
        {
            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;
                        }
                    }
                }
            }
        }

        /// <summary>
        /// 先判断一下该元素在集合中是否存在
        /// </summary>
        /// <param name="userControl4"></param>
        /// <returns></returns>
        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;
        }

        /// <summary>
        /// 从集合总删除该元素
        /// </summary>
        /// <param name="userControl2"></param>
        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]); //找到的话就删除该对象
                    }
                }
            }
        }

        /// <summary>
        /// 点击移除按钮删除显示区域选中的该瑕疵
        /// </summary>
        /// <param name="userControl2"></param>
        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]);
                        }
                    }
                }
            }
        }
    }
}