Refactor code structure for improved readability and maintainability

This commit is contained in:
2025-08-06 21:21:34 +02:00
commit f539289f45
96 changed files with 45934 additions and 0 deletions

View File

@@ -0,0 +1,388 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Documents;
using Avalonia.Controls.Shapes;
using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Avalonia.Media;
using AvaloniaApplication1.DataBase;
using DaireApplication.DataBase;
using DaireApplication.ViewModels;
using DaireApplication.Views;
using System;
using System.Drawing;
using System.Reflection.PortableExecutable;
using System.Threading;
namespace DaireApplication;
public partial class Settings : UserControl
{
Button controllButton = new Button();
private MainWindow? _mainWindow;
private UserTable? _currentUser;
public RecipeTable? _recipeTable;
private MachineTable _machine;
public string ActiveColor { get; set; } = "#A4275D";
public string PassiveColor { get; set; } = "#666666";
public Settings()
{
InitializeComponent();
}
public Settings(MainWindow mainWindow, UserTable currentUser,RecipeTable recipeTable)
{
_currentUser = currentUser;
_mainWindow = mainWindow;
_recipeTable = recipeTable;
_machine = new MachineTable();
_machine = _machine.ReadMachine();
InitializeComponent();
setDefaultSettings();
setDafaultValues();
mixerBtn.Click += _mainWindow.MotorClick;
fountainBtn.Click += _mainWindow.FountainClick;
}
private void toggelOnOffClick(object? sender, RoutedEventArgs e)
{
if (sender is Button button)
{
var StackPanel = button.Content as StackPanel;
var Label = StackPanel.Children;
var underLine = Label[2] as Avalonia.Controls.Shapes.Rectangle;
var titelLable = Label[0] as Label;
if (Label[1] is Label targetLable)
{
if (targetLable.Content == "ON")
{
if (titelLable.Content == "MOLD HEATER")
{
_mainWindow.moldHeaterMotor = 0;
}
if (titelLable.Content == "VIBRATION")
{
_mainWindow.vibrationMotor = 0;
}
if (titelLable.Content == "VIB. HEATER")
{
_mainWindow.vibHeaterMotor = 0;
}
}
else
{
if (titelLable.Content == "MOLD HEATER")
{
_mainWindow.moldHeaterMotor = 1;
}
if (titelLable.Content == "VIBRATION")
{
_mainWindow.vibrationMotor = 1;
}
if (titelLable.Content == "VIB. HEATER")
{
_mainWindow.vibHeaterMotor = 1;
}
}
}
}
}
private void PedalBtn(object? sender, RoutedEventArgs e)
{
if (sender is Button button)
{
var StackPanel = button.Content as StackPanel;
var Label = StackPanel.Children;
var underLine = Label[1] as Avalonia.Controls.Shapes.Rectangle;
if (Label[0] is TextBlock targetLable)
{
if (targetLable.Text == "AUTO")
{
if (_mainWindow.pedalOnTimer!=null )
{
_mainWindow.pedalOnTimer.Change(Timeout.Infinite, Timeout.Infinite);
_mainWindow.pedalOnTimer = null;
_mainWindow.pedalOnSeconds = 0;
}
if (_mainWindow.pedalOffTimer!=null)
{
_mainWindow.pedalOffTimer.Change(Timeout.Infinite, Timeout.Infinite);
_mainWindow.pedalOffTimer = null;
_mainWindow.pedalOffSeconds = 0;
}
_mainWindow.pedalMotor = 0;
targetLable.Text = "MANUAL";
underLine.Fill = Brush.Parse("#666666");
PedalAutoContainer.IsEnabled = false;
_recipeTable.Pedal = true;
}
else
{
_mainWindow.pedalMotor = 1;
_mainWindow.pedalState = -1;
_mainWindow.setPedalTimerOnce = 1;
_mainWindow.pedalOnSeconds = 0;
_mainWindow.pedalOffSeconds = 0;
targetLable.Text = "AUTO";
underLine.Fill = Brush.Parse("#A4275D");
PedalAutoContainer.IsEnabled = true;
_recipeTable.Pedal = false;
}
_recipeTable.UpdateRecipe(_recipeTable);
}
}
}
private void adjustPedalTime(object? sender, RoutedEventArgs e)
{
if (sender is Button button)
{
if (button.Classes[0].ToString()== "PedalOff")
{
if (button.Content == "")
{
if (Int32.Parse(PedalOffTime.Text) > 0)
{
PedalOffTime.Text = (Int32.Parse(PedalOffTime.Text) - 1).ToString();
}
}
else if (button.Content == "+")
{
PedalOffTime.Text = (Int32.Parse(PedalOffTime.Text) + 1).ToString();
}
_recipeTable.PedalOffTime = Int32.Parse(PedalOffTime.Text);
_recipeTable.UpdateRecipe(_recipeTable);
}
else
{
if (button.Content == "")
{
if (Int32.Parse(PedalOnTime.Text) > 0)
{
PedalOnTime.Text = (Int32.Parse(PedalOnTime.Text) - 1).ToString();
}
}
else if (button.Content == "+")
{
if (int.TryParse(PedalOnTime.Text, out int value))
{
if (value < 9)
{
PedalOnTime.Text = (value + 1).ToString();
}
}
}
_recipeTable.PedalOnTime = Int32.Parse(PedalOnTime.Text);
_recipeTable.UpdateRecipe(_recipeTable);
}
_recipeTable = _recipeTable.ReadRecipesById(_recipeTable.Id.ToString());
}
}
private async void OnIgnorePopupOverlayPointerPressed(object? sender, RoutedEventArgs e)
{
DeletePopupOverlay.IsVisible = false;
}
private async void HideTempErrorPopUp(object? sender, RoutedEventArgs e)
{
_mainWindow.pauseTimer = false;
_mainWindow.pauseTempTracking = false; // Allow process to continue after clicking "No"
_mainWindow.tempWarningAccepted = true; // User accepted the temperature warning
tempErrorPopupOverlay.IsVisible = false;
}
private async void YesBtnClick(object? sender, RoutedEventArgs e)
{
if (sender is Button button)
{
if (DeletePopupOverlay.Tag=="home")
{
_mainWindow.resetAll();
// rest the board
_mainWindow.restBoard = true;
_mainWindow.UserName.Content = "Select User";
_mainWindow.footerMsg.Text = "";
_mainWindow.ContentArea.Content = new Home(_mainWindow);
}
else if (DeletePopupOverlay.Tag == "recipeSel")
{
_mainWindow.resetAll();
// rest the board
_mainWindow.restBoard = true;
_mainWindow.footerMsg.Text = "";
_mainWindow.ContentArea.Content = new Recipe(_mainWindow, Program.currentUser);
}
}
}
private async void ErrorYesBtnClick(object? sender, RoutedEventArgs e)
{
if (sender is Button button)
{
//_mainWindow.pause = true;
//_mainWindow.pauseTempTracking = true;
//_mainWindow.pauseTimer = true;
// stop the recipe
_mainWindow.startRecipe = 0;
_mainWindow.Heating = 0;
_mainWindow.cooling = 0;
_mainWindow.pouring = 0;
_mainWindow.PumbOn = -1;
_mainWindow.pedalMotor = -1;
if (_mainWindow.heatingTimer != null)
{
_mainWindow.heatingTimer.Change(Timeout.Infinite, Timeout.Infinite);
_mainWindow.heatingSeconds = 0;
}
if (_mainWindow.coolingTimer != null)
{
_mainWindow.coolingTimer.Change(Timeout.Infinite, Timeout.Infinite);
_mainWindow.coolingSeconds = 0;
}
if (_mainWindow.pouringTimer != null)
{
_mainWindow.pouringTimer.Change(Timeout.Infinite, Timeout.Infinite);
_mainWindow.pouringSeconds = 0;
}
var fount = _mainWindow._mapping.Find(x => x.Name.ToLower() == "Pump".ToLower());
if (fount != null)
{
if (fount.BitNumbers.Count > 0)
{
foreach (var bit in fount.BitNumbers)
{
_mainWindow.holdingRegister.motor &= (ushort)~(1 << bit);
}
}
}
_mainWindow.holdingRegister.setTemp1 = -10000;
_mainWindow.holdingRegister.setTemp2 = -10000;
_mainWindow.holdingRegister.setTemp3 = -10000;
_mainWindow.holdingRegister.setTemp4 = -10000;
await _mainWindow.WriteToSerialAsync("ErrorYesBtnClick");
tempErrorPopupOverlay.IsVisible = false;
_mainWindow.footerMsg.Text = "Recipe Stoped";
_mainWindow.recipeStartBtn.Content = "START RECIPE";
}
}
private void setDefaultSettings()
{
//Set Track Up
_mainWindow.HomeTrack.IsVisible = true;
//_mainWindow.HomePolygon.Stroke = Avalonia.Media.Brushes.Black;
_mainWindow.RecipeSelTrack.IsVisible = true;
_mainWindow.RecipeSelPolygon.Stroke = Avalonia.Media.Brushes.Black;
_mainWindow.RunInterfaceTrack.IsVisible = true;
_mainWindow.RunInterfacePolygon.Stroke = Brush.Parse("#A4275D");
_mainWindow.RecipePanelTrack.IsVisible = false;
_mainWindow.RecipeEditTrack.IsVisible = false;
_mainWindow.SettingTrack.IsVisible = false;
_mainWindow.DiagnosticsTrack.IsVisible = false;
_mainWindow.TitleBtn.IsVisible = true;
_mainWindow.Title.Text = _recipeTable.Name;
//Set Footer
_mainWindow.footerMsg.Text = "Ready";
_mainWindow.footerMsg.MaxWidth = 500;
_mainWindow.footer.Background = Avalonia.Media.Brushes.WhiteSmoke;
_mainWindow.footerMsg.Foreground = Avalonia.Media.Brushes.Green;
_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 = true;
_mainWindow.adminBtns.IsVisible = false;
}
private void setDafaultValues()
{
//Recipe Settings
heatingValue.Content = _recipeTable.HeatingGoal;
coolingValue.Content = _recipeTable.CoolingGoal;
pouringValue.Content = _recipeTable.PouringGoal;
//tankTemp
TankTempValue.Content = _recipeTable?.TankTemp;
//mixer
var mixerChildren= MixerSP.Children;
var mixerLable = mixerChildren[1] as Label;
mixerLable.Content = _recipeTable.Mixer.Value ? "ON" : "OFF";
var mixerUnderLine = mixerChildren[2] as Avalonia.Controls.Shapes.Rectangle;
mixerUnderLine.Fill = _recipeTable.Mixer.Value ? Brush.Parse(ActiveColor) : Brush.Parse(PassiveColor);
//pedal
var pedalChildren = PedalSP.Children;
var pedalText = pedalChildren[0] as TextBlock;
var pedalUnderLine = pedalChildren[1] as Avalonia.Controls.Shapes.Rectangle;
if (_recipeTable.Pedal.Value)
{
pedalText.Text = "MANUAL";
pedalUnderLine.Fill = Brush.Parse(PassiveColor);
PedalAutoContainer.IsEnabled = false;
}
else
{
pedalText.Text = "AUTO";
pedalUnderLine.Fill = Brush.Parse(ActiveColor);
PedalAutoContainer.IsEnabled = true;
}
PedalOffTime.Text = _recipeTable.PedalOffTime.ToString();
PedalOnTime.Text = _recipeTable.PedalOnTime.ToString();
//fountain Temp
FountainTempValue.Content = _recipeTable?.FountainTemp;
//fountain
var fountainChildren = FountainSP.Children;
var fountainLable = fountainChildren[1] as Label;
fountainLable.Content = _recipeTable.Fountain.Value ? "ON" : "OFF";
var fountainUnderLine = fountainChildren[2] as Avalonia.Controls.Shapes.Rectangle;
fountainUnderLine.Fill = _recipeTable.Fountain.Value ? Brush.Parse(ActiveColor) : Brush.Parse(PassiveColor);
//mold Heater
var moldHeaterChildren = MoldHeaterSP.Children;
var moldHeaterLable = moldHeaterChildren[1] as Label;
moldHeaterLable.Content = _recipeTable.MoldHeater.Value ? "ON" : "OFF";
var moldHeaterUnderLine = moldHeaterChildren[2] as Avalonia.Controls.Shapes.Rectangle;
moldHeaterUnderLine.Fill = _recipeTable.MoldHeater.Value ? Brush.Parse(ActiveColor) : Brush.Parse(PassiveColor);
// vibration
var vibrationChildren = VibrationSP.Children;
var vibrationLable = vibrationChildren[1] as Label;
vibrationLable.Content = _recipeTable.Vibration.Value ? "ON" : "OFF";
var vibrationUnderLine = vibrationChildren[2] as Avalonia.Controls.Shapes.Rectangle;
vibrationUnderLine.Fill = _recipeTable.Vibration.Value ? Brush.Parse(ActiveColor) : Brush.Parse(PassiveColor);
// vib heater
var vibHeaterChildren = VibHeaterSP.Children;
var vibHeaterLable = vibHeaterChildren[1] as Label;
vibHeaterLable.Content = _recipeTable.VibHeater.Value ? "ON" : "OFF";
var vibHeaterUnderLine = vibHeaterChildren[2] as Avalonia.Controls.Shapes.Rectangle;
vibHeaterUnderLine.Fill = _recipeTable.VibHeater.Value ? Brush.Parse(ActiveColor) : Brush.Parse(PassiveColor);
}
}