using DevExpress.XtraLayout;
using DevExpress.XtraLayout.Utils;
namespace Yw.WinFrmUI
{
public partial class SetHydroWorkingCtrl : DevExpress.XtraEditors.XtraUserControl
{
public SetHydroWorkingCtrl()
{
InitializeComponent();
this.layoutControl1.SetupLayoutControl();
}
///
/// 查看组件事件
///
public event Action HydroViewEvent;
private Yw.Model.HydroModelInfo _hydroInfo = null;//水力信息
private SetHydroWorkingViewModel _working = null;//工况
private List _visualCtrlList = null;//可见控件列表
///
/// 绑定数据
///
public void SetBindingData
(
Yw.Model.HydroModelInfo hydroInfo,
List allWorkingList,
List allMonitorValueList
)
{
if (hydroInfo == null)
{
return;
}
_hydroInfo = hydroInfo;
_working = new SetHydroWorkingViewModel(hydroInfo, allWorkingList, allMonitorValueList);
_visualCtrlList = new List();
#region 信息
//var basicGroup = this.layoutControl1.AddGroup();
//basicGroup.Text = "工况信息";
//basicGroup.ExpandButtonVisible = true;
//basicGroup.Expanded = false;
//basicGroup.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
//basicGroup.ExpandOnDoubleClick = true;
//var basicCtrl = new SetHydroWorkingBasicCtrl();
//basicCtrl.SetBindingData(_hydroWorking);
//var basicItem = basicGroup.AddItem("工况信息", basicCtrl);
//basicItem.TextVisible = false;
//basicItem.Height = 120;
//basicGroup.BestFit();
//basicGroup.LayoutMode = LayoutMode.Regular;
//basicGroup.AllowBorderColorBlending = true;
//basicGroup.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
//_basicCtrl = basicCtrl;
#endregion
#region 水库
if (hydroInfo.Reservoirs != null && hydroInfo.Reservoirs.Count > 0)
{
var group = this.layoutControl1.AddGroup();
group.Text = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Reservoir);
group.ExpandButtonVisible = true;
group.Expanded = true;
group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
group.ExpandOnDoubleClick = true;
foreach (var visual in hydroInfo.Reservoirs)
{
var visualCtrl = new SetHydroWorkingReservoirCtrl();
visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x);
var workingInfo = new HydroWorkingReservoirViewModel(visual);
_working.WorkingInfo.AppendWorking(workingInfo);
visualCtrl.SetBindingData(visual, workingInfo);
var item = group.AddItem(visual.Name, visualCtrl);
item.TextVisible = false;
_visualCtrlList.Add(visualCtrl);
}
group.BestFit();
group.LayoutMode = LayoutMode.Flow;
group.AllowBorderColorBlending = true;
group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
foreach (LayoutControlItem item in group.Items)
{
item.Size = new Size(200, 80);
}
}
#endregion
#region 水池
var tanks = hydroInfo.GetAllTanks();
if (tanks != null && tanks.Count > 0)
{
var group = this.layoutControl1.AddGroup();
group.Text = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Tank);
group.ExpandButtonVisible = true;
group.Expanded = true;
group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
group.ExpandOnDoubleClick = true;
foreach (var visual in tanks)
{
var visualCtrl = new SetHydroWorkingTankCtrl();
visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x);
var workingInfo = new HydroWorkingTankViewModel(visual);
_working.WorkingInfo.AppendWorking(workingInfo);
visualCtrl.SetBindingData(visual, workingInfo);
var item = group.AddItem(visual.Name, visualCtrl);
item.TextVisible = false;
_visualCtrlList.Add(visualCtrl);
}
group.BestFit();
group.LayoutMode = LayoutMode.Flow;
group.AllowBorderColorBlending = true;
group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
foreach (LayoutControlItem item in group.Items)
{
item.Size = new Size(200, 80);
}
}
#endregion
#region 水泵
if (hydroInfo.Pumps != null && hydroInfo.Pumps.Count > 0)
{
var group = this.layoutControl1.AddGroup();
group.Text = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pump);
group.ExpandButtonVisible = true;
group.Expanded = true;
group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
group.ExpandOnDoubleClick = true;
foreach (var visual in hydroInfo.Pumps)
{
var visualCtrl = new SetHydroWorkingPumpCtrl();
visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x);
var workingInfo = new HydroWorkingPumpViewModel(visual);
_working.WorkingInfo.AppendWorking(workingInfo);
visualCtrl.SetBindingData(visual, workingInfo);
var item = group.AddItem(visual.Name, visualCtrl);
item.TextVisible = false;
_visualCtrlList.Add(visualCtrl);
}
group.BestFit();
group.LayoutMode = LayoutMode.Flow;
group.AllowBorderColorBlending = true;
group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
foreach (LayoutControlItem item in group.Items)
{
item.Size = new Size(200, 100);
}
}
#endregion
#region 阀门
if (hydroInfo.Valves != null && hydroInfo.Valves.Count > 0)
{
foreach (var visual in hydroInfo.Valves)
{
var workingInfo = new HydroWorkingValveViewModel(visual);
_working.WorkingInfo.AppendWorking(workingInfo);
}
}
#endregion
#region 阻件
var resistances = hydroInfo.GetAllResistances();
if (resistances != null && resistances.Count > 0)
{
foreach (var visual in resistances)
{
var workingInfo = new HydroWorkingResistanceViewModel(visual);
_working.WorkingInfo.AppendWorking(workingInfo);
}
}
#endregion
}
///
/// 获取工况
///
public SetHydroWorkingViewModel GetWorking()
{
if (_hydroInfo == null)
{
return default;
}
if (_working == null)
{
return default;
}
_visualCtrlList?.ForEach(x => x.GetWorking());
return _working;
}
}
}