lixiaojun
2024-10-24 2e52cbf466d081ca4647c88df17f4b4aac5416ab
WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/00-core/SetHydroCalcuPrefixCtrl.cs
@@ -1,6 +1,4 @@
using DevExpress.XtraLayout.Utils;
namespace Yw.WinFrmUI
namespace Yw.WinFrmUI
{
    public partial class SetHydroCalcuPrefixCtrl : DevExpress.XtraEditors.XtraUserControl
    {
@@ -10,101 +8,86 @@
        }
        /// <summary>
        /// 控件最小宽度
        /// 水力查看事件
        /// </summary>
        public const int ControlMinWidth = 350;
        public event Action<Yw.Model.HydroParterInfo> HydroViewEvent;
        /// <summary>
        /// 计算事件
        /// 水力计算事件
        /// </summary>
        public event Action<Yw.Model.HydroModelInfo> CalcuEvent;
        public event Action HydroCalcuEvent;
        private SetHydroCalcuPrefixViewModel _vm = null;
        private SetHydroCalcuPrefixManager _wizard;
        private Func<Yw.Model.HydroModelInfo> _hydroInfoFunc = null;
        //水力信息
        private Yw.Model.HydroModelInfo _hydroInfo = null;
        /// <summary>
        /// 初始化数据
        /// </summary>
        public void InitialData(Func<Yw.Model.HydroModelInfo> hydroInfoFunc)
        {
            _hydroInfoFunc = hydroInfoFunc;
        }
        /// <summary>
        /// 绑定数据
        /// </summary>
        public void SetBindingData()
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo)
        {
            var hydroInfo = _hydroInfoFunc?.Invoke();
            if (hydroInfo == null)
            _hydroInfo = hydroInfo;
            if (_hydroInfo == null)
            {
                return;
            }
            _vm = new SetHydroCalcuPrefixViewModel();
            _vm.HydroInfo = hydroInfo;
            _vm.FirstPage = this.setWaterboxCalcuPrefixListCtrl1;
            _vm.LastPage = this.setNozzleCalcuPrefixListCtrl1;
            _wizard = new SetHydroCalcuPrefixManager(_vm);
            _wizard.SelectedPageChangedEvent += _wizard_SelectedPageChangedEvent;
            _wizard.SelectedPageStateChangedEvent += _wizard_SelectedPageStateChangedEvent; ;
            _wizard.InitialManager(new IWizardPage<SetHydroCalcuPrefixViewModel>[] {
                this.setWaterboxCalcuPrefixListCtrl1,
                this.setPumpCalcuPrefixListCtrl1,
                this.setNozzleCalcuPrefixListCtrl1
            });
        }
        //选择页面改变
        private void _wizard_SelectedPageChangedEvent(IWizardPage<SetHydroCalcuPrefixViewModel> page, int index)
        {
            this.itemForPrev.Visibility = page.AllowPrev ? LayoutVisibility.Always : LayoutVisibility.Never;
            this.itemForNext.Visibility = page.AllowNext ? LayoutVisibility.Always : LayoutVisibility.Never;
            this.navigationFrame1.SelectedPageIndex = index;
        }
        //选择页面状态改变
        private void _wizard_SelectedPageStateChangedEvent(IWizardPage<SetHydroCalcuPrefixViewModel> page, int index)
        {
            this.itemForPrev.Visibility = page.AllowPrev ? LayoutVisibility.Always : LayoutVisibility.Never;
            this.itemForNext.Visibility = page.AllowNext ? LayoutVisibility.Always : LayoutVisibility.Never;
        }
        //上一步
        private void btnPrev_Click(object sender, EventArgs e)
        {
            if (_wizard != null)
            //水箱
            if (_hydroInfo.Waterboxs != null && _hydroInfo.Waterboxs.Count > 0)
            {
                _wizard.Prev();
                this.groupForWaterBox.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
                this.setHydroWaterboxCalcuPrefixListCtrl1.SetBindingData(_hydroInfo);
            }
            else
            {
                this.groupForWaterBox.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            }
            //水泵
            if (_hydroInfo.Pumps != null && _hydroInfo.Pumps.Count > 0)
            {
                this.groupForPump.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
                this.setHydroPumpCalcuPrefixListCtrl1.SetBindingData(_hydroInfo);
            }
            else
            {
                this.groupForPump.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            }
            //喷嘴
            if (_hydroInfo.Nozzles != null && _hydroInfo.Nozzles.Count > 0)
            {
                this.groupForNozzle.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
                this.setHydroNozzleCalcuPrefixListCtrl1.SetBindingData(_hydroInfo);
            }
            else
            {
                this.groupForNozzle.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            }
        }
        /// <summary>
        /// 更新绑定数据
        /// </summary>
        public void UpdateBindingData()
        {
            if (_hydroInfo == null)
            {
                return;
            }
            if (_hydroInfo.Waterboxs != null && _hydroInfo.Waterboxs.Count > 0)
            {
                this.setHydroWaterboxCalcuPrefixListCtrl1.UpdateBindingData();
            }
            if (_hydroInfo.Pumps != null && _hydroInfo.Pumps.Count > 0)
            {
                this.setHydroPumpCalcuPrefixListCtrl1.UpdateBindingData();
            }
            if (_hydroInfo.Nozzles != null && _hydroInfo.Nozzles.Count > 0)
            {
                this.setHydroNozzleCalcuPrefixListCtrl1.UpdateBindingData();
            }
        }
        //下一步
        private void btnNext_Click(object sender, EventArgs e)
        {
            if (_wizard != null)
            {
                _wizard.Next();
            }
        }
        //计算
        private void btnComplete_Click(object sender, EventArgs e)
        {
            if (_wizard != null)
            {
                var bol = _wizard.Complete();
                if (bol)
                {
                    var hydroInfo = _hydroInfoFunc?.Invoke();
                    if (hydroInfo == null)
                    {
                        return;
                    }
                    this.CalcuEvent?.Invoke(hydroInfo);
                }
            }
        }
    }
}