/// /// Copyright (c) 2017 Sensus Slovensko a.s. /// using System; using System.Windows.Forms; using log4net; using TBF.Resources; namespace TBF.BenchControl.DataEntry.Standard6 { public partial class CycleEndForm : Form, GenericDevices.IHasCompleted { private static readonly ILog log = LogManager.GetLogger(typeof(CycleEndForm)); /// Number of text boxes for serial numbers public readonly int WaterMetersCount; public readonly bool RemarkEnabled; // To be retrieved after the form closes public string[] EndStateText; public string[] Remark; public string BatchRemark; // Set to 'true' when the form closes public bool Completed { get { return completed; } } bool completed; int textBoxesCount; Label[] labels; TextBox[] stateBoxes; TextBox[] remarkBoxes; /// /// Constructor /// /// Number of text boxes for serial numbers public CycleEndForm() { InitializeComponent(); ControlBox = false; labels = new Label[] { label1, label2, label3, label4, label5, label6 }; stateBoxes = new TextBox[] { textBox1, textBox2, textBox3, textBox4, textBox5, textBox6 }; remarkBoxes = new TextBox[] { remarkTextBox1, remarkTextBox2, remarkTextBox3, remarkTextBox4, remarkTextBox5, remarkTextBox6 }; textBoxesCount = stateBoxes.Length; this.WaterMetersCount = textBoxesCount; completed = false; StartForceCloseHandler(); } /// Parameterless constructor for 3 watermeters public CycleEndForm(int waterMetersCount, bool remarkEnabled) : this() { this.WaterMetersCount = waterMetersCount; this.RemarkEnabled = remarkEnabled; EndStateText = new string[WaterMetersCount]; Remark = new string[WaterMetersCount]; } private void CycleEndForm_Load(object sender, EventArgs e) { Localize(); Height = 100 + 46 * WaterMetersCount; if (!RemarkEnabled) { remarkLabel.Visible = false; batchRemarkButton.Visible = false; Width -= remarkTextBox1.Width; } for (int i = 0; i < textBoxesCount; i++) { if (!RemarkEnabled) remarkBoxes[i].Visible = false; if (i >= WaterMetersCount) { labels[i].Visible = false; stateBoxes[i].Visible = false; remarkBoxes[i].Visible = false; } } } void Localize() { Text = Strings.Data; okButton.Text = Strings.OkBtnText; for (int i = 0; i < WaterMetersCount; i++) { labels[i].Text = string.Format("{0} {1}:", Strings.Water_Meter, i + 1); } stateLabel.Text = string.Format("{0}:", Strings.State); remarkLabel.Text = string.Format("{0} {1}:", Strings.Water_Meter, Strings.Remark); } private void okButton_Click(object sender, EventArgs e) { for (int i = 0; i < WaterMetersCount; i++) { EndStateText[i] = stateBoxes[i].Text; Remark[i] = remarkBoxes[i].Text; } completed = true; Close(); } #region Forced close handling public void StartForceCloseHandler() { UiBridge.Bridge.CloseModelessFormHandler += delegate(object sender, EventArgs args) { if (InvokeRequired) { Invoke(new EventHandler(OnForceClose), sender, args); } else OnForceClose(sender, args); }; } void OnForceClose(object sender, EventArgs args) { DialogResult = DialogResult.Cancel; Close(); } #endregion private void batchRemarkButton_Click(object sender, EventArgs e) { TBF.UI.Shared.RemarkDlg dlg = new TBF.UI.Shared.RemarkDlg() { Remark = ((BatchRemark == null) ? string.Empty : BatchRemark) }; if (dlg.ShowDialog() == DialogResult.OK) { BatchRemark = dlg.Remark; } } } }