using System; using System.Collections.Generic; using System.Threading; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using ProductionUiCordonelLegacy.Model; namespace ProductionUiCordonelLegacy { /// /// Interaktionslogik für MultiMode.xaml /// public partial class MultiMode : Window { //#region Raw Input API //[DllImport("User32.dll")] //extern static uint GetRawInputDeviceList(IntPtr pRawInputDeviceList, ref uint uiNumDevices, uint cbSize); //[DllImport("User32.dll")] //extern static uint GetRawInputDeviceInfo(IntPtr hDevice, uint uiCommand, IntPtr pData, ref uint pcbSize); //[DllImport("User32.dll")] //extern static bool RegisterRawInputDevices(RAWINPUTDEVICE[] pRawInputDevice, uint uiNumDevices, uint cbSize); //[DllImport("User32.dll")] //extern static uint GetRawInputData(IntPtr hRawInput, uint uiCommand, IntPtr pData, ref uint pcbSize, uint cbSizeHeader); //#endregion MultiModeMasterViewModel multiModeMasterViewModel = new MultiModeMasterViewModel(); private List Childs = new List(); public ApplicationSettings AppSettings { get; private set; } //class RawInputDevice : InputDevice //{ // public override IInputElement Target => throw new NotImplementedException(); // public override PresentationSource ActiveSource => throw new NotImplementedException(); //} public MultiMode() { DataContext = multiModeMasterViewModel; InitializeComponent(); Topmost = false; } private void keyUp(Object sender, KeyEventArgs e) { } public void SetBaseFocus() { //foreach (var item in Childs) //{ // item.Key.Activate(); //} //this.Activate(); //txtBarcodeInput.Focus(); } private MultiModeChild addChild(IMultiModeChildViewModel model) { var a = new MultiModeChild(model); a.Show(); return a; } CancellationTokenSource cts; private void Window_Loaded(Object sender, RoutedEventArgs e) { cts = new CancellationTokenSource(); AppSettings = new ApplicationSettings("MultiProductionUiConfig.json"); multiModeMasterViewModel.StartPicking(cts); //var trigger = new List(); //if (AppSettings.ChildForms == null || !AppSettings.ChildForms.Any()) //{ // AppSettings.ChildForms = new List(); // AppSettings.ChildForms.Add(new ApplicationSettings.MultiFormChilds() { Name = "Picking", Slot = 1, ViewModelType = typeof(PickingMultiModeViewModel), StartPos = null, Visisble = true, TextPort = "COM11" }); // AppSettings.ChildForms.Add(new ApplicationSettings.MultiFormChilds() { Name = "PressureHE", Slot = 3, ViewModelType = typeof(PressureMultiModeViewModel), StartPos = null, Visisble = true, TextPort = null }); // AppSettings.ChildForms.Add(new ApplicationSettings.MultiFormChilds() { Name = "PressureHY", Slot = 1, ViewModelType = typeof(PressureMultiModeViewModel), StartPos = null, Visisble = true, TextPort = null }); // AppSettings.ChildForms.Add(new ApplicationSettings.MultiFormChilds() { Name = "Marriage", Slot = 4, ViewModelType = typeof(MarriageMultiModeViewModel), StartPos = null, Visisble = true, TextPort = "COM1" }); // AppSettings.Update("MultiProductionUiConfig.json"); //} ////AppSettings.ChildForms.ForEach(c => trigger.Add(c.TextPort.ToString())); //cts = new CancellationTokenSource(); //foreach (var item in AppSettings.ChildForms) //{ // if (item.Visisble) // { // IMultiModeChildViewModel mdl = null; // if (item.ViewModelType == typeof(PickingMultiModeViewModel)) // { // mdl = new PickingMultiModeViewModel(item.Name, item.Slot, trigger, AppSettings.StationId); // } // else if (item.ViewModelType == typeof(PressureMultiModeViewModel)) // { // mdl = new PressureMultiModeViewModel(item.Name, item.Slot, trigger, AppSettings.StationId); // } // else if (item.ViewModelType == typeof(MarriageMultiModeViewModel)) // { // mdl = new MarriageMultiModeViewModel(item.Name, item.Slot, trigger, AppSettings.StationId); // } // if (mdl == null) // { // throw new ApplicationException("Bad configuration or old software"); // } // var child = addChild(mdl); // child.StartTextInputListener(item.TextPort, cts.Token); // if (item.StartPos != null) // { // child.WindowStartupLocation = WindowStartupLocation.Manual; // child.Top = item.StartPos.Top; // child.Left = item.StartPos.Left; // child.Height = item.StartPos.Height; // child.Width = item.StartPos.Width; // child.UseDefaultPos = false; // } // child.PosChanged += delegate (object val, EventArgs a) // { // if (val is MultiModeChild mmc) // { // if (mmc.ViewModel is BaseMultiModeChildViewModel baseChild) // { // var aasd = AppSettings.ChildForms.FirstOrDefault(c => c.Name == baseChild.ChildName); // aasd.StartPos = new ApplicationSettings.Pos() { Height = mmc.Height, Left = mmc.Left, Top = mmc.Top, Width = mmc.Width }; // AppSettings.Update("MultiProductionUiConfig.json"); // } // } // }; // child.Show(); // Childs.Add(child); // } //} //SetBaseFocus(); } private void delegeChild_PosChange(Object sender, EventArgs e) { throw new NotImplementedException(); } private void TxtBarcodeInput_TextChanged(Object sender, TextChangedEventArgs e) { //if (sender is TextBox text) //{ // if (text.Text.ToLower().Contains("clear")) // { // text.Text = string.Empty; // } // else if (text.Text.Contains(System.Environment.NewLine)) // { // foreach (var dispatchChild in Childs.Where(x => x.Value == text.Text[0])) // { // dispatchChild.Key.InputText(text.Text.Substring(1, text.Text.Length - 1).Trim()); // } // text.Text = ""; // SetBaseFocus(); // } //} } private void Window_Closed(Object sender, EventArgs e) { cts.Cancel(); foreach (var item in Childs) { item.Dispose(); item.Close(); } } } }