Refactor code structure for improved readability and maintainability
This commit is contained in:
698
DaireApplication/Views/UserController/Software.axaml.cs
Normal file
698
DaireApplication/Views/UserController/Software.axaml.cs
Normal file
@@ -0,0 +1,698 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Controls.ApplicationLifetimes;
|
||||
using Avalonia.Input;
|
||||
using Avalonia.Interactivity;
|
||||
using Avalonia.LogicalTree;
|
||||
using Avalonia.Markup.Xaml;
|
||||
using Avalonia.Media;
|
||||
using Avalonia.Threading;
|
||||
using AvaloniaApplication1.DataBase;
|
||||
using DaireApplication.DataBase;
|
||||
using DaireApplication.ViewModels;
|
||||
using DaireApplication.Views;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.IO.Ports;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using System.Reflection.Emit;
|
||||
using System.Reflection.PortableExecutable;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DaireApplication;
|
||||
|
||||
public partial class Software : UserControl
|
||||
{
|
||||
private MainWindow? _mainWindow;
|
||||
public UserTable _user = new();
|
||||
public ScreeenTable _screeen = new();
|
||||
private Process? _keyboardProcess;
|
||||
private bool _isWindowLoaded = false;
|
||||
TextBox targetText = new TextBox();
|
||||
int oldValue = 0;
|
||||
bool _isAdvSetting;
|
||||
bool _isFromManualControl;
|
||||
|
||||
public event PropertyChangedEventHandler? PropertyChanged;
|
||||
|
||||
private void RaisePropertyChanged([CallerMemberName] string? name = null) =>
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
|
||||
|
||||
public ObservableCollection<string> SerialPorts { get; } = new() { "Choose COM" };
|
||||
|
||||
private string? _selectedPort;
|
||||
public string? SelectedPort
|
||||
{
|
||||
get => _selectedPort;
|
||||
set
|
||||
{
|
||||
if (_selectedPort != value)
|
||||
{
|
||||
_selectedPort = value;
|
||||
RaisePropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
public Software(MainWindow mainWindow,bool isAdvSetting=false, bool isFromManualControl=false)
|
||||
{
|
||||
_mainWindow = mainWindow;
|
||||
_isAdvSetting = isAdvSetting;
|
||||
_isFromManualControl = isFromManualControl;
|
||||
foreach (var port in SerialPort.GetPortNames())
|
||||
{
|
||||
SerialPorts.Add(port);
|
||||
}
|
||||
var screen = _screeen.ReadScreens()[0];
|
||||
|
||||
InitializeComponent();
|
||||
this.Loaded += OnWindowLoaded;
|
||||
if (SerialPorts.Count - 1 > 0)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(screen.port))
|
||||
{
|
||||
SerialPorts[0] = "Close Comunication";
|
||||
SelectedPort = screen.port;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
SerialPorts[0] = "Choose COM";
|
||||
|
||||
SelectedPort = SerialPorts[0];
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
SelectedPort = SerialPorts[0];
|
||||
DataContext = this;
|
||||
|
||||
setDefaultSettings();
|
||||
showDefaultValues();
|
||||
sendingTimetxt.AddHandler(TextInputEvent, OnTextInput, RoutingStrategies.Tunnel);
|
||||
warningLimit.AddHandler(TextInputEvent, OnTextInput, RoutingStrategies.Tunnel);
|
||||
errorLimit.AddHandler(TextInputEvent, OnTextInput, RoutingStrategies.Tunnel);
|
||||
passwordBorder.AddHandler(InputElement.PointerPressedEvent, OnTextBoxFocused, RoutingStrategies.Tunnel, handledEventsToo: true);
|
||||
warningBorder.AddHandler(InputElement.PointerPressedEvent, OnTextBoxFocused, RoutingStrategies.Tunnel, handledEventsToo: true);
|
||||
errorBorder.AddHandler(InputElement.PointerPressedEvent, OnTextBoxFocused, RoutingStrategies.Tunnel, handledEventsToo: true);
|
||||
AttachHandlers(_mainWindow.logoBtn, AdvanceSettingsView);
|
||||
AttachHandlers(_mainWindow.UserName, CloseApplication);
|
||||
|
||||
}
|
||||
public void AttachHandlers(Button button, System.EventHandler<Avalonia.Input.HoldingRoutedEventArgs> func)
|
||||
{
|
||||
if (button != null)
|
||||
{
|
||||
button.Holding += func;
|
||||
|
||||
button.PointerPressed += (sender, e) =>
|
||||
{
|
||||
// Simulate a long press on any pointer (mouse or touch)
|
||||
var point = e.GetPosition(button);
|
||||
func(sender, new HoldingRoutedEventArgs(HoldingState.Started, point, e.Pointer.Type));
|
||||
};
|
||||
|
||||
button.PointerReleased += (sender, e) =>
|
||||
{
|
||||
// End simulated long press
|
||||
var point = e.GetPosition(button);
|
||||
func(sender, new HoldingRoutedEventArgs(HoldingState.Completed, point, e.Pointer.Type));
|
||||
};
|
||||
}
|
||||
}
|
||||
public Software()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
}
|
||||
public void AdvanceSettingsView(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
if (_mainWindow.ContentArea.Content == this)
|
||||
{
|
||||
_mainWindow.ContentArea.Content = new AdvanceSettings(_mainWindow,false,true);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
public static void CloseApplication(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
var lifetime = Application.Current?.ApplicationLifetime as IClassicDesktopStyleApplicationLifetime;
|
||||
lifetime?.Shutdown(); // This should correctly shut down the application
|
||||
}
|
||||
private void OnWindowLoaded(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
_isWindowLoaded = true;
|
||||
}
|
||||
private void OnTextInput(object? sender, TextInputEventArgs e)
|
||||
{
|
||||
if (sender is TextBox textBox)
|
||||
{
|
||||
string newText = textBox.Text + e.Text;
|
||||
if (!Regex.IsMatch(newText, @"^\d*\.?\d*$"))
|
||||
{
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void hidePasswordPopUp(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
passwordInput.Text = "";
|
||||
CloseKeyboard();
|
||||
passwordPopupOverlay.IsVisible = false;
|
||||
}
|
||||
private async void passwordSaveClick(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
var user = _user.ReadUsers().FirstOrDefault(x=>x.UserName.ToLower()==titelMsg.Tag.ToString().ToLower());
|
||||
user.Password = passwordInput.Text;
|
||||
user.IsActive = isActivePass.IsChecked.Value;
|
||||
if (_user.UpdateUser(user))
|
||||
{
|
||||
//await MainWindow.MessageBox.Show(_mainWindow, "Password Changed Sucseccfully", "Sucsecc");
|
||||
passwordInput.Text = "";
|
||||
CloseKeyboard();
|
||||
|
||||
passwordPopupOverlay.IsVisible = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_keyboardProcess != null)
|
||||
{
|
||||
_keyboardProcess.Kill();
|
||||
}
|
||||
await MainWindow.MessageBox.Show(_mainWindow, "Password Does Not Changed Try Again", "Error");
|
||||
_mainWindow.Topmost = false;
|
||||
}
|
||||
|
||||
}
|
||||
private void showChangePasswordPopUp(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is Button button)
|
||||
{
|
||||
var text = button.Content as TextBlock;
|
||||
titelMsg.Text = $"New {text.Text} Password:";
|
||||
titelMsg.Tag = text.Text;
|
||||
var user = _user.ReadUsers().FirstOrDefault(x => x.UserName.ToLower() == titelMsg.Tag.ToString().ToLower());
|
||||
isActivePass.IsVisible = true;
|
||||
isActivePass.IsChecked = user.IsActive;
|
||||
passwordPopupOverlay.IsVisible = true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void hideScreenPopUp(object sender, RoutedEventArgs e)
|
||||
{
|
||||
slider.Value = 0;
|
||||
secreenPopupOverlay.IsVisible = false;
|
||||
}
|
||||
private async void screenSaveClick(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
var screenData = _screeen.ReadScreens()?[0];
|
||||
string brightnessPath = "/sys/class/backlight/backlight/brightness"; // Try backlight1 if this fails
|
||||
|
||||
if (titelSecreenMsg.Tag.ToString()== "BRIGHTNESS")
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!string.IsNullOrEmpty(sliderValue.Text))
|
||||
{
|
||||
int brightnessValue = (int)(Int32.Parse(sliderValue.Text) / 100.0 * 255);
|
||||
screenData.brightness = Int32.Parse(sliderValue.Text);
|
||||
_screeen.UpdateScreen(screenData);
|
||||
File.WriteAllText(brightnessPath, brightnessValue.ToString());
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("Error: " + ex.Message);
|
||||
}
|
||||
}
|
||||
else if (titelSecreenMsg.Tag.ToString() == "AUTO DIM")
|
||||
{
|
||||
if (!string.IsNullOrEmpty(sliderValue.Text))
|
||||
{
|
||||
if ((screenData?.offSec / 60.0) < float.Parse(sliderValue.Text))
|
||||
{
|
||||
if (_keyboardProcess != null)
|
||||
{
|
||||
_keyboardProcess.Kill();
|
||||
}
|
||||
await MainWindow.MessageBox.Show(_mainWindow, "AutoOff Value must be greater than AutoDim Value", "Error");
|
||||
_mainWindow.Topmost = false;
|
||||
return;
|
||||
}
|
||||
screenData.dimSec = float.Parse(sliderValue.Text) * 60;
|
||||
|
||||
_screeen.UpdateScreen(screenData);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else if (titelSecreenMsg.Tag.ToString() == "AUTO OFF")
|
||||
{
|
||||
if (!string.IsNullOrEmpty(sliderValue.Text))
|
||||
{
|
||||
if ((screenData?.dimSec / 60.0)> float.Parse(sliderValue.Text))
|
||||
{
|
||||
if (_keyboardProcess != null)
|
||||
{
|
||||
_keyboardProcess.Kill();
|
||||
}
|
||||
await MainWindow.MessageBox.Show(_mainWindow, "AutoOff Value must be greater than AutoDim Value", "Error");
|
||||
_mainWindow.Topmost = false;
|
||||
|
||||
return;
|
||||
}
|
||||
screenData.offSec = float.Parse(sliderValue.Text) * 60;
|
||||
|
||||
_screeen.UpdateScreen(screenData);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
showDefaultValues();
|
||||
secreenPopupOverlay.IsVisible = false;
|
||||
|
||||
|
||||
}
|
||||
private void InnerPopupPointerPressed(object? sender, PointerPressedEventArgs e)
|
||||
{
|
||||
e.Handled = true;
|
||||
}
|
||||
private void showScreenPopUp(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is Button button)
|
||||
{
|
||||
var screenData = _screeen.ReadScreens()?[0];
|
||||
|
||||
if (button.Tag.ToString() == "BRIGHTNESS")
|
||||
{
|
||||
slider.Maximum = 100;
|
||||
titelSecreenMsg.Text = $"Enter {button.Tag} percentage:";
|
||||
titelSecreenMsg.Tag = button.Tag;
|
||||
slider.Value = screenData.brightness;
|
||||
secreenPopupOverlay.IsVisible = true;
|
||||
}
|
||||
if (button.Tag.ToString() == "AUTO DIM")
|
||||
{
|
||||
slider.Maximum = 120;
|
||||
|
||||
titelSecreenMsg.Text = $"Enter {button.Tag} value in min:";
|
||||
titelSecreenMsg.Tag = button.Tag;
|
||||
slider.Value = screenData.dimSec / 60;
|
||||
|
||||
secreenPopupOverlay.IsVisible = true;
|
||||
}
|
||||
if (button.Tag.ToString() == "AUTO OFF")
|
||||
{
|
||||
slider.Maximum = 120;
|
||||
|
||||
titelSecreenMsg.Text = $"Enter {button.Tag} value in min:";
|
||||
titelSecreenMsg.Tag = button.Tag;
|
||||
slider.Value = screenData.offSec / 60;
|
||||
|
||||
secreenPopupOverlay.IsVisible = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
private void OnSliderValueChanged(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is Slider slider)
|
||||
{
|
||||
var parent = slider.Parent as StackPanel;
|
||||
var targetText = parent.Children[1] as TextBlock;
|
||||
|
||||
targetText.Text= slider.Value.ToString();
|
||||
//sliderValue.Text= slider.Value.ToString();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
private void changeValueClick(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is Button button)
|
||||
{
|
||||
var parent = button.Parent as StackPanel;
|
||||
var slider = parent.Children[1] as Slider;
|
||||
var grandParent = parent.Parent as StackPanel;
|
||||
var stack = grandParent.Children[0] as StackPanel;
|
||||
var targetText = stack.Children[1] as TextBlock;
|
||||
targetText.Text = slider.Value.ToString();
|
||||
if (button.Content=="+") // +
|
||||
{
|
||||
slider.Value = Int32.Parse(targetText.Text) + 1;
|
||||
|
||||
}
|
||||
else // -
|
||||
{
|
||||
if (Int32.Parse(targetText.Text)>0)
|
||||
{
|
||||
slider.Value = Int32.Parse(targetText.Text) - 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
private void OnComSliderValueChanged(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is Slider slider)
|
||||
{
|
||||
var parent = slider.Parent.Parent as StackPanel;
|
||||
var stack = parent.Children[0] as StackPanel;
|
||||
var targetText = stack.Children[1] as TextBlock;
|
||||
targetText.Text= slider.Value.ToString();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
private void hideComPopUp(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//comSlider.Value = 0;
|
||||
comPopupOverlay.IsVisible = false;
|
||||
}
|
||||
private void hideTempPopUp(object sender, RoutedEventArgs e)
|
||||
{
|
||||
tempPopupOverlay.IsVisible = false;
|
||||
}
|
||||
private async void comSaveClick(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
var screen = _screeen.ReadScreens()[0];
|
||||
var boundRateItem = boundRateComboBox.SelectedItem as ComboBoxItem;
|
||||
screen.boundRate = Int32.Parse(boundRateItem.Content.ToString());
|
||||
var stopbitsItem = stopBitsComboBox.SelectedItem as ComboBoxItem;
|
||||
screen.stopBits = Int32.Parse(stopbitsItem.Tag.ToString());
|
||||
var parityItem = parityComboBox.SelectedItem as ComboBoxItem;
|
||||
screen.parity = Int32.Parse(parityItem.Tag.ToString());
|
||||
screen.sendingTime = Int32.Parse(sendingTimetxt.Text);
|
||||
|
||||
if (_screeen.UpdateScreen(screen))
|
||||
{
|
||||
_mainWindow.resetPort = true;
|
||||
_mainWindow.footerMsg.Text = "Connecting.....";
|
||||
_mainWindow.footerMsg.IsVisible = true;
|
||||
comPopupOverlay.IsVisible = false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
private void showComPopUp(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
var screen = _screeen.ReadScreens()[0];
|
||||
|
||||
boundRateComboBox.SelectedIndex=int.Parse(boundRateComboBox.Items.OfType<ComboBoxItem>().FirstOrDefault(item => item.Content?.ToString() == screen.boundRate.ToString()).Tag.ToString());
|
||||
stopBitsComboBox.SelectedIndex = screen.stopBits;
|
||||
parityComboBox.SelectedIndex = screen.parity;
|
||||
sendingTimetxt.Text=screen.sendingTime.ToString();
|
||||
comPopupOverlay.IsVisible = true;
|
||||
}
|
||||
private void ShowTempPopUp(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
var screen = _screeen.ReadScreens()[0];
|
||||
warningLimit.Text=screen.warningLimit.ToString();
|
||||
errorLimit.Text=screen.errorLimit.ToString();
|
||||
tempPopupOverlay.IsVisible = true;
|
||||
}
|
||||
private void tempSaveBtn(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
var screen = _screeen.ReadScreens()[0];
|
||||
screen.warningLimit = double.Parse(warningLimit.Text);
|
||||
screen.errorLimit = double.Parse(errorLimit.Text);
|
||||
_screeen.UpdateScreen(screen);
|
||||
CloseKeyboard();
|
||||
//if (_keyboardProcess != null)
|
||||
//{
|
||||
// _keyboardProcess.Kill();
|
||||
|
||||
//}
|
||||
|
||||
tempPopupOverlay.IsVisible=false;
|
||||
}
|
||||
private void portChanged(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_isWindowLoaded)
|
||||
return;
|
||||
if (sender is ComboBox comboBox)
|
||||
{
|
||||
if (comboBox.SelectedItem is string selectedItem)
|
||||
{
|
||||
var screen = _screeen.ReadScreens()[0];
|
||||
if (selectedItem.ToString()!= "Choose COM" && selectedItem.ToString()!= "Close Comunication")
|
||||
{
|
||||
screen.port = selectedItem.ToString();
|
||||
_screeen.UpdateScreen(screen);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
screen.port = "";
|
||||
_screeen.UpdateScreen(screen);
|
||||
}
|
||||
boundRateComboBox.SelectedIndex = int.Parse(boundRateComboBox.Items.OfType<ComboBoxItem>().FirstOrDefault(item => item.Content?.ToString() == screen.boundRate.ToString()).Tag.ToString());
|
||||
stopBitsComboBox.SelectedIndex = screen.stopBits;
|
||||
parityComboBox.SelectedIndex = screen.parity;
|
||||
sendingTimetxt.Text = screen.sendingTime.ToString();
|
||||
this.comSaveButton.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private (string? fileName, string args) GetKeyboardCommand()
|
||||
{
|
||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||
return ("osk.exe", "");
|
||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
|
||||
return ("onboard", ""); // or "florence", "matchbox-keyboard"
|
||||
return (null, "");
|
||||
}
|
||||
|
||||
private async void OnTextBoxFocused(object? sender, PointerPressedEventArgs e)
|
||||
{
|
||||
if (_keyboardProcess is { HasExited: false })
|
||||
return;
|
||||
|
||||
var (fileName, args) = GetKeyboardCommand();
|
||||
if (fileName is null)
|
||||
return;
|
||||
|
||||
_keyboardProcess = new Process
|
||||
{
|
||||
StartInfo = new ProcessStartInfo
|
||||
{
|
||||
FileName = fileName,
|
||||
Arguments = args,
|
||||
UseShellExecute = true,
|
||||
WorkingDirectory = "/usr/bin"
|
||||
},
|
||||
EnableRaisingEvents = true
|
||||
};
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
_keyboardProcess.Start();
|
||||
|
||||
|
||||
|
||||
Dispatcher.UIThread.Post(() =>
|
||||
{
|
||||
if (sender is Border border)
|
||||
{
|
||||
var textbox = border.Child as TextBox;
|
||||
textbox.SelectionStart = 0;
|
||||
textbox.SelectionEnd = textbox.Text?.Length ?? 0;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
catch
|
||||
{
|
||||
// fail silently if keyboard not found
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void OnPopupOverlayPointerPressed(object sender, PointerPressedEventArgs e)
|
||||
{
|
||||
targetText.Text = oldValue.ToString();
|
||||
CancelComButton.Focus();
|
||||
|
||||
keyBoardPopup.IsVisible = false;
|
||||
}
|
||||
private void OnKeyClick(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is Button button)
|
||||
{
|
||||
targetText.Text += button.Content;
|
||||
}
|
||||
}
|
||||
private void ShowNumberKeyBoard(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
targetText = sendingTimetxt;
|
||||
oldValue = Int32.Parse(targetText.Text);
|
||||
targetText.Text = "";
|
||||
keyBoardPopup.IsVisible = true;
|
||||
}
|
||||
private void OnBackClick(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(targetText.Text))
|
||||
{
|
||||
// Remove the last character from the text box
|
||||
targetText.Text = targetText.Text.Remove(targetText.Text.Length - 1, 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void EnterClick(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
CancelComButton.Focus();
|
||||
keyBoardPopup.IsVisible = false;
|
||||
}
|
||||
|
||||
private void CloseKeyboard()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (_keyboardProcess != null)
|
||||
{
|
||||
// Kill the keyboard process
|
||||
_keyboardProcess.Kill();
|
||||
_keyboardProcess.Dispose();
|
||||
_keyboardProcess = null;
|
||||
|
||||
// Force kill any remaining keyboard processes
|
||||
var processKill = new Process
|
||||
{
|
||||
StartInfo = new ProcessStartInfo
|
||||
{
|
||||
FileName = "killall",
|
||||
Arguments = "-9 onboard matchbox-keyboard florence", // Common Linux on-screen keyboards
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true
|
||||
}
|
||||
};
|
||||
processKill.Start();
|
||||
processKill.WaitForExit(1000);
|
||||
processKill.Dispose();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Error closing keyboard: {ex.Message}");
|
||||
}
|
||||
}
|
||||
private void setDefaultSettings()
|
||||
{
|
||||
_mainWindow.minimizeBtn.IsVisible = false;
|
||||
|
||||
var stackPanel = _mainWindow.HomeTrack.Parent as StackPanel;
|
||||
|
||||
if (_isFromManualControl)
|
||||
{
|
||||
// Special UI setup when called from ManualControl
|
||||
_mainWindow.HomeTrack.IsVisible = true;
|
||||
_mainWindow.HomePolygon.Stroke = Avalonia.Media.Brushes.Black;
|
||||
_mainWindow.RecipeSelTrack.IsVisible = false;
|
||||
_mainWindow.RunInterfaceTrack.IsVisible = false;
|
||||
_mainWindow.RecipePanelTrack.IsVisible = true;
|
||||
_mainWindow.RecipePanelPolygon.Stroke = Avalonia.Media.Brushes.Black;
|
||||
_mainWindow.RecipeEditTrack.IsVisible = false;
|
||||
_mainWindow.SettingTrack.IsVisible = false;
|
||||
_mainWindow.AdvanceSettingsTrack.IsVisible = false;
|
||||
_mainWindow.ManualControlTrack.IsVisible = true;
|
||||
_mainWindow.ManualControlPolygon.Stroke = Avalonia.Media.Brushes.Black;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Original logic for other callers
|
||||
//Set Track Up
|
||||
_mainWindow.HomeTrack.IsVisible = true;
|
||||
_mainWindow.HomePolygon.Stroke = Avalonia.Media.Brushes.Black;
|
||||
_mainWindow.RecipeSelTrack.IsVisible = false;
|
||||
_mainWindow.RunInterfaceTrack.IsVisible = false;
|
||||
_mainWindow.RecipePanelTrack.IsVisible = false;
|
||||
_mainWindow.RecipeEditTrack.IsVisible = false;
|
||||
if (_isAdvSetting)
|
||||
{
|
||||
_mainWindow.SettingTrack.IsVisible = false;
|
||||
_mainWindow.AdvanceSettingsTrack.IsVisible = true;
|
||||
_mainWindow.AdvanceSettingsPolygon.Stroke = Avalonia.Media.Brushes.Black;
|
||||
}
|
||||
else
|
||||
{
|
||||
_mainWindow.SettingTrack.IsVisible = true;
|
||||
_mainWindow.SettingPolygon.Stroke = Avalonia.Media.Brushes.Black;
|
||||
_mainWindow.AdvanceSettingsTrack.IsVisible = false;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
_mainWindow.DiagnosticsTrack.IsVisible = false;
|
||||
// Remove the button from its current position
|
||||
stackPanel.Children.Remove(_mainWindow.SoftwareTrack);
|
||||
|
||||
// Add it back at the end of the StackPanel
|
||||
stackPanel.Children.Add(_mainWindow.SoftwareTrack);
|
||||
_mainWindow.SoftwareTrack.IsVisible = true;
|
||||
_mainWindow.SoftwarePolygon.Stroke = Brush.Parse("#A4275D");
|
||||
|
||||
|
||||
_mainWindow.TitleBtn.IsVisible = false;
|
||||
//Set Footer
|
||||
_mainWindow.footerMsg.IsVisible = false;
|
||||
_mainWindow.footer.Background = Brush.Parse("#f2f2f2");
|
||||
_mainWindow.footerDate.Text = DateTime.Now.ToString("dd/MM/yyyy");
|
||||
_mainWindow.footerTime.Text = DateTime.Now.ToString("hh:mm tt");
|
||||
_mainWindow.footerDateContainer.IsVisible = true;
|
||||
_mainWindow.footerStartBtn.IsVisible = false;
|
||||
_mainWindow.adminBtns.IsVisible = false;
|
||||
}
|
||||
|
||||
private void showDefaultValues()
|
||||
{
|
||||
var users = _user.ReadUsers();
|
||||
var allUIUsers = this.GetLogicalDescendants()
|
||||
.OfType<TextBlock>()
|
||||
.Where(cb => cb.Classes.Contains("user"))
|
||||
.ToList();
|
||||
for (int i = 0; i < allUIUsers.Count; i++)
|
||||
{
|
||||
allUIUsers[i].Text = users[i].UserName;
|
||||
}
|
||||
var screenData = _screeen.ReadScreens()?[0];
|
||||
|
||||
brightnessValue.Text = screenData?.brightness.ToString();
|
||||
dimValue.Text = (screenData?.dimSec/60.0).ToString();
|
||||
offValue.Text = (screenData?.offSec/60.0).ToString();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user