diff --git a/src/Ursa.Themes.Semi/Controls/Timeline.axaml b/src/Ursa.Themes.Semi/Controls/Timeline.axaml index 63e311c..9397b3a 100644 --- a/src/Ursa.Themes.Semi/Controls/Timeline.axaml +++ b/src/Ursa.Themes.Semi/Controls/Timeline.axaml @@ -48,21 +48,16 @@ HorizontalAlignment="Center" VerticalAlignment="Top" Classes="start" - Fill="LightGray" /> + Fill="{DynamicResource TimelineLineBrush}" /> - - - - - - - + VerticalAlignment="Top" + Fill="{DynamicResource DefaultTimelineIconForeground}" /> + Fill="{DynamicResource TimelineLineBrush}" /> + Fill="{DynamicResource TimelineLineBrush}" /> + + + + + + diff --git a/src/Ursa.Themes.Semi/Themes/Dark/Timeline.axaml b/src/Ursa.Themes.Semi/Themes/Dark/Timeline.axaml new file mode 100644 index 0000000..47b44c7 --- /dev/null +++ b/src/Ursa.Themes.Semi/Themes/Dark/Timeline.axaml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/Ursa.Themes.Semi/Themes/Dark/_index.axaml b/src/Ursa.Themes.Semi/Themes/Dark/_index.axaml index 7a530cc..004d6a1 100644 --- a/src/Ursa.Themes.Semi/Themes/Dark/_index.axaml +++ b/src/Ursa.Themes.Semi/Themes/Dark/_index.axaml @@ -5,5 +5,6 @@ + diff --git a/src/Ursa.Themes.Semi/Themes/Light/Timeline.axaml b/src/Ursa.Themes.Semi/Themes/Light/Timeline.axaml index e879046..b5549db 100644 --- a/src/Ursa.Themes.Semi/Themes/Light/Timeline.axaml +++ b/src/Ursa.Themes.Semi/Themes/Light/Timeline.axaml @@ -5,4 +5,5 @@ + diff --git a/src/Ursa/Controls/Timeline/TimelineItem.cs b/src/Ursa/Controls/Timeline/TimelineItem.cs index 9ba9f9c..0958a31 100644 --- a/src/Ursa/Controls/Timeline/TimelineItem.cs +++ b/src/Ursa/Controls/Timeline/TimelineItem.cs @@ -8,7 +8,7 @@ using Avalonia.Media; namespace Ursa.Controls; -[PseudoClasses(PC_First, PC_Last, PC_Default, PC_Ongoing, PC_Success, PC_Warning, PC_Error)] +[PseudoClasses(PC_First, PC_Last, PC_Default, PC_Ongoing, PC_Success, PC_Warning, PC_Error, PC_None)] public class TimelineItem: ContentControl { private const string PC_First = ":first"; @@ -18,6 +18,7 @@ public class TimelineItem: ContentControl private const string PC_Success = ":success"; private const string PC_Warning = ":warning"; private const string PC_Error = ":error"; + private const string PC_None = ":none"; private static readonly IReadOnlyDictionary _itemTypeMapping = new Dictionary { @@ -81,6 +82,7 @@ public class TimelineItem: ContentControl static TimelineItem() { ItemTypeProperty.Changed.AddClassHandler((o, e) => { o.OnItemTypeChanged(e); }); + IconForegroundProperty.Changed.AddClassHandler((o, e) => { o.OnIconForegroundChanged(e); }); } private void OnItemTypeChanged(AvaloniaPropertyChangedEventArgs args) @@ -90,5 +92,10 @@ public class TimelineItem: ContentControl PseudoClasses.Set(_itemTypeMapping[oldValue], false); PseudoClasses.Set(_itemTypeMapping[newValue], true); } - + + private void OnIconForegroundChanged(AvaloniaPropertyChangedEventArgs args) + { + IBrush? newValue = args.GetOldValue(); + PseudoClasses.Set(PC_None, newValue is null); + } } \ No newline at end of file