duheng
2024-12-03 f107df56388e042b8041691a05c604122bf978e0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
using DevExpress.Xpo.Helpers;
using DevExpress.XtraEditors;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Yw.WinFrmUI
{
    public partial class HydroPumpListStateEditCtrl : DevExpress.XtraEditors.XtraUserControl
    {
        public HydroPumpListStateEditCtrl()
        {
            InitializeComponent();
        }
 
        /// <summary>
        /// 选择改变事件
        /// </summary>
        public event Action<HydroPumpListItemStateViewModel> SelectedChangedEvent;
 
        private BindingList<HydroPumpListItemStateViewModel> _allBindingList = null;//所有绑定列表
 
        /// <summary>
        /// 是否有改变
        /// </summary>
        public bool HasChanged
        {
            get { return _hasChanged; }
        }
        private bool _hasChanged = false;
 
 
 
        /// <summary>
        /// 绑定数据
        /// </summary>
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo)
        {
            SetBindingData(hydroInfo?.Pumps, hydroInfo);
        }
 
        /// <summary>
        /// 绑定数据
        /// </summary>
        public void SetBindingData(List<Yw.Model.HydroPumpInfo> allPumpList, Yw.Model.HydroModelInfo hydroInfo)
        {
            var list = allPumpList?.Select(x => new HydroPumpListItemStateViewModel(x, hydroInfo)).ToList();
            SetBindingData(list);
        }
 
        /// <summary>
        /// 绑定数据
        /// </summary>
        public void SetBindingData(List<HydroPumpListItemStateViewModel> allStateList)
        {
            _allBindingList = new BindingList<HydroPumpListItemStateViewModel>();
            allStateList?.ForEach(x => _allBindingList.Add(x));
            this.hydroPumpListItemStateViewModelBindingSource.DataSource = _allBindingList;
            this.hydroPumpListItemStateViewModelBindingSource.ResetBindings(false);
        }
 
        /// <summary>
        /// 获取工况列表
        /// </summary>
        public List<HydroWorkingPumpViewModel> GetWorkingList()
        {
            return _allBindingList?.Select(x => new HydroWorkingPumpViewModel()
            {
                Code = x.Code,
                LinkStatus = x.RunStatus ? Yw.Hydro.PumpStatus.Open : Yw.Hydro.PumpStatus.Closed,
                CurrentHz = x.CurrentHz
            }).ToList();
        }
 
        //
        private void imageListBoxControl1_ContextButtonClick(object sender, DevExpress.Utils.ContextItemClickEventArgs e)
        {
            var vm = e.DataItem as HydroPumpListItemStateViewModel;
            if (vm == null)
            {
                return;
            }
            var working = new HydroWorkingPumpViewModel()
            {
                Code = vm.Code,
                LinkStatus = vm.RunStatus ? Yw.Hydro.PumpStatus.Open : Yw.Hydro.PumpStatus.Closed,
                CurrentHz = vm.CurrentHz
            };
            var dlg = new SetHydroPumpWorkingDlg();
            dlg.ReloadDataEvent += (rhs) =>
            {
                vm.RunStatus = rhs.LinkStatus == Yw.Hydro.PumpStatus.Open;
                vm.CurrentHz = rhs.CurrentHz;
                if (vm.RunStatus)
                {
                    vm.Image = Yw.WinFrmUI.Hydro.Core.Properties.Resources.pump_run_32;
                }
                else
                {
                    vm.Image = Yw.WinFrmUI.Hydro.Core.Properties.Resources.pump_shut_32;
 
                }
                this.hydroPumpListItemStateViewModelBindingSource.ResetBindings(false);
                _hasChanged = true;
            };
            dlg.SetBindingData(working);
            dlg.ShowDialog();
        }
 
        //选择改变
        private void imageListBoxControl1_SelectedValueChanged(object sender, EventArgs e)
        {
            if (_allBindingList == null || _allBindingList.Count < 1)
            {
                return;
            }
            var item = this.imageListBoxControl1.SelectedItem;
            var vm = item as HydroPumpListItemStateViewModel;
            if (vm == null)
            {
                return;
            }
            this.SelectedChangedEvent?.Invoke(vm);
        }
 
 
    }
}