DFLayoutTimeStampFieldProperties.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System;
  2. namespace InABox.Core
  3. {
  4. public class DFLayoutTimeStampFieldProperties : DFLayoutFieldProperties<DateTime, DateTime?>
  5. {
  6. [EditorSequence(-995)]
  7. [TimestampEditor]
  8. public override DateTime Default { get; set; }
  9. public override string FormatValue(DateTime? value)
  10. {
  11. return string.Format("{0:mm HH dd MMM yy}", value);
  12. }
  13. public override void SerializeValue(DFSaveStorageEntry entry, DateTime? value)
  14. {
  15. if (value != null)
  16. {
  17. entry.SetValue(value);
  18. }
  19. }
  20. public override DateTime? DeserializeValue(DFLoadStorageEntry entry)
  21. {
  22. var value = entry.GetValue();
  23. if (value is DateTime date)
  24. return date;
  25. if (DateTime.TryParse(value as string, out var result))
  26. return result;
  27. return null;
  28. }
  29. public override DateTime GetValue(DateTime? value)
  30. {
  31. return value ?? Default;
  32. }
  33. }
  34. }