diff --git a/src/ClaudeDo.Ui/Converters/DateOnlyToDateTimeConverter.cs b/src/ClaudeDo.Ui/Converters/DateOnlyToDateTimeConverter.cs new file mode 100644 index 0000000..fd8a875 --- /dev/null +++ b/src/ClaudeDo.Ui/Converters/DateOnlyToDateTimeConverter.cs @@ -0,0 +1,23 @@ +using System.Globalization; +using Avalonia.Data.Converters; + +namespace ClaudeDo.Ui.Converters; + +public sealed class DateOnlyToDateTimeConverter : IValueConverter +{ + public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) + { + if (value is DateOnly d) + return d.ToDateTime(TimeOnly.MinValue); + return null; + } + + public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) + { + if (value is DateTime dt) + return DateOnly.FromDateTime(dt); + if (value is DateTimeOffset dto) + return DateOnly.FromDateTime(dto.LocalDateTime); + return DateOnly.FromDateTime(DateTime.Today); + } +} diff --git a/src/ClaudeDo.Ui/Converters/TimeSpanToHhmmConverter.cs b/src/ClaudeDo.Ui/Converters/TimeSpanToHhmmConverter.cs new file mode 100644 index 0000000..d38fa93 --- /dev/null +++ b/src/ClaudeDo.Ui/Converters/TimeSpanToHhmmConverter.cs @@ -0,0 +1,21 @@ +using System.Globalization; +using Avalonia.Data.Converters; + +namespace ClaudeDo.Ui.Converters; + +public sealed class TimeSpanToHhmmConverter : IValueConverter +{ + public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) => + value is TimeSpan t ? $"{t.Hours:00}:{t.Minutes:00}" : "07:00"; + + public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) + { + if (value is not string s) return new TimeSpan(7, 0, 0); + var parts = s.Split(':'); + if (parts.Length == 2 && + int.TryParse(parts[0], out var h) && h is >= 0 and <= 23 && + int.TryParse(parts[1], out var m) && m is >= 0 and <= 59) + return new TimeSpan(h, m, 0); + return new TimeSpan(7, 0, 0); + } +} diff --git a/src/ClaudeDo.Ui/Views/Modals/SettingsModalView.axaml b/src/ClaudeDo.Ui/Views/Modals/SettingsModalView.axaml index 9e474cc..916de42 100644 --- a/src/ClaudeDo.Ui/Views/Modals/SettingsModalView.axaml +++ b/src/ClaudeDo.Ui/Views/Modals/SettingsModalView.axaml @@ -1,8 +1,10 @@ + + + + + -