/// /// Copyright (c) 2019-2023 Sensus Slovensko a.s. /// using System; using System.Collections.Generic; using System.Windows.Forms; using log4net; using Common; using Common.Forms; using TBF.Resources; using TBF.UI.Shared; namespace TBF.UI.Bench.TestProfiles { public partial class TestProfilesDlg : Form { static readonly ILog log = LogManager.GetLogger(typeof(TestProfilesDlg)); /// Used when re-scaling the dialog: 100% = 96dpi, 125% = 120dpi, 150% = 144dpi public readonly int Dpi; public NHibernate.ISession Session; public TestProfilesDlg() { /// Detect display setting: 100% = 96dpi, 125% = 120dpi, 150% = 144dpi. Dpi = (int)this.CreateGraphics().DpiX; InitializeComponent(); /// Open a database session try { Session = TBF.DB.ConfigDBSessionFactory.OpenSession(); } catch (Exception e) { MessageBox.Show(Strings.Cannot_connect_to_the_database + Environment.NewLine + e.Message, Strings.Error, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } /// SharedDlgButtons configuration sharedButtons.ParentForm = this; sharedButtons.RequiredGroupMembership = new GID[] { GID.MetrologicalAuthority }; 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.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 += testProfilesCtrl.editButton_Click; sharedButtons.CopyClicked += testProfilesCtrl.copyButton_Click; sharedButtons.ExportClicked += testProfilesCtrl.exportButton_Click; sharedButtons.ImportClicked += testProfilesCtrl.importButton_Click; sharedButtons.CompareClicked += testProfilesCtrl.compareButton_Click; } private void TestProfilesDlg_Load(object sender, EventArgs e) { LoadUISettings(); Text = Strings.Test_profiles; testProfilesCtrl.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(); testProfilesCtrl.Unlock(); } /// /// Called from sharedButtons when user clicks 'Unlock' button an is authorised. /// private void Unlocked(object sender, EventArgs e) { testProfilesCtrl.Unlock(); } /// /// "OK" button and Windows 'x' buttom functions similarly r /// /// /// private void okButton_Click(object sender, EventArgs e) { TestProfilesDlg_FormClosed(sender, null); DialogResult = DialogResult.OK; Close(); } /// /// Windows 'x' buttom functions similarly r /// /// /// private void TestProfilesDlg_FormClosed(object sender, FormClosedEventArgs e) { testProfilesCtrl.OkBtnClicked(); SaveUISettings(); } private void cancelButton_Click(object sender, EventArgs e) { testProfilesCtrl.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) { testProfilesCtrl.AddOne(); } private void removeButton_Click(object sender, EventArgs e) { testProfilesCtrl.RemoveSelected(); } private void upButton_Click(object sender, EventArgs e) { testProfilesCtrl.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; //} testProfilesCtrl.MoveDownSelected(); } private void testProfilesCtrl_MouseDoubleClick(object sender, MouseEventArgs e) { testProfilesCtrl.editButton_Click(sender, e); } /// /// Common part for three xxxListViewEx_SelectedIndexChanged event handlers /// /// void SelectedIndexChanged(object sender, EventArgs e) { 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 sharedButtons.EnableButtons(SharedButtons.Buttons.Remove | SharedButtons.Buttons.Down); sharedButtons.DisableButtons(SharedButtons.Buttons.Up); } else if (listViewEx.SelectedIndices[0] == (listViewEx.Items.Count - 1)) { /// The last of many items selected sharedButtons.EnableButtons(SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up); sharedButtons.DisableButtons(SharedButtons.Buttons.Down); } else { /// One of middle items selected sharedButtons.EnableButtons(SharedButtons.Buttons.Remove | 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); } } private void TestProfilesDlg_FormClosing(object sender, FormClosingEventArgs e) { if (Users.CurrentUser.Restore(this)) Program.MainWnd.UpdateUser(); if (Session != null && Session.IsOpen) Session.Close(); } } }