mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
[TUI] Add GoTo Sector dialog for improved sector navigation
This commit is contained in:
62
Aaru.Tui/ViewModels/Dialogs/GoToSectorDialogViewModel.cs
Normal file
62
Aaru.Tui/ViewModels/Dialogs/GoToSectorDialogViewModel.cs
Normal file
@@ -0,0 +1,62 @@
|
||||
using System.Windows.Input;
|
||||
using Avalonia.Controls;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
|
||||
namespace Aaru.Tui.ViewModels.Dialogs;
|
||||
|
||||
public sealed partial class GoToSectorDialogViewModel : ViewModelBase
|
||||
{
|
||||
readonly ulong _maxSector;
|
||||
internal Window _dialog = null!;
|
||||
|
||||
[ObservableProperty]
|
||||
string _errorMessage = string.Empty;
|
||||
|
||||
[ObservableProperty]
|
||||
bool _hasError;
|
||||
|
||||
[ObservableProperty]
|
||||
string _sectorNumber = string.Empty;
|
||||
|
||||
public GoToSectorDialogViewModel(Window dialog, ulong maxSector)
|
||||
{
|
||||
_dialog = dialog;
|
||||
_maxSector = maxSector;
|
||||
OkCommand = new RelayCommand(Ok);
|
||||
CancelCommand = new RelayCommand(Cancel);
|
||||
}
|
||||
|
||||
public ulong? Result { get; private set; }
|
||||
|
||||
public ICommand OkCommand { get; }
|
||||
public ICommand CancelCommand { get; }
|
||||
|
||||
void Ok()
|
||||
{
|
||||
if(!ulong.TryParse((string?)SectorNumber, out ulong sector))
|
||||
{
|
||||
ErrorMessage = "Please enter a valid number.";
|
||||
HasError = true;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(sector > _maxSector)
|
||||
{
|
||||
ErrorMessage = $"Sector number must be less than or equal to {_maxSector}.";
|
||||
HasError = true;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
Result = sector;
|
||||
_dialog.Close(true);
|
||||
}
|
||||
|
||||
void Cancel()
|
||||
{
|
||||
Result = null;
|
||||
_dialog.Close(false);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user