feat: rename item mode to position
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user