using DevExpress.XtraLayout.Utils;
using Yw.EPAnet;
namespace Yw.WinFrmUI
{
public partial class SetHydroCalcuPrefixCtrl : DevExpress.XtraEditors.XtraUserControl
{
public SetHydroCalcuPrefixCtrl()
{
InitializeComponent();
}
///
/// 控件最小宽度
///
public const int ControlMinWidth = 350;
///
/// 水力计算事件
///
public event Action HydroCalcuEvent;
///
/// 水力查看事件
///
public event Action HydroViewEvent;
private SetHydroCalcuPrefixViewModel _vm = null;
private SetHydroCalcuPrefixManager _wizard;
private Func _hydroInfoFunc = null;
///
/// 初始化数据
///
public void InitialData(Func hydroInfoFunc)
{
_hydroInfoFunc = hydroInfoFunc;
}
///
/// 绑定数据
///
public void SetBindingData()
{
var hydroInfo = _hydroInfoFunc?.Invoke();
if (hydroInfo == null)
{
return;
}
this.groupForBottom.Visibility = LayoutVisibility.Always;
this.navigationFrame.Controls.Clear();
this.navigationFrame.Pages.Clear();
var wizardPageList = new List>();
if (hydroInfo.Waterboxs != null && hydroInfo.Waterboxs.Count > 0)
{
var setWaterboxCalcuPrefixListCtrl = new SetWaterboxCalcuPrefixListCtrl();
setWaterboxCalcuPrefixListCtrl.ViewWaterboxEvent += (waterbox) =>
{
if (waterbox == null)
{
return;
}
this.HydroViewEvent?.Invoke(waterbox);
};
wizardPageList.Add(setWaterboxCalcuPrefixListCtrl);
AddPage(setWaterboxCalcuPrefixListCtrl);
}
if (hydroInfo.Pumps != null && hydroInfo.Pumps.Count > 0)
{
var setPumpCalcuPrefixListCtrl = new SetPumpCalcuPrefixListCtrl();
setPumpCalcuPrefixListCtrl.ViewPumpEvent += (pump) =>
{
if (pump == null)
{
return;
}
this.HydroViewEvent?.Invoke(pump);
};
wizardPageList.Add(setPumpCalcuPrefixListCtrl);
AddPage(setPumpCalcuPrefixListCtrl);
}
if (hydroInfo.Nozzles != null && hydroInfo.Nozzles.Count > 0)
{
var setNozzleCalcuPrefixListCtrl = new SetNozzleCalcuPrefixListCtrl();
setNozzleCalcuPrefixListCtrl.ViewNozzleEvent += (nozzle) =>
{
if (nozzle == null)
{
return;
}
this.HydroViewEvent?.Invoke(nozzle);
};
wizardPageList.Add(setNozzleCalcuPrefixListCtrl);
AddPage(setNozzleCalcuPrefixListCtrl);
}
if (wizardPageList.Count < 1)
{
return;
}
_vm = new SetHydroCalcuPrefixViewModel();
_vm.HydroInfo = hydroInfo;
_vm.FirstPage = wizardPageList.First();
_vm.LastPage = wizardPageList.Last();
_wizard = new SetHydroCalcuPrefixManager(_vm);
_wizard.SelectedPageChangedEvent += (page, index) =>
{
this.itemForPrev.Visibility = page.AllowPrev ? LayoutVisibility.Always : LayoutVisibility.Never;
this.itemForNext.Visibility = page.AllowNext ? LayoutVisibility.Always : LayoutVisibility.Never;
this.itemForCalcu.Visibility = page.AllowComplete ? LayoutVisibility.Always : LayoutVisibility.Never;
this.navigationFrame.SelectedPageIndex = index;
};
_wizard.SelectedPageStateChangedEvent += (page, index) =>
{
this.itemForPrev.Visibility = page.AllowPrev ? LayoutVisibility.Always : LayoutVisibility.Never;
this.itemForNext.Visibility = page.AllowNext ? LayoutVisibility.Always : LayoutVisibility.Never;
this.itemForCalcu.Visibility = page.AllowComplete ? LayoutVisibility.Always : LayoutVisibility.Never;
};
_wizard.InitialManager(wizardPageList.ToArray());
}
///
///
///
public void SetFailedList(List allFailedList)
{
this.groupForBottom.Visibility = LayoutVisibility.Never;
this.navigationFrame.Controls.Clear();
this.navigationFrame.Pages.Clear();
var ctrl = new HydroCalcuFailedCtrl();
ctrl.Dock = DockStyle.Fill;
ctrl.SetBindingData(allFailedList);
AddPage(ctrl);
}
//添加page
private void AddPage(Control ctrl)
{
var page = new DevExpress.XtraBars.Navigation.NavigationPage();
this.navigationFrame.Controls.Add(page);
this.navigationFrame.Pages.Add(page);
ctrl.Dock = DockStyle.Fill;
page.Controls.Add(ctrl);
}
//上一步
private void btnPrev_Click(object sender, EventArgs e)
{
if (_wizard != null)
{
_wizard.Prev();
}
}
//下一步
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.HydroCalcuEvent?.Invoke();
}
}
}
}
}