feat: rename item mode to position

This commit is contained in:
rabbitism
2024-01-08 23:37:20 +08:00
parent 22b5dafb8e
commit 21a3eba728
5 changed files with 28 additions and 28 deletions

View File

@@ -153,7 +153,7 @@
<u:TimelineItem <u:TimelineItem
Content="Step 2" Content="Step 2"
Header="Start" Header="Start"
Mode="Right" Position="Right"
Type="Ongoing" Type="Ongoing"
Time="2024-01-04 22:32:58"/> Time="2024-01-04 22:32:58"/>
<u:TimelineItem <u:TimelineItem
@@ -164,7 +164,7 @@
<u:TimelineItem <u:TimelineItem
Content="Step 4" Content="Step 4"
Header="Finished" Header="Finished"
Mode="Right" Position="Right"
Type="Success" Type="Success"
Time="2024-01-05 00:27:44"/> Time="2024-01-05 00:27:44"/>
</u:Timeline> </u:Timeline>

View File

@@ -59,27 +59,27 @@
<u:TimelineItem <u:TimelineItem
Content="Step 1" Content="Step 1"
Header="第一步" Header="第一步"
Mode="Left" Position="Left"
Type="Default" /> Type="Default" />
<u:TimelineItem <u:TimelineItem
Content="Step 2" Content="Step 2"
Header="第二步" Header="第二步"
Mode="Right" Position="Right"
Type="Success" /> Type="Success" />
<u:TimelineItem <u:TimelineItem
Content="Step 3" Content="Step 3"
Header="第三步" Header="第三步"
Mode="Separate" Position="Separate"
Type="Warning" /> Type="Warning" />
<u:TimelineItem <u:TimelineItem
Content="Step 4" Content="Step 4"
Header="第四步" Header="第四步"
Mode="Separate" Position="Separate"
Type="Ongoing" /> Type="Ongoing" />
<u:TimelineItem <u:TimelineItem
Content="Step 5" Content="Step 5"
Header="第五步" Header="第五步"
Mode="Separate" Position="Separate"
TimeFormat="yyyy-MM-dd" TimeFormat="yyyy-MM-dd"
Type="Error" /> Type="Error" />
</u:Timeline> </u:Timeline>

View File

@@ -176,21 +176,21 @@ public class Timeline: ItemsControl
{ {
foreach (var item in items) foreach (var item in items)
{ {
SetIfUnset(item, TimelineItem.ModeProperty, TimelineItemDisplayMode.Left); SetIfUnset(item, TimelineItem.PositionProperty, TimelineItemPosition.Left);
} }
} }
else if (Mode == TimelineDisplayMode.Right) else if (Mode == TimelineDisplayMode.Right)
{ {
foreach (var item in items) foreach (var item in items)
{ {
SetIfUnset(item, TimelineItem.ModeProperty, TimelineItemDisplayMode.Right); SetIfUnset(item, TimelineItem.PositionProperty, TimelineItemPosition.Right);
} }
} }
else if (Mode == TimelineDisplayMode.Center) else if (Mode == TimelineDisplayMode.Center)
{ {
foreach (var item in items) foreach (var item in items)
{ {
SetIfUnset(item, TimelineItem.ModeProperty, TimelineItemDisplayMode.Separate); SetIfUnset(item, TimelineItem.PositionProperty, TimelineItemPosition.Separate);
} }
} }
else if (Mode == TimelineDisplayMode.Alternate) else if (Mode == TimelineDisplayMode.Alternate)
@@ -200,11 +200,11 @@ public class Timeline: ItemsControl
{ {
if (left) if (left)
{ {
SetIfUnset(item, TimelineItem.ModeProperty, TimelineItemDisplayMode.Left); SetIfUnset(item, TimelineItem.PositionProperty, TimelineItemPosition.Left);
} }
else else
{ {
SetIfUnset(item, TimelineItem.ModeProperty, TimelineItemDisplayMode.Right); SetIfUnset(item, TimelineItem.PositionProperty, TimelineItemPosition.Right);
} }
left = !left; left = !left;
} }

View File

@@ -14,7 +14,7 @@ public enum TimelineDisplayMode
/// Right means line is placed right to TimelineItem content. /// Right means line is placed right to TimelineItem content.
/// Separate means line is placed between TimelineItem content and time. /// Separate means line is placed between TimelineItem content and time.
/// </summary> /// </summary>
public enum TimelineItemDisplayMode public enum TimelineItemPosition
{ {
Left, Left,
Right, Right,

View File

@@ -62,13 +62,13 @@ public class TimelineItem: HeaderedContentControl
set => SetValue(TypeProperty, value); set => SetValue(TypeProperty, value);
} }
public static readonly StyledProperty<TimelineItemDisplayMode> ModeProperty = AvaloniaProperty.Register<TimelineItem, TimelineItemDisplayMode>( public static readonly StyledProperty<TimelineItemPosition> PositionProperty = AvaloniaProperty.Register<TimelineItem, TimelineItemPosition>(
nameof(Mode), defaultValue: TimelineItemDisplayMode.Right); nameof(Position), defaultValue: TimelineItemPosition.Right);
public TimelineItemDisplayMode Mode public TimelineItemPosition Position
{ {
get => GetValue(ModeProperty); get => GetValue(PositionProperty);
set => SetValue(ModeProperty, value); set => SetValue(PositionProperty, value);
} }
public static readonly DirectProperty<TimelineItem, double> LeftWidthProperty = AvaloniaProperty.RegisterDirect<TimelineItem, double>( public static readonly DirectProperty<TimelineItem, double> LeftWidthProperty = AvaloniaProperty.RegisterDirect<TimelineItem, double>(
@@ -119,20 +119,20 @@ public class TimelineItem: HeaderedContentControl
static TimelineItem() static TimelineItem()
{ {
IconProperty.Changed.AddClassHandler<TimelineItem, object?>((item, args) => { item.OnIconChanged(args); }); IconProperty.Changed.AddClassHandler<TimelineItem, object?>((item, args) => { item.OnIconChanged(args); });
ModeProperty.Changed.AddClassHandler<TimelineItem, TimelineItemDisplayMode>((item, args) => { item.OnModeChanged(args); }); PositionProperty.Changed.AddClassHandler<TimelineItem, TimelineItemPosition>((item, args) => { item.OnModeChanged(args); });
AffectsMeasure<TimelineItem>(LeftWidthProperty, RightWidthProperty, IconWidthProperty); AffectsMeasure<TimelineItem>(LeftWidthProperty, RightWidthProperty, IconWidthProperty);
} }
private void OnModeChanged(AvaloniaPropertyChangedEventArgs<TimelineItemDisplayMode> args) private void OnModeChanged(AvaloniaPropertyChangedEventArgs<TimelineItemPosition> args)
{ {
SetMode(args.NewValue.Value); SetMode(args.NewValue.Value);
} }
private void SetMode(TimelineItemDisplayMode mode) private void SetMode(TimelineItemPosition mode)
{ {
PseudoClasses.Set(PC_AllLeft, mode == TimelineItemDisplayMode.Left); PseudoClasses.Set(PC_AllLeft, mode == TimelineItemPosition.Left);
PseudoClasses.Set(PC_AllRight, mode == TimelineItemDisplayMode.Right); PseudoClasses.Set(PC_AllRight, mode == TimelineItemPosition.Right);
PseudoClasses.Set(PC_Separate, mode == TimelineItemDisplayMode.Separate); PseudoClasses.Set(PC_Separate, mode == TimelineItemPosition.Separate);
} }
protected override void OnApplyTemplate(TemplateAppliedEventArgs e) protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
@@ -144,7 +144,7 @@ public class TimelineItem: HeaderedContentControl
_contentPresenter = e.NameScope.Find<ContentPresenter>(PART_Content); _contentPresenter = e.NameScope.Find<ContentPresenter>(PART_Content);
_timePresenter = e.NameScope.Find<TextBlock>(PART_Time); _timePresenter = e.NameScope.Find<TextBlock>(PART_Time);
PseudoClasses.Set(PC_EmptyIcon, Icon is null); PseudoClasses.Set(PC_EmptyIcon, Icon is null);
SetMode(Mode); SetMode(Position);
} }
private void OnIconChanged(AvaloniaPropertyChangedEventArgs<object?> args) private void OnIconChanged(AvaloniaPropertyChangedEventArgs<object?> args)
@@ -166,17 +166,17 @@ public class TimelineItem: HeaderedContentControl
double content = _contentPresenter?.DesiredSize.Width ?? 0; double content = _contentPresenter?.DesiredSize.Width ?? 0;
double time = _timePresenter?.DesiredSize.Width ?? 0; double time = _timePresenter?.DesiredSize.Width ?? 0;
double max = Math.Max(header, content); double max = Math.Max(header, content);
if (Mode == TimelineItemDisplayMode.Left) if (Position == TimelineItemPosition.Left)
{ {
max = Math.Max(max, time); max = Math.Max(max, time);
return (0, icon, max); return (0, icon, max);
} }
if (Mode == TimelineItemDisplayMode.Right) if (Position == TimelineItemPosition.Right)
{ {
max = Math.Max(max, time); max = Math.Max(max, time);
return (max , icon, 0); return (max , icon, 0);
} }
if (Mode == TimelineItemDisplayMode.Separate) if (Position == TimelineItemPosition.Separate)
{ {
return (time, icon, max); return (time, icon, max);
} }