feat: 添加列车已到达状态

This commit is contained in:
denglihong2007
2025-04-18 23:39:34 +08:00
parent 8949edebdd
commit 4b3fd352b3
4 changed files with 22 additions and 15 deletions

View File

@@ -19,6 +19,10 @@ namespace CRSim.ScreenSimulator.Converters
var serviceProvider = (IServiceProvider)Application.Current.Resources["ServiceProvider"];
_timeService = serviceProvider.GetRequiredService<ITimeService>();
_settings = serviceProvider.GetRequiredService<ISettingsService>().GetSettings();
if (values[0] != null && values[1] == null)
{
return WaitingColor;
}
if (values[1] is DateTime departureTime && departureTime !=new DateTime())
{
if (values[0] is DateTime)

View File

@@ -11,6 +11,9 @@ namespace CRSim.ScreenSimulator.Converters
{
private ITimeService _timeService;
private Settings _settings;
public string DisplayMode { get; set; } = "Normal";
public string ArrivedText { get; set; } = "列车已到达";
public string ArrivingText { get; set; } = "正点";
public string WaitingText { get; set; } = "候车";
public string CheckInText { get; set; } = "正在检票";
public string StopCheckInText { get; set; } = "停止检票";
@@ -19,6 +22,13 @@ namespace CRSim.ScreenSimulator.Converters
var serviceProvider = (IServiceProvider)Application.Current.Resources["ServiceProvider"];
_timeService = serviceProvider.GetRequiredService<ITimeService>();
_settings = serviceProvider.GetRequiredService<ISettingsService>().GetSettings();
if (DisplayMode == "Arrive" || values[1] == null)
{
if (values[0] is DateTime arriveTime)
{
return _timeService.GetDateTimeNow() > arriveTime ? ArrivedText : ArrivingText;
}
}
if (values[1] is DateTime departureTime && departureTime != new DateTime())
{
if (values[0] is DateTime)

View File

@@ -33,7 +33,6 @@ namespace CRSim.ScreenSimulator.ViewModels.Ankang
{
int pageCount = (int)Math.Ceiling((double)TrainInfo.Count / (ItemsPerPage * PageCount));
LeftScreen.Clear();
RightScreen.Clear();
int startIndex = CurrentPageIndex * ItemsPerPage * PageCount;
var leftItems = TrainInfo.Skip(startIndex).Take(ItemsPerPage).ToList();
while (leftItems.Count < ItemsPerPage) // Fill up with new object() if not enough items
@@ -44,18 +43,6 @@ namespace CRSim.ScreenSimulator.ViewModels.Ankang
{
LeftScreen.Add(item);
}
// Get the slice for the right screen (next 12)
var rightItems = TrainInfo.Skip(startIndex + ItemsPerPage).Take(ItemsPerPage).ToList();
while (rightItems.Count < ItemsPerPage) // Fill up with new object() if not enough items
{
rightItems.Add(new TrainInfo());
}
foreach (var item in rightItems)
{
RightScreen.Add(item);
}
CurrentPageIndex = CurrentPageIndex + 1 >= Math.Min(_settings.MaxPages, pageCount) ? 0 : CurrentPageIndex + 1;
});
}

View File

@@ -16,7 +16,7 @@
<converters1:EmptyToVisibilityConverter x:Key="EmptyToVisibilityConverter" />
<converters1:DateTimeToStringConverter x:Key="DateTimeToStringConverter" Format="HH:mm" />
<converters1:DateTimeToStringConverter x:Key="DateTimeToStringTimeConverter" Format="yyyy-MM-dd HH:mm:ss" />
<converters:TrainStateConverter x:Key="TrainStateConverter" WaitingText="正点"/>
<converters:TrainStateConverter x:Key="TrainStateConverter" WaitingText="正点" DisplayMode="Arrive"/>
<converters:TrainStateColorConverter x:Key="TrainStateColorConverter" WaitingColor="#76C1FF"/>
<Style TargetType="DataGridColumnHeader">
<Setter Property="Padding" Value="0"/>
@@ -130,6 +130,13 @@
</DataGridTextColumn>
<DataGridTextColumn MinWidth="180">
<DataGridTextColumn.Binding>
<MultiBinding Mode="OneWay" Converter="{StaticResource TrainStateConverter}">
<Binding Path="ArrivalTime" />
<Binding Path="DepartureTime" />
<Binding Path="State" />
</MultiBinding>
</DataGridTextColumn.Binding>
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Width="{Binding ActualWidth, RelativeSource={RelativeSource AncestorType=DataGridColumnHeader}}" Margin="0,0,0,1">
@@ -139,7 +146,6 @@
</DataGridTextColumn.HeaderTemplate>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock" BasedOn="{StaticResource CommonTextBlockStyle}">
<Setter Property="Text" Value="正点"/>
<Setter Property="Visibility" Value="{Binding TrainNumber,Converter={StaticResource EmptyToVisibilityConverter}}"/>
</Style>
</DataGridTextColumn.ElementStyle>