private void SetCurrentDatabase(PogsDatabase pogsDatabase) { if (pogsDatabase != null) { using (var ls = new LockScreen(pogsDatabase)) { if (ls.ShowDialog() != DialogResult.OK) { return; } } } if (this.CurrentDatabase != null) { this.CurrentDatabase.ConnectionUnexpectedlyClosed -= new EventHandler(CurrentDatabase_ConnectionUnexpectedlyClosed); this.CurrentDatabase.ClientsAdded -= new EventHandler<ClientRecordEventArgs>(CurrentDatabase_ClientsAdded); this.CurrentDatabase.ClientsRemoved -= new EventHandler<ClientRecordEventArgs>(CurrentDatabase_ClientsRemoved); this.CurrentDatabase.Dispose(); } this.CurrentDatabase = pogsDatabase; if (this.CurrentDatabase == null) { this.Text = "Pogs"; _clients = null; clientListBindingSource.DataSource = typeof(ClientRecord); addClientButton.Enabled = false; newClientToolStripMenuItem.Enabled = false; changePINToolStripMenuItem.Enabled = false; } else { this.Text = String.Format("Pogs - [{0} on {1}]", pogsDatabase.DatabaseName, pogsDatabase.ServerName); this.CurrentDatabase.Refresh(this.CurrentDatabase.DefaultSecurity); this.CurrentDatabase.RefreshClientList(); //set up the initial client list _clients = new SortableBindingList<ClientRecord>(); foreach (var client in this.CurrentDatabase.Clients) _clients.Add(client); clientListBindingSource.DataSource = _clients; //listen for future changes this.CurrentDatabase.ConnectionUnexpectedlyClosed += new EventHandler(CurrentDatabase_ConnectionUnexpectedlyClosed); this.CurrentDatabase.ClientsAdded += new EventHandler<ClientRecordEventArgs>(CurrentDatabase_ClientsAdded); this.CurrentDatabase.ClientsRemoved += new EventHandler<ClientRecordEventArgs>(CurrentDatabase_ClientsRemoved); //set up the UI addClientButton.Enabled = this.CurrentDatabase.CurrentUser.IsAdmin; newClientToolStripMenuItem.Enabled = true; changePINToolStripMenuItem.Enabled = true; } }
private void LockPogs() { //stop monitoring the system lock state while the lock screen is shown Microsoft.Win32.SystemEvents.SessionSwitch -= SystemEvents_SessionSwitch; this.Hide(); using (var ls = new LockScreen(this.CurrentDatabase)) { if (ls.ShowDialog() != DialogResult.OK) { Application.Exit(); } else { this.Show(); } } Microsoft.Win32.SystemEvents.SessionSwitch += SystemEvents_SessionSwitch; }