Files
SpdUp/MainWindow.xaml.cs
Phil-icyou 19ba425e79 Initial commit: SpdUp Windows Gaming Booster v1.0.0
- .NET 8 WPF app with full MVVM architecture
- One-click boost: CPU, RAM, GPU, network, services, timer resolution
- Real-time system monitor (LibreHardwareMonitor)
- Auto game detection (30+ games)
- RAM optimizer with kernel-level cleanup
- Network optimizer (TCP registry tweaks)
- Service manager, process manager, shader cache cleaner
- Desktop widget overlay
- Debug log viewer
- Custom dark gaming theme with trans pride colors
- 84 unit tests (xUnit)
- Inno Setup installer script
- Landing page website
2026-03-08 17:34:45 +01:00

81 lines
2.2 KiB
C#

using System.ComponentModel;
using System.Windows;
using SpdUp.ViewModels;
using SpdUp.Views;
namespace SpdUp;
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private readonly MainViewModel _vm;
private WidgetWindow? _widgetWindow;
public MainWindow()
{
InitializeComponent();
_vm = new MainViewModel();
DataContext = _vm;
_vm.PropertyChanged += OnVmPropertyChanged;
StateChanged += MainWindow_StateChanged;
if (_vm.IsWidgetVisible)
ShowWidget();
}
// ── Custom title-bar handlers ─────────────────────────────
private void Minimize_Click(object sender, RoutedEventArgs e)
=> WindowState = WindowState.Minimized;
private void MaximizeRestore_Click(object sender, RoutedEventArgs e)
=> WindowState = WindowState == WindowState.Maximized
? WindowState.Normal
: WindowState.Maximized;
private void Close_Click(object sender, RoutedEventArgs e)
=> Close();
private void MainWindow_StateChanged(object? sender, System.EventArgs e)
{
// Update the maximize/restore glyph
if (MaxRestoreBtn is not null)
MaxRestoreBtn.Content = WindowState == WindowState.Maximized ? "❐" : "☐";
}
private void OnVmPropertyChanged(object? sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(MainViewModel.IsWidgetVisible))
{
if (_vm.IsWidgetVisible)
ShowWidget();
else
HideWidget();
}
}
private void ShowWidget()
{
if (_widgetWindow is null || !_widgetWindow.IsLoaded)
{
_widgetWindow = new WidgetWindow(_vm);
_widgetWindow.Closed += (_, _) => _vm.IsWidgetVisible = false;
_widgetWindow.Show();
}
}
private void HideWidget()
{
_widgetWindow?.Close();
_widgetWindow = null;
}
private void Window_Closing(object sender, CancelEventArgs e)
{
HideWidget();
_vm.SaveSettings();
_vm.Dispose();
}
}