/// /// Copyright (c) 2015 Sensus Metering Systems /// using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Results.Entities; using ResultsBrowser.Resources; namespace ResultsBrowser.Forms { public partial class ResultsConfig : Form { /// /// Required access rights to make changes with this form /// const Config.Grp.GID RequiredGroupMembership = Config.Grp.GID.Metrologists; public Config.Entities.TestsArrangement TestsArrangement; public Config.Entities.MetersArrangement MetersArrangement; public int NrMetersInOneGroup; public IList currentlyAvailableItems; public IList ReportItems_Single; public IList ReportItems_Compound; bool combined; /// false = single meter items, true = combined meter items Config.Entities.Device device; /// Screen, Printer or Disk bool unlocked; /// true = changes enabled public ResultsConfig(bool combined) { InitializeComponent(); this.combined = combined; device = Config.Entities.Device.Screen; unlocked = false; cancelButton.Visible = false; } void Localize() { Text = Strings.Configuration; groupBox1.Text = Strings.Water_Meter; singleRadioButton.Text = Strings.SingleBtnText; combinedRadioButton.Text = Strings.CombinedBtnText; availableResultsLabel.Text = Strings.Available_results; selectedResultsLabel.Text = Strings.Selected_results; addButton.Text = Strings.Add; removeButton.Text = Strings.Remove; removeAllButton.Text = Strings.Remove_all; unlockButton.Text = Strings.UnlockBtnText; okButton.Text = Strings.CloseBtnText; cancelButton.Text = Strings.CancelBtnText; } void ResultsConfig_Load(object sender, EventArgs e) { Localize(); singleRadioButton.Checked = !combined; combinedRadioButton.Checked = combined; RedrawAvailable(); RedrawSelected(); } /// /// Gets the list of selected items based on watermeter type and device selections /// /// List of selected result items IList GetSelectedItems() { if (combined) { return ReportItems_Compound; } else { return ReportItems_Single; } } /// /// Redraw selected items (right hand side) /// void RedrawAvailable() { availableResultsListBox.Items.Clear(); currentlyAvailableItems = new List(); foreach (var item in Results.ItemSpec.AllItems) { if (!GetSelectedItems().Contains(item) && (combined ? item.CanPrintCombined : item.CanPrintSingle)) { currentlyAvailableItems.Add(item); availableResultsListBox.Items.Add(item.Name); } } } /// /// Redraw selected items (right hand side) /// void RedrawSelected() { selectedResultsListBox.Items.Clear(); foreach (var item in GetSelectedItems()) { selectedResultsListBox.Items.Add(item.Name); } } void unlockButton_Click(object sender, EventArgs e) { if (!unlocked) { //if (!User.CurrentUser.IsMemberOf(RequiredGroupMembership)) //{ // if ((new LoginDlg(RequiredGroupMembership)).ShowDialog() != DialogResult.OK) return; //} unlocked = true; /// /// Unlock user interface controls /// unlockButton.Enabled = false; okButton.Text = Strings.OkBtnText; cancelButton.Visible = true; availableResultsListBox.Enabled = true; selectedResultsListBox.Enabled = true; addButton.Enabled = true; removeButton.Enabled = true; removeAllButton.Enabled = true; } } void okButton_Click(object sender, EventArgs e) { DialogResult = DialogResult.OK; Close(); } void availableResultsListBox_DoubleClick(object sender, EventArgs e) { /// Double click works when just one item is selected IList itemsToRemove = new List(); if (availableResultsListBox.SelectedIndices.Count == 1) { var item = currentlyAvailableItems[availableResultsListBox.SelectedIndices[0]]; GetSelectedItems().Add(item); RedrawAvailable(); RedrawSelected(); } } void addButton_Click(object sender, EventArgs e) { /// Append at the end, this code supports multiple selected items, /// although ListBox control settings may limit the max.number of selected items to one. for (int i = availableResultsListBox.SelectedIndices.Count - 1; i >= 0; i--) { var item = currentlyAvailableItems[availableResultsListBox.SelectedIndices[i]]; GetSelectedItems().Add(item); } RedrawAvailable(); RedrawSelected(); } private void selectedResultsListBox_DoubleClick(object sender, EventArgs e) { /// Double click works when just one item is selected if (selectedResultsListBox.SelectedIndices.Count == 1) { GetSelectedItems().RemoveAt(selectedResultsListBox.SelectedIndices[0]); RedrawAvailable(); RedrawSelected(); } } void removeButton_Click(object sender, EventArgs e) { /// Remove from the list (the last selected item first so that the indexes are not affected) for (int i = selectedResultsListBox.SelectedIndices.Count - 1; i >= 0; i--) { GetSelectedItems().RemoveAt(selectedResultsListBox.SelectedIndices[i]); } RedrawAvailable(); RedrawSelected(); } void removeAllButton_Click(object sender, EventArgs e) { /// Remove all items from 'Selected' list GetSelectedItems().Clear(); RedrawAvailable(); RedrawSelected(); } private void singleRadioButton_CheckedChanged(object sender, EventArgs e) { } private void combinedRadioButton_CheckedChanged(object sender, EventArgs e) { combined = combinedRadioButton.Checked; RedrawAvailable(); RedrawSelected(); } } }