TimeSelectorViewModel.cs 868 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using CommunityToolkit.Mvvm.ComponentModel;
  2. using CommunityToolkit.Mvvm.Input;
  3. namespace InABox.Avalonia.Components.TimeSelector;
  4. public partial class TimeSelectorViewModel : BasePopupViewModel<TimeSpan?>
  5. {
  6. [ObservableProperty]
  7. private TimeSpan _timeDisplay;
  8. [ObservableProperty]
  9. private TimeSpan? _time;
  10. [ObservableProperty]
  11. private Func<TimeSpan?>? _getTime;
  12. partial void OnTimeChanged(TimeSpan? value)
  13. {
  14. TimeDisplay = value ?? default;
  15. }
  16. [RelayCommand]
  17. private void Cancel()
  18. {
  19. Close(null);
  20. }
  21. [RelayCommand]
  22. private void Clear()
  23. {
  24. Close(TimeSpan.MinValue);
  25. }
  26. [RelayCommand]
  27. private void Now()
  28. {
  29. Close(DateTime.Now.TimeOfDay);
  30. }
  31. [RelayCommand]
  32. private void Select()
  33. {
  34. Close(GetTime is null ? Time : GetTime());
  35. }
  36. }