278 lines
11 KiB
C#
278 lines
11 KiB
C#
///
|
|
/// Copyright (c) 2016 Sensus Metering Systems
|
|
///
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using System.Windows.Forms;
|
|
using log4net;
|
|
using TBF.BenchControl;
|
|
using TBF.BenchControl.GenericDevices;
|
|
using TBF.Resources;
|
|
|
|
namespace TBF.UiControls
|
|
{
|
|
public class PathsHeatMetersCtrl : BaseWithListViewEx<Config.Entities.HeatMetersPath>, ITabWithListViewEx
|
|
{
|
|
static readonly ILog log = LogManager.GetLogger(typeof(PathsHeatMetersCtrl));
|
|
|
|
/// <summary>
|
|
/// Fixed ListViewEx columns
|
|
/// </summary>
|
|
enum Column
|
|
{
|
|
Name,
|
|
TWarmFrom,
|
|
TWarmTo,
|
|
TColdFrom,
|
|
TColdTo,
|
|
TMRefW1,
|
|
TMRefW2,
|
|
TMRefC1,
|
|
TMRefC2,
|
|
TMWrkW1,
|
|
TMWrkW2,
|
|
TMWrkC1,
|
|
TMWrkC2,
|
|
FixedColumnsCount,
|
|
}
|
|
readonly int fixedColumnsCount = (int)Column.FixedColumnsCount;
|
|
|
|
PathsDlg parent;
|
|
Control parentControl;
|
|
Control[] editors;
|
|
|
|
public PathsHeatMetersCtrl()
|
|
: base()
|
|
{
|
|
}
|
|
|
|
public void Initialize(PathsDlg parent, Control parentControl)
|
|
{
|
|
this.parent = parent;
|
|
this.parentControl = parentControl;
|
|
|
|
#if HEAT_METERS
|
|
/// Load the paths
|
|
MyItems = parent.Session.QueryOver<Config.Entities.HeatMetersPath>()
|
|
.OrderBy(x => x.ItemNr).Asc
|
|
.List();
|
|
|
|
SubItemClicked += new Results.Forms.SubItemEventHandler(listViewEx_SubItemClicked);
|
|
SubItemRightClicked += new Results.Forms.SubItemEventHandler(listViewEx_SubItemRightClicked);
|
|
SubItemEndEditing += new Results.Forms.SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing);
|
|
|
|
IList<ITempMeter> tempMeters = new List<ITempMeter>();
|
|
foreach (var cmpnt in parent.TbfComponents)
|
|
{
|
|
if (cmpnt is ITempMeter) tempMeters.Add(cmpnt as ITempMeter);
|
|
}
|
|
|
|
/// ListViewEx columns
|
|
TBF.LocalSettings ls = Program.LocalSettings;
|
|
Columns.Add(Strings.Name, (ls.HeatMetersColumnCount > 0) ? ls.HeatMetersColumnWidths[0] : 60 * parent.Dpi / PathsDlg.Dpi100pct);
|
|
Columns.Add(Strings.T_warm_from, (ls.HeatMetersColumnCount > 1) ? ls.HeatMetersColumnWidths[1] : 50 * parent.Dpi / PathsDlg.Dpi100pct);
|
|
Columns.Add(Strings.T_warm_to, (ls.HeatMetersColumnCount > 2) ? ls.HeatMetersColumnWidths[2] : 50 * parent.Dpi / PathsDlg.Dpi100pct);
|
|
Columns.Add(Strings.T_cold_from, (ls.HeatMetersColumnCount > 3) ? ls.HeatMetersColumnWidths[3] : 50 * parent.Dpi / PathsDlg.Dpi100pct);
|
|
Columns.Add(Strings.T_cold_to, (ls.HeatMetersColumnCount > 4) ? ls.HeatMetersColumnWidths[4] : 50 * parent.Dpi / PathsDlg.Dpi100pct);
|
|
Columns.Add(string.Format("{0} {1}", Strings.T_ref_warm, 1), (ls.HeatMetersColumnCount > 5) ? ls.HeatMetersColumnWidths[5] : 50 * parent.Dpi / PathsDlg.Dpi100pct);
|
|
Columns.Add(string.Format("{0} {1}", Strings.T_ref_warm, 2), (ls.HeatMetersColumnCount > 6) ? ls.HeatMetersColumnWidths[6] : 50 * parent.Dpi / PathsDlg.Dpi100pct);
|
|
Columns.Add(string.Format("{0} {1}", Strings.T_ref_cold, 1), (ls.HeatMetersColumnCount > 7) ? ls.HeatMetersColumnWidths[7] : 50 * parent.Dpi / PathsDlg.Dpi100pct);
|
|
Columns.Add(string.Format("{0} {1}", Strings.T_ref_cold, 2), (ls.HeatMetersColumnCount > 8) ? ls.HeatMetersColumnWidths[8] : 50 * parent.Dpi / PathsDlg.Dpi100pct);
|
|
Columns.Add(string.Format("{0} {1}", Strings.T_work_warm, 1), (ls.HeatMetersColumnCount > 9) ? ls.HeatMetersColumnWidths[9] : 50 * parent.Dpi / PathsDlg.Dpi100pct);
|
|
Columns.Add(string.Format("{0} {1}", Strings.T_work_warm, 2), (ls.HeatMetersColumnCount > 10) ? ls.HeatMetersColumnWidths[10] : 50 * parent.Dpi / PathsDlg.Dpi100pct);
|
|
Columns.Add(string.Format("{0} {1}", Strings.T_work_cold, 1), (ls.HeatMetersColumnCount > 11) ? ls.HeatMetersColumnWidths[11] : 50 * parent.Dpi / PathsDlg.Dpi100pct);
|
|
Columns.Add(string.Format("{0} {1}", Strings.T_work_cold, 2), (ls.HeatMetersColumnCount > 12) ? ls.HeatMetersColumnWidths[12] : 50 * parent.Dpi / PathsDlg.Dpi100pct);
|
|
|
|
/// Temperatures, pressures
|
|
ComboBox tWarmCBox = new ComboBox();
|
|
ComboBox tColdCBox = new ComboBox();
|
|
foreach (var cmpnt in parent.TbfComponents)
|
|
{
|
|
if (cmpnt is BenchControl.GenericDevices.ITempMeter)
|
|
{
|
|
tWarmCBox.Items.Add(cmpnt.Cfg.Name);
|
|
tColdCBox.Items.Add(cmpnt.Cfg.Name);
|
|
}
|
|
}
|
|
|
|
editors = new Control[fixedColumnsCount];
|
|
///
|
|
for (int i = 0; i < (int)Column.TMRefW1; i++)
|
|
{
|
|
editors[i] = new TextBox(); /// Name
|
|
editors[i].Visible = false;
|
|
parent.Controls.Add(editors[i]);
|
|
}
|
|
for (int i = (int)Column.TMRefW1; i < editors.Length; i++)
|
|
{
|
|
editors[i] = new ComboBox();
|
|
(editors[i] as ComboBox).Items.Add("---");
|
|
foreach (var t in tempMeters) (editors[i] as ComboBox).Items.Add(t.Name);
|
|
editors[i].Visible = false;
|
|
parent.Controls.Add(editors[i]);
|
|
}
|
|
|
|
base.RedrawAll();
|
|
#endif
|
|
}
|
|
|
|
void listViewEx_SubItemClicked(object sender, Results.Forms.SubItemEventArgs e)
|
|
{
|
|
if (!Unlocked || e.SubItem >= editors.Length) return;
|
|
if ((e.Item.Tag is Config.Entities.IHasItemNr) &&
|
|
((e.Item.Tag as Config.Entities.IHasItemNr).ItemNr < FixedRowsCount) &&
|
|
(e.SubItem < fixedColumnsCount))
|
|
{
|
|
return;
|
|
}
|
|
StartEditing(editors[e.SubItem], e.Item, e.SubItem);
|
|
}
|
|
|
|
void listViewEx_SubItemRightClicked(object sender, Results.Forms.SubItemEventArgs e)
|
|
{
|
|
if (!Unlocked || e.SubItem >= editors.Length) return;
|
|
|
|
if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell,
|
|
Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question))
|
|
{
|
|
int columnNr = e.SubItem;
|
|
string value = null;
|
|
System.Drawing.Color backColor = System.Drawing.Color.White;
|
|
foreach (ListViewItem item in Items)
|
|
{
|
|
if (value != null)
|
|
{
|
|
item.SubItems[columnNr].Text = value;
|
|
item.SubItems[columnNr].BackColor = backColor;
|
|
}
|
|
else if (item == e.Item)
|
|
{
|
|
value = item.SubItems[columnNr].Text;
|
|
backColor = item.SubItems[columnNr].BackColor;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void listViewEx_SubItemEndEditing(object sender, Results.Forms.SubItemEndEditingEventArgs e)
|
|
{
|
|
if (e.SubItem >= (int)Column.TWarmFrom && e.SubItem <= (int)Column.TColdTo)
|
|
{
|
|
try
|
|
{
|
|
Utils.ParseUFloat(e.DisplayText);
|
|
}
|
|
catch
|
|
{
|
|
/// NOK -> revert
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
e.Cancel = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public override void DrawOne(object myItem)
|
|
{
|
|
Config.Entities.HeatMetersPath entity = (Config.Entities.HeatMetersPath)myItem;
|
|
BenchControl.HeatMetersPath path = new BenchControl.HeatMetersPath(entity, parent.TbfComponents);
|
|
|
|
ListViewItem lvi = new ListViewItem(entity.Name);
|
|
|
|
lvi.SubItems.Add(path.TempWarmFrom.ToString());
|
|
lvi.SubItems.Add(path.TempWarmTo.ToString());
|
|
lvi.SubItems.Add(path.TempColdFrom.ToString());
|
|
lvi.SubItems.Add(path.TempColdTo.ToString());
|
|
|
|
lvi.SubItems.Add(path.TMeterRefWarm1 != null ? path.TMeterRefWarm1.Cfg.Name : "---");
|
|
lvi.SubItems.Add(path.TMeterRefWarm2 != null ? path.TMeterRefWarm2.Cfg.Name : "---");
|
|
lvi.SubItems.Add(path.TMeterRefCold1 != null ? path.TMeterRefCold1.Cfg.Name : "---");
|
|
lvi.SubItems.Add(path.TMeterRefCold2 != null ? path.TMeterRefCold2.Cfg.Name : "---");
|
|
|
|
lvi.SubItems.Add(path.TMeterWorkWarm1 != null ? path.TMeterWorkWarm1.Cfg.Name : "---");
|
|
lvi.SubItems.Add(path.TMeterWorkWarm2 != null ? path.TMeterWorkWarm2.Cfg.Name : "---");
|
|
lvi.SubItems.Add(path.TMeterWorkCold1 != null ? path.TMeterWorkCold1.Cfg.Name : "---");
|
|
lvi.SubItems.Add(path.TMeterWorkCold2 != null ? path.TMeterWorkCold2.Cfg.Name : "---");
|
|
|
|
lvi.Tag = entity;
|
|
|
|
Items.Add(lvi);
|
|
}
|
|
|
|
public override void UpdateOne(ListViewItem lvi, object myItem)
|
|
{
|
|
Config.Entities.HeatMetersPath entity = (Config.Entities.HeatMetersPath)myItem;
|
|
|
|
entity.Name = lvi.Text;
|
|
|
|
entity.TempWarmFrom = Utils.ParseUFloat(lvi.SubItems[(int)Column.TWarmFrom].Text);
|
|
entity.TempWarmTo = Utils.ParseUFloat(lvi.SubItems[(int)Column.TWarmTo].Text);
|
|
entity.TempColdFrom = Utils.ParseUFloat(lvi.SubItems[(int)Column.TColdFrom].Text);
|
|
entity.TempColdTo = Utils.ParseUFloat(lvi.SubItems[(int)Column.TColdTo].Text);
|
|
|
|
entity.TMeterRefWarm1 = lvi.SubItems[(int)Column.TMRefW1].Text == "---" ? null : lvi.SubItems[(int)Column.TMRefW1].Text;
|
|
entity.TMeterRefWarm2 = lvi.SubItems[(int)Column.TMRefW2].Text == "---" ? null : lvi.SubItems[(int)Column.TMRefW2].Text;
|
|
entity.TMeterRefCold1 = lvi.SubItems[(int)Column.TMRefC1].Text == "---" ? null : lvi.SubItems[(int)Column.TMRefC1].Text;
|
|
entity.TMeterRefCold2 = lvi.SubItems[(int)Column.TMRefC2].Text == "---" ? null : lvi.SubItems[(int)Column.TMRefC2].Text;
|
|
|
|
entity.TMeterWorkWarm1 = lvi.SubItems[(int)Column.TMWrkW1].Text == "---" ? null : lvi.SubItems[(int)Column.TMWrkW1].Text;
|
|
entity.TMeterWorkWarm2 = lvi.SubItems[(int)Column.TMWrkW2].Text == "---" ? null : lvi.SubItems[(int)Column.TMWrkW2].Text;
|
|
entity.TMeterWorkCold1 = lvi.SubItems[(int)Column.TMWrkC1].Text == "---" ? null : lvi.SubItems[(int)Column.TMWrkC1].Text;
|
|
entity.TMeterWorkCold2 = lvi.SubItems[(int)Column.TMWrkC2].Text == "---" ? null : lvi.SubItems[(int)Column.TMWrkC2].Text;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Update the entities and save them to the database
|
|
/// </summary>
|
|
public new void OkBtnClicked()
|
|
{
|
|
base.OkBtnClicked();
|
|
|
|
#if HEAT_METERS
|
|
/// Update the database
|
|
foreach (var entity in ToBeRemovedItems)
|
|
{
|
|
Config.FluentCommon.DeleteFromDb(parent.Session, entity);
|
|
}
|
|
foreach (var entity in MyItems)
|
|
{
|
|
Config.FluentCommon.SaveToDb(parent.Session, entity);
|
|
}
|
|
|
|
/// Update the column widths
|
|
Program.LocalSettings.HeatMetersColumnWidths = new int[Columns.Count];
|
|
for (int i = 0; i < Columns.Count; i++)
|
|
{
|
|
Program.LocalSettings.HeatMetersColumnWidths[i] = Columns[i].Width;
|
|
}
|
|
Program.LocalSettings.Save();
|
|
#endif
|
|
}
|
|
|
|
public void AddOne()
|
|
{
|
|
/// Find an unused test name
|
|
string newName;
|
|
for (int nameId = 1; true; nameId++)
|
|
{
|
|
newName = Strings.New_heat_meters_path_name + nameId.ToString();
|
|
bool notUsed = true;
|
|
foreach (var t in MyItems) if (t.Name.Equals(newName)) notUsed = false;
|
|
if (notUsed) break;
|
|
}
|
|
|
|
Config.Entities.HeatMetersPath entity = new Config.Entities.HeatMetersPath(newName, MyItems.Count);
|
|
|
|
base.AddOne(entity);
|
|
}
|
|
|
|
public new void RemoveSelected()
|
|
{
|
|
bool lastOneRemoved = base.RemoveSelected();
|
|
if (lastOneRemoved && parent != null)
|
|
{
|
|
parent.UpdateButtonStates(SharedButtons.SelectedItemPos.None);
|
|
}
|
|
}
|
|
}
|
|
}
|