DFTimeFieldControl.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using Avalonia.Controls;
  2. using Avalonia.Media;
  3. using InABox.Avalonia.Components;
  4. using InABox.Core;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Drawing;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace PRS.Avalonia.DigitalForms;
  12. class DFTimeFieldControl : DigitalFormFieldControl<DFLayoutTimeField, DFLayoutTimeFieldProperties, TimeSpan, TimeSpan?>
  13. {
  14. private TimeSelectorButton Time = null!; // late-initialising
  15. protected override Control Create()
  16. {
  17. Time = new TimeSelectorButton();
  18. var def = Field.Properties.Default;
  19. Time.Time = def == default ? DateTime.Now.TimeOfDay : def;
  20. Time.TimeChanged += (sender, e) => ChangeField();
  21. return Time;
  22. }
  23. public override TimeSpan? GetSerializedValue() => Time.Time;
  24. public override void SetSerializedValue(TimeSpan? value) => Time.Time = value;
  25. public override TimeSpan GetValue() => Time.Time ?? TimeSpan.MinValue;
  26. public override void SetValue(TimeSpan value) => Time.Time = value;
  27. protected override bool IsEmpty() => Time.Time == null || Time.Time == TimeSpan.MinValue;
  28. public override void SetBackground(IBrush brush, bool defaultColour)
  29. {
  30. Time.Background = brush;
  31. }
  32. }