/// /// Copyright (c) 2013-2020 Sensus Slovensko a.s. /// using System; using System.Windows.Forms; using log4net; using Common; using Common.Forms; using TBF.Resources; using TBF.UI.Shared; namespace TBF.UI.Procedures { public partial class ProceduresDlg : Form { static readonly ILog log = LogManager.GetLogger(typeof(ProceduresDlg)); /// Used when re-scaling the dialog: 100% = 96dpi, 125% = 120dpi, 150% = 144dpi public readonly int Dpi; public ProceduresDlg() { /// Detect display setting: 100% = 96dpi, 125% = 120dpi, 150% = 144dpi. Dpi = (int)this.CreateGraphics().DpiX; InitializeComponent(); /// SharedDlgButtons configuration sharedButtons.RequiredGroupMembership = new GID[] { GID.TestingSpecialists, GID.Metrologists }; #if TEST_PROFILES sharedButtons.OptionalButtons = SharedButtons.Buttons.Add | SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up | SharedButtons.Buttons.Down | SharedButtons.Buttons.Edit | SharedButtons.Buttons.Copy | SharedButtons.Buttons.Export | SharedButtons.Buttons.Import | SharedButtons.Buttons.Compare |SharedButtons.Buttons.Custom1; sharedButtons.Custom1Caption = string.Format("Create from{0}test profiles", Environment.NewLine); sharedButtons.Custom1Clicked += custom1Button_Click; #else sharedButtons.OptionalButtons = SharedButtons.Buttons.Add | SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up | SharedButtons.Buttons.Down | SharedButtons.Buttons.Edit | SharedButtons.Buttons.Copy | SharedButtons.Buttons.Export | SharedButtons.Buttons.Import | SharedButtons.Buttons.Compare; #endif sharedButtons.Unlocked += Unlocked; sharedButtons.OKClicked += okButton_Click; sharedButtons.CancelClicked += cancelButton_Click; sharedButtons.AddClicked += addButton_Click; sharedButtons.RemoveClicked += removeButton_Click; sharedButtons.UpClicked += upButton_Click; sharedButtons.DownClicked += downButton_Click; sharedButtons.EditClicked += proceduresCtrl.editButton_Click; sharedButtons.CopyClicked += proceduresCtrl.copyButton_Click; sharedButtons.ExportClicked += proceduresCtrl.exportButton_Click; sharedButtons.ImportClicked += proceduresCtrl.importButton_Click; sharedButtons.CompareClicked += proceduresCtrl.compareButton_Click; } private void ProceduresDlg_Load(object sender, EventArgs e) { LoadUISettings(); Text = Strings.Procedures; proceduresCtrl.Initialize(this, splitContainer.Panel1); } /// /// Called from ProceduresCtrl when item editing is completed with OK. /// Authorisation occurs in the editted ProcedureDlg dialog. /// public void Unlock() { sharedButtons.UnlockButtons(); proceduresCtrl.Unlock(); } /// /// Called from sharedButtons when user clicks 'Unlock' button an is authorised. /// private void Unlocked(object sender, EventArgs e) { proceduresCtrl.Unlock(); } /// /// "OK" button and Windows 'x' buttom functions similarly r /// /// /// private void okButton_Click(object sender, EventArgs e) { ProceduresDlg_FormClosed(sender, null); DialogResult = DialogResult.OK; Close(); } /// /// Windows 'x' buttom functions similarly r /// /// /// private void ProceduresDlg_FormClosed(object sender, FormClosedEventArgs e) { proceduresCtrl.OkBtnClicked(); SaveUISettings(); } private void cancelButton_Click(object sender, EventArgs e) { proceduresCtrl.CancelBtnClicked(); SaveUISettings(); DialogResult = DialogResult.Cancel; Close(); } private void SaveUISettings() { /// Obtain ProceduresDlg dimensions, etc. bool isMaximized = (WindowState == FormWindowState.Maximized); int left = (WindowState == FormWindowState.Normal) ? Location.X : RestoreBounds.Left; int top = (WindowState == FormWindowState.Normal) ? Location.Y : RestoreBounds.Top; int width = (WindowState == FormWindowState.Normal) ? Size.Width : RestoreBounds.Width; int height = (WindowState == FormWindowState.Normal) ? Size.Height : RestoreBounds.Height; LocalSettings ls = Program.LocalSettings; if (ls != null && (ls.ProceduresDlgMaximized != isMaximized || ls.ProceduresDlgLeft != left || ls.ProceduresDlgTop != top || ls.ProceduresDlgWidth != width || ls.ProceduresDlgHeight != height)) { /// At least one ProceduresDlg dimension differs => Update local settings and save them ls.ProceduresDlgMaximized = isMaximized; ls.ProceduresDlgLeft = left; ls.ProceduresDlgTop = top; ls.ProceduresDlgWidth = width; ls.ProceduresDlgHeight = height; ls.Save(); } } private void LoadUISettings() { TBF.LocalSettings ls = Program.LocalSettings; WindowState = (ls.ProceduresDlgMaximized ? FormWindowState.Maximized : FormWindowState.Normal); Width = (ls.ProceduresDlgWidth > 0) ? ls.ProceduresDlgWidth : 600; Height = (ls.ProceduresDlgHeight > 0) ? ls.ProceduresDlgHeight : 500; Left = (ls.ProceduresDlgLeft != 0) ? ls.ProceduresDlgLeft : 200; Top = (ls.ProceduresDlgTop != 0) ? ls.ProceduresDlgTop : 100; } private void addButton_Click(object sender, EventArgs e) { proceduresCtrl.AddOne(); } private void removeButton_Click(object sender, EventArgs e) { proceduresCtrl.RemoveSelected(); } private void upButton_Click(object sender, EventArgs e) { proceduresCtrl.MoveUpSelected(); } private void downButton_Click(object sender, EventArgs e) { //if (DialogResult.Yes == MessageBox.Show("Chcete naplnit 'Publish' a 'Evaluate' vsetkych testov?", "Otazka", MessageBoxButtons.YesNo, MessageBoxIcon.Question)) //{ // UpgradeAllTests(); // return; //} proceduresCtrl.MoveDownSelected(); } private void custom1Button_Click(object sender, EventArgs e) { proceduresCtrl.CreateFromProfile(); } /// /// Common part for three xxxListViewEx_SelectedIndexChanged event handlers /// /// public void SelectedIndexChanged(ListView sender, bool isFilterAny) { var listViewEx = sender as ListViewEx; if (listViewEx.SelectedItems.Count != 1) { /// No item selected sharedButtons.DisableButtons(SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up | SharedButtons.Buttons.Down); } else if (listViewEx.Items.Count == 1) { /// One (the first and the last) item selected sharedButtons.EnableButtons(SharedButtons.Buttons.Remove); sharedButtons.DisableButtons(SharedButtons.Buttons.Up | SharedButtons.Buttons.Down); } else if (listViewEx.SelectedIndices[0] == 0) { /// The first of many items selected if (isFilterAny) { sharedButtons.EnableButtons(SharedButtons.Buttons.Remove | SharedButtons.Buttons.Down); sharedButtons.DisableButtons(SharedButtons.Buttons.Up); } else { sharedButtons.EnableButtons(SharedButtons.Buttons.Remove); sharedButtons.DisableButtons(SharedButtons.Buttons.Up | SharedButtons.Buttons.Down); } } else if (listViewEx.SelectedIndices[0] == (listViewEx.Items.Count - 1)) { /// The last of many items selected if (isFilterAny) { sharedButtons.EnableButtons(SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up); sharedButtons.DisableButtons(SharedButtons.Buttons.Down); } else { sharedButtons.EnableButtons(SharedButtons.Buttons.Remove); sharedButtons.DisableButtons(SharedButtons.Buttons.Up | SharedButtons.Buttons.Down); } } else { /// One of middle items selected if (isFilterAny) { sharedButtons.EnableButtons(SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up | SharedButtons.Buttons.Down); } else { sharedButtons.EnableButtons(SharedButtons.Buttons.Remove); sharedButtons.DisableButtons(SharedButtons.Buttons.Up | SharedButtons.Buttons.Down); } } } public void UpdateButtonStates(SharedButtons.SelectedItemPos selectedItemPos) { if (selectedItemPos == SharedButtons.SelectedItemPos.None) { sharedButtons.DisableButtons(SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up | SharedButtons.Buttons.Down); } } } }