diff --git a/TestBenchFramework/Forms/ResultItemSpec.cs b/TestBenchFramework/Forms/ResultItemSpec.cs new file mode 100644 index 000000000..38f1987f7 --- /dev/null +++ b/TestBenchFramework/Forms/ResultItemSpec.cs @@ -0,0 +1,30 @@ +using System; +using System.Text; + +namespace TBF.Forms +{ + public class ResultItemSpec + { + static int idCounter; /// Values of this static counter are assigned to ID-s in instance constructor + static ResultItemSpec() { idCounter = 0; } /// Static constructor + + /// Public fields + public readonly int ID; + public readonly string Name; + public readonly string ClmnHeaderText; + public readonly string Format; + + public delegate float PickDlgt(Entities.MeterTestResult meterTestResult); + public readonly PickDlgt Pick; + + /// Public constructor which assignes unique ID-s + public ResultItemSpec(string name, string clmnHeaderText, string format, PickDlgt pick) + { + ID = idCounter++; + Name = name; + ClmnHeaderText = clmnHeaderText; + Format = format; + Pick = pick; + } + } +} diff --git a/TestBenchFramework/Forms/ResultsConfig.Designer.cs b/TestBenchFramework/Forms/ResultsConfig.Designer.cs index f83b14b28..d6b5f8bd4 100644 --- a/TestBenchFramework/Forms/ResultsConfig.Designer.cs +++ b/TestBenchFramework/Forms/ResultsConfig.Designer.cs @@ -43,6 +43,7 @@ this.removeAllButton = new System.Windows.Forms.Button(); this.removeButton = new System.Windows.Forms.Button(); this.addButton = new System.Windows.Forms.Button(); + this.unlockButton = new System.Windows.Forms.Button(); this.testsArangementGroupBox.SuspendLayout(); this.metersArangementGroupBox.SuspendLayout(); this.SuspendLayout(); @@ -50,6 +51,7 @@ // testsRowsRadioButton // this.testsRowsRadioButton.AutoSize = true; + this.testsRowsRadioButton.Enabled = false; this.testsRowsRadioButton.Location = new System.Drawing.Point(21, 24); this.testsRowsRadioButton.Name = "testsRowsRadioButton"; this.testsRowsRadioButton.Size = new System.Drawing.Size(120, 17); @@ -61,6 +63,7 @@ // testsColumnsRadioButton // this.testsColumnsRadioButton.AutoSize = true; + this.testsColumnsRadioButton.Enabled = false; this.testsColumnsRadioButton.Location = new System.Drawing.Point(21, 46); this.testsColumnsRadioButton.Name = "testsColumnsRadioButton"; this.testsColumnsRadioButton.Size = new System.Drawing.Size(137, 17); @@ -94,6 +97,7 @@ // verticallyRadioButton // this.verticallyRadioButton.AutoSize = true; + this.verticallyRadioButton.Enabled = false; this.verticallyRadioButton.Location = new System.Drawing.Point(21, 24); this.verticallyRadioButton.Name = "verticallyRadioButton"; this.verticallyRadioButton.Size = new System.Drawing.Size(67, 17); @@ -105,6 +109,7 @@ // horizontallyRadioButton // this.horizontallyRadioButton.AutoSize = true; + this.horizontallyRadioButton.Enabled = false; this.horizontallyRadioButton.Location = new System.Drawing.Point(21, 46); this.horizontallyRadioButton.Name = "horizontallyRadioButton"; this.horizontallyRadioButton.Size = new System.Drawing.Size(79, 17); @@ -115,26 +120,28 @@ // // okButton // - this.okButton.Location = new System.Drawing.Point(283, 18); + this.okButton.Location = new System.Drawing.Point(283, 57); this.okButton.Name = "okButton"; this.okButton.Size = new System.Drawing.Size(104, 30); this.okButton.TabIndex = 4; - this.okButton.Text = "OK"; + this.okButton.Text = "Close"; this.okButton.UseVisualStyleBackColor = true; this.okButton.Click += new System.EventHandler(this.okButton_Click); // // cancelButton // this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.cancelButton.Location = new System.Drawing.Point(283, 55); + this.cancelButton.Location = new System.Drawing.Point(283, 94); this.cancelButton.Name = "cancelButton"; this.cancelButton.Size = new System.Drawing.Size(104, 30); this.cancelButton.TabIndex = 5; this.cancelButton.Text = "Cancel"; this.cancelButton.UseVisualStyleBackColor = true; + this.cancelButton.Visible = false; // // availableResultsListBox // + this.availableResultsListBox.Enabled = false; this.availableResultsListBox.FormattingEnabled = true; this.availableResultsListBox.Location = new System.Drawing.Point(12, 205); this.availableResultsListBox.Name = "availableResultsListBox"; @@ -144,6 +151,7 @@ // // selectedResultsListBox // + this.selectedResultsListBox.Enabled = false; this.selectedResultsListBox.FormattingEnabled = true; this.selectedResultsListBox.Location = new System.Drawing.Point(252, 205); this.selectedResultsListBox.Name = "selectedResultsListBox"; @@ -172,6 +180,7 @@ // removeAllButton // this.removeAllButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.removeAllButton.Enabled = false; this.removeAllButton.Location = new System.Drawing.Point(153, 306); this.removeAllButton.Name = "removeAllButton"; this.removeAllButton.Size = new System.Drawing.Size(94, 30); @@ -183,6 +192,7 @@ // removeButton // this.removeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.removeButton.Enabled = false; this.removeButton.Location = new System.Drawing.Point(153, 271); this.removeButton.Name = "removeButton"; this.removeButton.Size = new System.Drawing.Size(93, 30); @@ -194,6 +204,7 @@ // addButton // this.addButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.addButton.Enabled = false; this.addButton.Location = new System.Drawing.Point(153, 236); this.addButton.Name = "addButton"; this.addButton.Size = new System.Drawing.Size(93, 30); @@ -202,6 +213,16 @@ this.addButton.UseVisualStyleBackColor = true; this.addButton.Click += new System.EventHandler(this.addButton_Click); // + // unlockButton + // + this.unlockButton.Location = new System.Drawing.Point(283, 21); + this.unlockButton.Name = "unlockButton"; + this.unlockButton.Size = new System.Drawing.Size(104, 30); + this.unlockButton.TabIndex = 47; + this.unlockButton.Text = "Unlock"; + this.unlockButton.UseVisualStyleBackColor = true; + this.unlockButton.Click += new System.EventHandler(this.unlockButton_Click); + // // ResultsConfig // this.AcceptButton = this.okButton; @@ -209,6 +230,7 @@ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.cancelButton; this.ClientSize = new System.Drawing.Size(399, 379); + this.Controls.Add(this.unlockButton); this.Controls.Add(this.removeAllButton); this.Controls.Add(this.removeButton); this.Controls.Add(this.addButton); @@ -250,5 +272,6 @@ private System.Windows.Forms.Button removeAllButton; private System.Windows.Forms.Button removeButton; private System.Windows.Forms.Button addButton; + private System.Windows.Forms.Button unlockButton; } } \ No newline at end of file diff --git a/TestBenchFramework/Forms/ResultsConfig.cs b/TestBenchFramework/Forms/ResultsConfig.cs index 35adef60d..b0b0e5426 100644 --- a/TestBenchFramework/Forms/ResultsConfig.cs +++ b/TestBenchFramework/Forms/ResultsConfig.cs @@ -12,6 +12,11 @@ namespace TBF.Forms { public partial class ResultsConfig : Form { + /// + /// Required access rights to make changes with this form + /// + const Grp.GID RequiredGroupMembership = Grp.GID.Metrologists; + /// Arrangement of tests public enum TestsAre { @@ -28,23 +33,21 @@ namespace TBF.Forms } public Meters MetersArrangement; - /// Results items to be selected in the configuration - public enum ResultsItem - { - Abc, - Def, - Count - } - // - public IList AvailableItems; - public IList SelectedItems; + public IList allAvailableItems; + public IList AvailableItems; + public IList SelectedItems; + bool unlocked; public ResultsConfig() { InitializeComponent(); - SelectedItems = new List(); + unlocked = false; + cancelButton.Visible = false; + SelectedItems = new List(); + + CreateListOfAvailableItems(); AvailableItems = GetListOfAvailableItems(); } @@ -62,7 +65,8 @@ namespace TBF.Forms addButton.Text = Strings.Add; removeButton.Text = Strings.Remove; removeAllButton.Text = Strings.Remove_all; - okButton.Text = Strings.OkBtnText; + unlockButton.Text = Strings.UnlockBtnText; + okButton.Text = Strings.CloseBtnText; cancelButton.Text = Strings.CancelBtnText; } @@ -80,20 +84,22 @@ namespace TBF.Forms RedrawSelected(); } + void CreateListOfAvailableItems() + { + allAvailableItems = new List(); + allAvailableItems.Add(new ResultItemSpec("PulsesMeter", "PulsesMeter", "F0", x => (float)x.PulsesMeter)); + allAvailableItems.Add(new ResultItemSpec("PulsesMaster", "PulsesMaster", "F0", x => (float)x.PulsesMaster)); + } + /// /// Create a list of available items from the complete list from 'auxBrdUpgInfo' /// and the list of selected items. In this way the order of items in the created list /// is always the same as in the original list in 'auxBrdUpgInfo'. /// /// A list of available items which does not contain the selected items - IList GetListOfAvailableItems() + IList GetListOfAvailableItems() { - IList availableItems = new List(); - for (ResultsItem item = 0; item < ResultsItem.Count; item++) - { - if (!SelectedItems.Contains(item)) availableItems.Add(item); - } - return availableItems; + return allAvailableItems; } /// @@ -102,7 +108,7 @@ namespace TBF.Forms void RedrawAvailable() { availableResultsListBox.Items.Clear(); - foreach (var item in AvailableItems) availableResultsListBox.Items.Add(item.ToString()); + foreach (var item in AvailableItems) availableResultsListBox.Items.Add(item.Name); } /// @@ -111,7 +117,40 @@ namespace TBF.Forms void RedrawSelected() { selectedResultsListBox.Items.Clear(); - foreach (var item in SelectedItems) selectedResultsListBox.Items.Add(item.ToString()); + foreach (var item in SelectedItems) selectedResultsListBox.Items.Add(item.Name); + } + + private void unlockButton_Click(object sender, EventArgs e) + { + if (!unlocked) + { + if (!Entities.User.CurrentUser.IsMemberOf(RequiredGroupMembership)) + { + if ((new LoginDlg(RequiredGroupMembership)).ShowDialog() != DialogResult.OK) return; + } + else if (Program.LocalSettings.AlwaysAskPasswdWhenUnlocking) + { + if ((new LoginDlg(Entities.User.CurrentUser.Name, RequiredGroupMembership)).ShowDialog() != DialogResult.OK) return; + } + + unlocked = true; + + /// + /// Unlock user interface controls + /// + unlockButton.Enabled = false; + okButton.Text = Strings.OkBtnText; + cancelButton.Visible = true; + testsRowsRadioButton.Enabled = true; + testsColumnsRadioButton.Enabled = true; + verticallyRadioButton.Enabled = true; + horizontallyRadioButton.Enabled = true; + availableResultsListBox.Enabled = true; + selectedResultsListBox.Enabled = true; + addButton.Enabled = true; + removeButton.Enabled = true; + removeAllButton.Enabled = true; + } } void okButton_Click(object sender, EventArgs e) @@ -129,7 +168,7 @@ namespace TBF.Forms private void availableResultsListBox_DoubleClick(object sender, EventArgs e) { /// Double click works when just one item is selected - IList itemsToRemove = new List(); + IList itemsToRemove = new List(); if (availableResultsListBox.SelectedIndices.Count == 1) { var item = AvailableItems[availableResultsListBox.SelectedIndices[0]]; @@ -174,7 +213,7 @@ namespace TBF.Forms for (int i = selectedResultsListBox.SelectedIndices.Count - 1; i >= 0; i--) { - ResultsItem item = SelectedItems[selectedResultsListBox.SelectedIndices[i]]; + ResultItemSpec item = SelectedItems[selectedResultsListBox.SelectedIndices[i]]; SelectedItems.Remove(item); } AvailableItems = GetListOfAvailableItems(); diff --git a/TestBenchFramework/TBF.csproj b/TestBenchFramework/TBF.csproj index 7fa1e1f0f..ec2365fc4 100644 --- a/TestBenchFramework/TBF.csproj +++ b/TestBenchFramework/TBF.csproj @@ -530,6 +530,7 @@ EmergencyStopForm.cs + Form