refactor: View models

This commit is contained in:
2026-02-19 13:14:42 +03:00
parent 35e2397a29
commit c239bd9d10
7 changed files with 110 additions and 34 deletions
+8 -4
View File
@@ -13,8 +13,9 @@ namespace GSS2.UI.Core.ViewModels;
public partial class CameraViewModel : ViewModelBase, IDisposable public partial class CameraViewModel : ViewModelBase, IDisposable
{ {
private bool _disposedValue; private bool _disposedValue;
private readonly CameraService _cameraService;
private readonly ILogger<CameraViewModel> _logger; private readonly ILogger<CameraViewModel> _logger;
private readonly CameraService _cameraService;
private readonly System.Timers.Timer _renderTimer; private readonly System.Timers.Timer _renderTimer;
public event EventHandler? RenderReqested; public event EventHandler? RenderReqested;
@@ -23,17 +24,20 @@ public partial class CameraViewModel : ViewModelBase, IDisposable
[ObservableProperty] private Stretch _stretchMode = Stretch.Uniform; [ObservableProperty] private Stretch _stretchMode = Stretch.Uniform;
[ObservableProperty] private TileMode _tileMode = TileMode.None; [ObservableProperty] private TileMode _tileMode = TileMode.None;
public CameraViewModel(CameraService cameraService, ILogger<CameraViewModel> logger) public CameraViewModel(ILogger<CameraViewModel> logger, CameraService cameraService)
{ {
_cameraService = cameraService;
_logger = logger; _logger = logger;
_logger.LogInformation("Initialization");
_cameraService = cameraService;
_renderTimer = new System.Timers.Timer(33); _renderTimer = new System.Timers.Timer(33);
_renderTimer.Elapsed += (_, _) => _renderTimer.Elapsed += (_, _) =>
{ {
if (!_cameraService.IsImageCapturing) if (!_cameraService.IsImageCapturing)
RenderReqested?.Invoke(this, new EventArgs()); RenderReqested?.Invoke(this, new EventArgs());
}; };
_logger.LogInformation("{} initialized", nameof(CameraViewModel));
_logger.LogInformation("Initialized");
} }
public void StartViewFinder() public void StartViewFinder()
@@ -1,17 +1,17 @@
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using GSS2.Core.Hardware;
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.ComponentModel;
using Avalonia.Layout; using Avalonia.Layout;
using GSS2.Core.Hardware;
namespace GSS2.UI.Core.ViewModels; namespace GSS2.UI.Core.ViewModels;
public partial class IlluminatorControllerViewModel : ViewModelBase public partial class IlluminatorControllerViewModel : ViewModelBase
{ {
private readonly IlluminatorService _illuminatorService;
private readonly ILogger<IlluminatorControllerViewModel> _logger; private readonly ILogger<IlluminatorControllerViewModel> _logger;
private readonly IlluminatorService _illuminatorService;
private bool _whiteIntencityChanging = false; private bool _whiteIntencityChanging = false;
private bool _uv365IntencityChanging = false; private bool _uv365IntencityChanging = false;
@@ -23,16 +23,19 @@ public partial class IlluminatorControllerViewModel : ViewModelBase
[ObservableProperty] private bool _enabled; [ObservableProperty] private bool _enabled;
[ObservableProperty] Orientation _orientation; [ObservableProperty] Orientation _orientation;
public IlluminatorControllerViewModel(IlluminatorService illuminatorService, ILogger<IlluminatorControllerViewModel> logger) public IlluminatorControllerViewModel(ILogger<IlluminatorControllerViewModel> logger, IlluminatorService illuminatorService)
{ {
_illuminatorService = illuminatorService;
_logger = logger; _logger = logger;
_logger.LogInformation("Initialization");
_illuminatorService = illuminatorService;
WhiteIntencity = 0; WhiteIntencity = 0;
Uv365Intencity = 0; Uv365Intencity = 0;
Uv254Intencity = 0; Uv254Intencity = 0;
Orientation = Orientation.Horizontal; Orientation = Orientation.Horizontal;
Enabled = false; Enabled = false;
_logger.LogInformation("Initialized"); _logger.LogInformation("Initialized");
} }
@@ -0,0 +1,22 @@
using CommunityToolkit.Mvvm.ComponentModel;
using Microsoft.Extensions.Logging;
namespace GSS2.UI.Core.ViewModels;
public partial class MainWindowViewModel : ViewModelBase
{
private readonly ILogger<MainWindowViewModel> _logger;
[ObservableProperty] private string _title;
public MainWindowViewModel(ILogger<MainWindowViewModel> logger)
{
_logger = logger;
_logger.LogInformation("Initialization");
Title = "GranuSight Software 2";
_logger.LogInformation("Initialized");
}
}
@@ -1,23 +1,32 @@
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using Avalonia;
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.ComponentModel;
using Avalonia;
using LiveChartsCore; using LiveChartsCore;
using LiveChartsCore.Defaults; using LiveChartsCore.Defaults;
using LiveChartsCore.SkiaSharpView; using LiveChartsCore.SkiaSharpView;
using Microsoft.Extensions.Logging;
namespace GSS2.UI.Core.ViewModels; namespace GSS2.UI.Core.ViewModels;
public partial class ResourceBarViewModel : ViewModelBase public partial class ResourceBarViewModel : ViewModelBase
{ {
private readonly ILogger<ResourceBarViewModel> _logger;
[ObservableProperty] private ObservableCollection<ISeries> _series; [ObservableProperty] private ObservableCollection<ISeries> _series;
[ObservableProperty] private Rect _bounds; [ObservableProperty] private Rect _bounds;
public ResourceBarViewModel(IEnumerable<ISeries> series) public ResourceBarViewModel(ILogger<ResourceBarViewModel> logger, IEnumerable<ISeries> series)
{ {
_logger = logger;
_logger.LogInformation("Initialization");
Series = new ObservableCollection<ISeries>(series); Series = new ObservableCollection<ISeries>(series);
_logger.LogInformation("Initialized");
} }
partial void OnBoundsChanged(Rect value) partial void OnBoundsChanged(Rect value)
@@ -1,9 +1,11 @@
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using Avalonia; using Microsoft.Extensions.Logging;
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.ComponentModel;
using Avalonia;
using LiveChartsCore; using LiveChartsCore;
using LiveChartsCore.SkiaSharpView; using LiveChartsCore.SkiaSharpView;
@@ -11,16 +13,22 @@ namespace GSS2.UI.Core.ViewModels;
public partial class ResourceChartViewModel : ViewModelBase public partial class ResourceChartViewModel : ViewModelBase
{ {
private readonly ILogger<ResourceChartViewModel> _logger;
[ObservableProperty] private ObservableCollection<ISeries> _series; [ObservableProperty] private ObservableCollection<ISeries> _series;
[ObservableProperty] private ObservableCollection<Axis> _yAxes; [ObservableProperty] private ObservableCollection<Axis> _yAxes;
[ObservableProperty] private ObservableCollection<Axis> _xAxes; [ObservableProperty] private ObservableCollection<Axis> _xAxes;
[ObservableProperty] private Rect _bounds; [ObservableProperty] private Rect _bounds;
public ResourceChartViewModel(IEnumerable<ISeries> series, IEnumerable<Axis> yAxes, IEnumerable<Axis> xAxes) public ResourceChartViewModel(ILogger<ResourceChartViewModel> logger, IEnumerable<ISeries> series, IEnumerable<Axis> yAxes, IEnumerable<Axis> xAxes)
{ {
_logger = logger;
_logger.LogInformation("Initialization");
Series = new ObservableCollection<ISeries>(series); Series = new ObservableCollection<ISeries>(series);
YAxes = new ObservableCollection<Axis>(yAxes); YAxes = new ObservableCollection<Axis>(yAxes);
XAxes = new ObservableCollection<Axis>(xAxes); XAxes = new ObservableCollection<Axis>(xAxes);
_logger.LogInformation("Initialized");
} }
partial void OnBoundsChanged(Rect value) partial void OnBoundsChanged(Rect value)
@@ -1,27 +1,42 @@
using Avalonia; using Microsoft.Extensions.Logging;
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.ComponentModel;
using Avalonia;
namespace GSS2.UI.Core.ViewModels; namespace GSS2.UI.Core.ViewModels;
public partial class ResourceCpuUsageBarsViewModel : ViewModelBase public partial class ResourceCpuUsageBarsViewModel : ViewModelBase
{ {
private readonly ILogger<ResourceCpuUsageBarsViewModel> _logger;
[ObservableProperty] private Rect _bounds; [ObservableProperty] private Rect _bounds;
[ObservableProperty] private bool _isCoresColumnVisible; [ObservableProperty] private bool _isCoresColumnVisible;
[ObservableProperty] private ResourceBarViewModel _cpu; [ObservableProperty] private ResourceBarViewModel _cpu;
[ObservableProperty] private ResourceBarViewModel _cpu0; [ObservableProperty] private ResourceBarViewModel _cpu0;
[ObservableProperty] private ResourceBarViewModel _cpu1; [ObservableProperty] private ResourceBarViewModel _cpu1;
[ObservableProperty] private ResourceBarViewModel _cpu2; [ObservableProperty] private ResourceBarViewModel _cpu2;
[ObservableProperty] private ResourceBarViewModel _cpu3; [ObservableProperty] private ResourceBarViewModel _cpu3;
public ResourceCpuUsageBarsViewModel(ResourceBarViewModel cpu, ResourceBarViewModel cpu0, ResourceBarViewModel cpu1, ResourceBarViewModel cpu2, ResourceBarViewModel cpu3) public ResourceCpuUsageBarsViewModel(
ILogger<ResourceCpuUsageBarsViewModel> logger,
ResourceBarViewModel cpu,
ResourceBarViewModel cpu0,
ResourceBarViewModel cpu1,
ResourceBarViewModel cpu2,
ResourceBarViewModel cpu3
)
{ {
_logger = logger;
_logger.LogInformation("Initialized");
Cpu = cpu; Cpu = cpu;
Cpu0 = cpu0; Cpu0 = cpu0;
Cpu1 = cpu1; Cpu1 = cpu1;
Cpu2 = cpu2; Cpu2 = cpu2;
Cpu3 = cpu3; Cpu3 = cpu3;
_logger.LogInformation("Initialized");
} }
partial void OnBoundsChanged(Rect value) partial void OnBoundsChanged(Rect value)
+32 -17
View File
@@ -4,6 +4,7 @@ using Microsoft.Extensions.Logging;
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.ComponentModel;
using Avalonia;
using Avalonia.Threading; using Avalonia.Threading;
using SkiaSharp; using SkiaSharp;
@@ -13,13 +14,13 @@ using LiveChartsCore.SkiaSharpView.Painting;
using LiveChartsCore.Defaults; using LiveChartsCore.Defaults;
using GSS2.Core.Hardware; using GSS2.Core.Hardware;
using Avalonia;
namespace GSS2.UI.Core.ViewModels; namespace GSS2.UI.Core.ViewModels;
public partial class ResourcesViewModel : ViewModelBase, IDisposable public partial class ResourcesViewModel : ViewModelBase, IDisposable
{ {
private bool _disposedValue; private bool _disposedValue;
private readonly ComputeResourcesService _computeResourcesService; private readonly ComputeResourcesService _computeResourcesService;
private readonly ILogger<ResourcesViewModel> _logger; private readonly ILogger<ResourcesViewModel> _logger;
private readonly int _intervalMs = 500; private readonly int _intervalMs = 500;
@@ -29,26 +30,38 @@ public partial class ResourcesViewModel : ViewModelBase, IDisposable
[ObservableProperty] private Rect _bounds; [ObservableProperty] private Rect _bounds;
[ObservableProperty] private bool _isChartsColumnVisible; [ObservableProperty] private bool _isChartsColumnVisible;
[ObservableProperty] private bool _isBarsColumnVisible; [ObservableProperty] private bool _isBarsColumnVisible;
[ObservableProperty] private ResourceChartViewModel _cpuUsageChartViewModel; [ObservableProperty] private ResourceChartViewModel _cpuUsageChartViewModel;
[ObservableProperty] private ResourceChartViewModel _cpuTemperatureChartViewModel; [ObservableProperty] private ResourceChartViewModel _cpuTemperatureChartViewModel;
[ObservableProperty] private ResourceChartViewModel _memoryUsageChartViewModel; [ObservableProperty] private ResourceChartViewModel _memoryUsageChartViewModel;
[ObservableProperty] private ResourceCpuUsageBarsViewModel _cpuUsageBarsViewModel; [ObservableProperty] private ResourceCpuUsageBarsViewModel _cpuUsageBarsViewModel;
[ObservableProperty] private ResourceBarViewModel _cpuTemperatureBarViewModel; [ObservableProperty] private ResourceBarViewModel _cpuTemperatureBarViewModel;
[ObservableProperty] private ResourceBarViewModel _memoryUsageBarViewModel; [ObservableProperty] private ResourceBarViewModel _memoryUsageBarViewModel;
public ResourcesViewModel(ComputeResourcesService computeResourcesService, ILogger<ResourcesViewModel> logger) public ResourcesViewModel(
ILogger<ResourcesViewModel> logger,
ILogger<ResourceCpuUsageBarsViewModel> resourceCpuUsageBarsViewModelLogger,
ILogger<ResourceChartViewModel> resourceChartViewModelCpuUsageLogger,
ILogger<ResourceChartViewModel> resourceChartViewModelCpuTemperatureLogger,
ILogger<ResourceChartViewModel> resourceChartViewModelMemoryUsageLogger,
ILogger<ResourceBarViewModel> resourceBarViewModelCpuUsageLogger,
ILogger<ResourceBarViewModel> resourceBarViewModelCpu0UsageLogger,
ILogger<ResourceBarViewModel> resourceBarViewModelCpu1UsageLogger,
ILogger<ResourceBarViewModel> resourceBarViewModelCpu2UsageLogger,
ILogger<ResourceBarViewModel> resourceBarViewModelCpu3UsageLogger,
ILogger<ResourceBarViewModel> resourceBarViewModelCpuTemperatureLogger,
ILogger<ResourceBarViewModel> resourceBarViewModelMemoryUsageLogger,
ComputeResourcesService computeResourcesService
)
{ {
_logger = logger; _logger = logger;
_logger.LogInformation("Initialization"); _logger.LogInformation("Initialization");
_computeResourcesService = computeResourcesService; _computeResourcesService = computeResourcesService;
ResourceChartViewModel CreateChartViewModel(string name, double minLimit, double maxLimit, double minStep) ResourceChartViewModel CreateChartViewModel(ILogger<ResourceChartViewModel> logger, string name, double minLimit, double maxLimit, double minStep)
{ {
return new ResourceChartViewModel( return new ResourceChartViewModel(
logger: logger,
series: series:
[ [
new LineSeries<double> new LineSeries<double>
@@ -85,9 +98,10 @@ public partial class ResourcesViewModel : ViewModelBase, IDisposable
] ]
); );
} }
ResourceBarViewModel CreateBarViewModel(Func<LiveChartsCore.Kernel.ChartPoint<ObservableValue, LiveChartsCore.SkiaSharpView.Drawing.Geometries.DoughnutGeometry, LiveChartsCore.SkiaSharpView.Drawing.Geometries.LabelGeometry>, string> formater) ResourceBarViewModel CreateBarViewModel(ILogger<ResourceBarViewModel> logger, Func<LiveChartsCore.Kernel.ChartPoint<ObservableValue, LiveChartsCore.SkiaSharpView.Drawing.Geometries.DoughnutGeometry, LiveChartsCore.SkiaSharpView.Drawing.Geometries.LabelGeometry>, string> formater)
{ {
return new ResourceBarViewModel( return new ResourceBarViewModel(
logger: logger,
series: series:
[ [
new PieSeries<ObservableValue> new PieSeries<ObservableValue>
@@ -113,19 +127,20 @@ public partial class ResourcesViewModel : ViewModelBase, IDisposable
); );
} }
CpuUsageChartViewModel = CreateChartViewModel("Нагрузка ЦПУ, %", 0, 100, 10); CpuUsageChartViewModel = CreateChartViewModel(resourceChartViewModelCpuUsageLogger, "Нагрузка ЦПУ, %", 0, 100, 10);
CpuTemperatureChartViewModel = CreateChartViewModel("Температура ЦПУ, ℃", 0, 100, 10); CpuTemperatureChartViewModel = CreateChartViewModel(resourceChartViewModelCpuTemperatureLogger, "Температура ЦПУ, ℃", 0, 100, 10);
MemoryUsageChartViewModel = CreateChartViewModel("Нагрузка ОЗУ, МБ", 0, 8000, 1000); MemoryUsageChartViewModel = CreateChartViewModel(resourceChartViewModelMemoryUsageLogger, "Нагрузка ОЗУ, МБ", 0, 8000, 1000);
CpuUsageBarsViewModel = new ResourceCpuUsageBarsViewModel( CpuUsageBarsViewModel = new ResourceCpuUsageBarsViewModel(
CreateBarViewModel(value => $"{value.Model?.Value?.ToString("00.00")} %"), resourceCpuUsageBarsViewModelLogger,
CreateBarViewModel(value => $"{value.Model?.Value?.ToString("00.00")} %"), CreateBarViewModel(resourceBarViewModelCpuUsageLogger, value => $"{value.Model?.Value?.ToString("00.00")} %"),
CreateBarViewModel(value => $"{value.Model?.Value?.ToString("00.00")} %"), CreateBarViewModel(resourceBarViewModelCpu0UsageLogger, value => $"{value.Model?.Value?.ToString("00.00")} %"),
CreateBarViewModel(value => $"{value.Model?.Value?.ToString("00.00")} %"), CreateBarViewModel(resourceBarViewModelCpu1UsageLogger, value => $"{value.Model?.Value?.ToString("00.00")} %"),
CreateBarViewModel(value => $"{value.Model?.Value?.ToString("00.00")} %") CreateBarViewModel(resourceBarViewModelCpu2UsageLogger, value => $"{value.Model?.Value?.ToString("00.00")} %"),
CreateBarViewModel(resourceBarViewModelCpu3UsageLogger, value => $"{value.Model?.Value?.ToString("00.00")} %")
); );
CpuTemperatureBarViewModel = CreateBarViewModel(value => $"{value.Model?.Value?.ToString("00.00")} ℃"); CpuTemperatureBarViewModel = CreateBarViewModel(resourceBarViewModelCpuTemperatureLogger, value => $"{value.Model?.Value?.ToString("00.00")} ℃");
MemoryUsageBarViewModel = CreateBarViewModel(value => $"{value.Model?.Value?.ToString("000.00")} МБ"); MemoryUsageBarViewModel = CreateBarViewModel(resourceBarViewModelMemoryUsageLogger, value => $"{value.Model?.Value?.ToString("000.00")} МБ");
Update(); Update();