using System; using System.Windows; using System.Windows.Media; using System.Windows.Threading; using Telerik.Windows.Controls; namespace eDosStation { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { const string className = "MainWindow"; public DataInterface dataInterface; public Station thisStation; DispatcherTimer bgTimer; private bool Offline = true; private App curApp; #if SimulateEPD public SimulateData simulData = new SimulateData(); #endif public MainWindow() { InitializeComponent(); curApp = Application.Current as App; } public void loadsvg() { // var m_imageSource = new SvgImageSource(new Uri("mySvgImage.svg")); } private void bShowDose_Click(object sender, RoutedEventArgs e) { string ers = string.Empty; if (thisStation.RestartCom && thisStation.RestartComFirst ) { thisStation.DeviceRestart(); } var w = new ShowEPDDose(thisStation); w.ShowDialog(); if (thisStation.RestartCom && !thisStation.RestartComFirst ) { thisStation.DeviceRestart(); } thisStation.splunkLog?.WriteSplunkLog(null, "Show Dose done", LSWLib.CLog.iseverity.info); } private void BEntry_Click(object sender, RoutedEventArgs e) { const string module = "BEntry_Click"; string ers = string.Empty; thisStation.splunkLog?.WriteSplunkLog(module, null, LSWLib.CLog.iseverity.info); string step = "DeviceRestart"; try { if (thisStation.RestartCom && thisStation.RestartComFirst) { thisStation.DeviceRestart(); } } catch (System.Exception ex) { thisStation.splunkLog?.WriteException(module, step, ex); } step = "EntryBadge"; try { var w = new EntryBadge(thisStation); w.ShowDialog(); #if SimulateEPD simulData = w.simulData; #endif w = null; } catch (System.Exception ex) { thisStation.splunkLog?.WriteException(module, step, ex); } step = "DeviceReset2"; try { if (thisStation.RestartCom && !thisStation.RestartComFirst) { thisStation.DeviceRestart(); } } catch (System.Exception ex) { thisStation.splunkLog.WriteException(module, step, ex); } thisStation.splunkLog?.WriteSplunkLog(module, "Entry done", LSWLib.CLog.iseverity.info); } private void BExit_Click(object sender, RoutedEventArgs e) { const string module = "BExit_Click"; string ers = string.Empty; thisStation.splunkLog?.WriteSplunkLog(module, null,LSWLib.CLog.iseverity.info); if (thisStation.RestartCom && thisStation.RestartComFirst) { ers = thisStation.DeviceRestart(); } var w = new EpdExit(thisStation); #if SimulateEPD w.simulData = simulData; #endif w.ShowDialog(); w = null; if (thisStation.RestartCom && !thisStation.RestartComFirst) { ers = thisStation.DeviceRestart(); } thisStation.splunkLog?.WriteSplunkLog(module,"Exit Done", LSWLib.CLog.iseverity.info); } private void MenuItem_Click(object sender, RoutedEventArgs e) { const string module = "MenuSettings"; try { var s = new Settings(thisStation); s.ShowDialog(); } catch (System.Exception ex) { thisStation?.splunkLog?.WriteException(className, module, ex); } } private void setLocalStatus() { const string module = "setLocalStatus"; if (!dataInterface.isOnline()) { Status.Content = "*** Offline ***"; if (!Offline) thisStation.splunkLog?.WriteSplunkLog(module, "Went Offline", LSWLib.CLog.iseverity.warning); Offline = true; } else { Status.Content = "--- Online ---"; if (Offline) thisStation.splunkLog?.WriteSplunkLog(module, "Back online", LSWLib.CLog.iseverity.info); Offline = false; } } private void setErrorStatus(string errMsg) { const string module = "setErrorStatus"; thisStation.splunkLog?.WriteSplunkLog(module, null, LSWLib.CLog.iseverity.err, lresultMessage: errMsg); Status.Content = $"*** Error {errMsg} ***"; Status.Foreground = Brushes.Yellow; Status.Background = Brushes.Red; } private void showBadge(int persid) { UserInfo UI = new UserInfo(thisStation, persid); UI.ShowDialog(); thisStation.ReceivedPersid = Pelatec_DataReceived; } private void Pelatec_DataReceived(int PersID) { this.Dispatcher.InvokeAsync(new Action(() => showBadge(PersID)), DispatcherPriority.Background); } private void Window_Loaded(object sender, RoutedEventArgs e) { bool ok = true; string errMsg = string.Empty; tVersion.Text = "HPH eDos " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; bgTimer = new DispatcherTimer(DispatcherPriority.Background); bgTimer.Interval = TimeSpan.FromSeconds(60); bgTimer.Tick += BgTimer_Tick; bgTimer.IsEnabled = true; try { dataInterface = new DataInterface(curApp.splunkLog); thisStation = new Station(dataInterface, string.Empty, curApp, curApp.splunkLog); //dataInterface.splunkLog = thisStation.splunkLog; } catch (System.Exception ex) { curApp.splunkLog?.WriteException(className, "Window_Loaded", ex); errMsg = $"Startup error {ex.Message} "; MessageBox.Show(errMsg); ok = false; //dataInterface.stationLog?.WriteLine($"Window_Loaded {ex.Message}"); } if (ok && thisStation.Error > 0) { errMsg = $"Startup error {thisStation.ErrorMessage} "; MessageBox.Show(errMsg); ok = false; } if (ok) { if (thisStation.insComments.Length > 2) { InstMessage w = new InstMessage(thisStation.tbComments); w.ShowDialog(); ibComment.Child = thisStation.tbComments; ibComment.Visibility = Visibility.Visible; } else ibComment.Visibility = Visibility.Collapsed; } else setErrorStatus(errMsg); TruDose.Content = $"TruDose: {thisStation.sComPort}"; BadgeReader.Content = thisStation.ReaderName; BgTimer_Tick(null, null); bgTimer.Start(); if (thisStation.isElatec) { thisStation.ReceivedPersid = Pelatec_DataReceived; } else { DisableUserInfo(); } } private void DisableUserInfo() { bInfo.Visibility = Visibility.Collapsed; MenuGrid.ColumnDefinitions[0].Width = new GridLength(0); } private void BgTimer_Tick(object sender, EventArgs e) { setLocalStatus(); tbTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm"); } private void MEnc_Click(object sender, RoutedEventArgs e) { //string cfg = System.IO.Path.Combine(Environment.CurrentDirectory, System.AppDomain.CurrentDomain.FriendlyName ); //Config.ToggleConfigEncryption(cfg); } private void Window_GotFocus(object sender, RoutedEventArgs e) { bgTimer.Start(); } private void Window_LostFocus(object sender, RoutedEventArgs e) { bgTimer.Stop(); } private void mAbout_Click(object sender, RoutedEventArgs e) { About x = new About(thisStation); x.ShowDialog(); } private void mExit_Click(object sender, RoutedEventArgs e) { bgTimer?.Stop(); dataInterface.stationLog?.Close(); //thisStation.splunkLog.KvClear(); //thisStation.splunkLog?.CloseSplunkLog(); //Application.Current.Shutdown(); //try //{ // Environment.Exit(0); //} //catch { } Close(); } private void mReverseSync_Click(object sender, RoutedEventArgs e) { bool ok = dataInterface.ReverseSync(); if (ok) MessageBox.Show("Success", null, MessageBoxButton.OK, MessageBoxImage.Information); else MessageBox.Show("Fout", null, MessageBoxButton.OK, MessageBoxImage.Error); } private void bInfo_Click(object sender, RoutedEventArgs e) { UserInfo ui = new UserInfo(thisStation, 0); ui.ShowDialog(); thisStation.ReceivedPersid = Pelatec_DataReceived; } } }