From a0cfa9c0c6d34a520ce723f5ba9bb010cd1bc7e1 Mon Sep 17 00:00:00 2001 From: LeapwardKoex Date: Sat, 9 Nov 2024 11:24:09 +1300 Subject: [PATCH] Automatically hide main settings window when sensor is repositioned. --- MaiTouchComConnector.cs | 2 +- MainWindow.xaml.cs | 14 ++++++-------- TouchPanel.xaml.cs | 8 ++++++++ 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/MaiTouchComConnector.cs b/MaiTouchComConnector.cs index 46590ed..f3805fd 100644 --- a/MaiTouchComConnector.cs +++ b/MaiTouchComConnector.cs @@ -34,7 +34,7 @@ internal class MaiTouchComConnector(MaiTouchSensorButtonStateManager buttonState internal set; } - public async Task StartTouchSensorPolling() + public void StartTouchSensorPolling() { if (!_connected && _shouldReconnect) { diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index cc304a8..37a337e 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -68,8 +68,8 @@ public partial class MainWindow : Window _touchPanel = new TouchPanel(); _touchPanel.onTouch = (value) => { buttonState.PressButton(value); }; _touchPanel.onRelease = (value) => { buttonState.ReleaseButton(value); }; + _touchPanel.onInitialReposition = () => { WindowState = WindowState.Minimized; }; _touchPanel.Show(); - _touchPanel.Owner = this; var dataContext = (MainWindowViewModel)DataContext; _touchPanel.DataContext = dataContext; @@ -90,12 +90,10 @@ public partial class MainWindow : Window { e.Cancel = true; await connector.Disconnect(); - foreach (Window childWindow in OwnedWindows) - { - childWindow.Close(); - } + _touchPanel.Close(); Closing -= MainWindow_Closing; e.Cancel = false; + Application.Current.Shutdown(); } private async void ExitWithSinmaiLoop() @@ -168,16 +166,16 @@ public partial class MainWindow : Window { if (dataContext.IsAutomaticPortConnectingEnabled) { - await connector.StartTouchSensorPolling(); + connector.StartTouchSensorPolling(); } await Task.Delay(1000); } } - private async void ConnectToPortButton_Click(object sender, RoutedEventArgs e) + private void ConnectToPortButton_Click(object sender, RoutedEventArgs e) { - await connector.StartTouchSensorPolling(); + connector.StartTouchSensorPolling(); } private void debugMode_Click(object sender, RoutedEventArgs e) diff --git a/TouchPanel.xaml.cs b/TouchPanel.xaml.cs index 477ed51..e4fdcdd 100644 --- a/TouchPanel.xaml.cs +++ b/TouchPanel.xaml.cs @@ -12,12 +12,14 @@ public partial class TouchPanel : Window { internal Action? onTouch; internal Action? onRelease; + internal Action? onInitialReposition; private readonly Dictionary activeTouches = []; private readonly TouchPanelPositionManager _positionManager; private List buttons = []; private bool isDebugEnabled = Properties.Settings.Default.IsDebugEnabled; private bool isRingButtonEmulationEnabled = Properties.Settings.Default.IsRingButtonEmulationEnabled; + private bool hasRepositioned = false; private enum ResizeDirection { @@ -75,6 +77,12 @@ public partial class TouchPanel : Window Left = position.Value.Left; Width = position.Value.Width; Height = position.Value.Height; + + if (!hasRepositioned) + { + hasRepositioned = true; + onInitialReposition?.Invoke(); + } } }