From bb15ff623e8f8876c9e2e35fa731a6c8122f6a9d Mon Sep 17 00:00:00 2001 From: wxl0430 <141288415+wxl0430@users.noreply.github.com> Date: Sun, 18 May 2025 20:57:12 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20#121=20=E6=B7=BB=E5=8A=A0=E5=8C=97?= =?UTF-8?q?=E4=BA=AC=E5=8D=97=E7=AB=99=E4=B8=BB=E8=A6=81=E7=9C=8B=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets/BeijingNan/PrimaryScreen.png | Bin 0 -> 56021 bytes .../CRSim.ScreenSimulator.csproj | 3 +- .../Converters/TrainStateColorConverter.cs | 11 ++ .../Models/StylesInfoData.json | 18 +- .../BeijingNan/PrimaryScreenViewModel.cs | 45 +++++ .../Views/BeijingNan/PrimaryScreenView.xaml | 165 ++++++++++++++++++ .../BeijingNan/PrimaryScreenView.xaml.cs | 26 +++ 7 files changed, 263 insertions(+), 5 deletions(-) create mode 100644 CRSim.ScreenSimulator/Assets/BeijingNan/PrimaryScreen.png create mode 100644 CRSim.ScreenSimulator/ViewModels/BeijingNan/PrimaryScreenViewModel.cs create mode 100644 CRSim.ScreenSimulator/Views/BeijingNan/PrimaryScreenView.xaml create mode 100644 CRSim.ScreenSimulator/Views/BeijingNan/PrimaryScreenView.xaml.cs diff --git a/CRSim.ScreenSimulator/Assets/BeijingNan/PrimaryScreen.png b/CRSim.ScreenSimulator/Assets/BeijingNan/PrimaryScreen.png new file mode 100644 index 0000000000000000000000000000000000000000..287bf34301ab5981f1f7927dff37f6b900a3c15a GIT binary patch literal 56021 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 XA@B1C1NVO3vH@T_*!e2kYxn;hb`yzs literal 0 HcmV?d00001 diff --git a/CRSim.ScreenSimulator/CRSim.ScreenSimulator.csproj b/CRSim.ScreenSimulator/CRSim.ScreenSimulator.csproj index d926b28..a36e0e1 100644 --- a/CRSim.ScreenSimulator/CRSim.ScreenSimulator.csproj +++ b/CRSim.ScreenSimulator/CRSim.ScreenSimulator.csproj @@ -94,6 +94,7 @@ + @@ -131,4 +132,4 @@ - + \ No newline at end of file diff --git a/CRSim.ScreenSimulator/Converters/TrainStateColorConverter.cs b/CRSim.ScreenSimulator/Converters/TrainStateColorConverter.cs index dc2f02a..6e11480 100644 --- a/CRSim.ScreenSimulator/Converters/TrainStateColorConverter.cs +++ b/CRSim.ScreenSimulator/Converters/TrainStateColorConverter.cs @@ -11,6 +11,14 @@ namespace CRSim.ScreenSimulator.Converters { private ITimeService _timeService; private Settings _settings; + public string DisplayMode { get; set; } = "Normal"; + + /* + Normal: 标准显示。 + Alternating_Row_Colors: 候车状态隔行异色显示(第4个参数控制行号)。 + */ + + public List WaitingColorList { get; set; } = new List { new(Colors.White), new(Colors.Yellow) }; public SolidColorBrush WaitingColor { get; set; } = new(Colors.White); public SolidColorBrush CheckingTicketsColor { get; set; } = new(Colors.LightGreen); public SolidColorBrush StopCheckingTicketsColor { get; set; } = new(Colors.Red); @@ -49,6 +57,9 @@ namespace CRSim.ScreenSimulator.Converters { return StopCheckingTicketsColor; } + if (DisplayMode == "Alternating_Row_Colors" && values.Length > 3 && values[3] is int rowNumber){ + return WaitingColorList[rowNumber % WaitingColorList.Count]; + } return WaitingColor; } return new SolidColorBrush(Colors.Transparent); diff --git a/CRSim.ScreenSimulator/Models/StylesInfoData.json b/CRSim.ScreenSimulator/Models/StylesInfoData.json index 5eb278d..0597164 100644 --- a/CRSim.ScreenSimulator/Models/StylesInfoData.json +++ b/CRSim.ScreenSimulator/Models/StylesInfoData.json @@ -64,7 +64,7 @@ "Author": "电排骨", "Type": "车站大屏", "Parameters": [ - "Region" + "Station" ] }, { @@ -135,7 +135,7 @@ "Author": "电排骨", "Type": "车站大屏", "Parameters": [ - "Region" + "Station" ] }, { @@ -181,7 +181,7 @@ "Author": "wxl0430", "Type": "车站大屏", "Parameters": [ - "Region" + "Station" ] }, { @@ -191,7 +191,7 @@ "Author": "wxl0430", "Type": "车站大屏", "Parameters": [ - "Region" + "Station" ] }, { @@ -321,5 +321,15 @@ "Location", "Text" ] + }, + { + "UniqueId": "BeijingNan.PrimaryScreen", + "Title": "北京南站主要看板", + "Region": "北京", + "Author": "wxl0430", + "Type": "车站大屏", + "Parameters": [ + "Station" + ] } ] \ No newline at end of file diff --git a/CRSim.ScreenSimulator/ViewModels/BeijingNan/PrimaryScreenViewModel.cs b/CRSim.ScreenSimulator/ViewModels/BeijingNan/PrimaryScreenViewModel.cs new file mode 100644 index 0000000..a019772 --- /dev/null +++ b/CRSim.ScreenSimulator/ViewModels/BeijingNan/PrimaryScreenViewModel.cs @@ -0,0 +1,45 @@ +using CRSim.Core.Models; +using CRSim.Core.Services; +using CRSim.ScreenSimulator.Models; +using System.Collections.ObjectModel; +using System.Windows; +namespace CRSim.ScreenSimulator.ViewModels.BeijingNan +{ + public class PrimaryScreenViewModel : ScreenViewModel + { + public ObservableCollection LeftScreen { get; private set; } = []; + public PrimaryScreenViewModel(ITimeService timeService, ISettingsService settingsService) + : base(timeService, settingsService) + { + ItemsPerPage = 10; + PageCount = 1; + StationType = StationType.Departure; + timeService.RefreshSecondsElapsed += RefreshDisplay; + Initialize(); + } + private async void Initialize() + { + await WaitForDataLoadAsync(); + RefreshDisplay(null,null); + } + private void RefreshDisplay(object? sender, EventArgs e) + { + Application.Current.Dispatcher.Invoke(() => + { + int pageCount = (int)Math.Ceiling((double)TrainInfo.Count / (ItemsPerPage * PageCount)); + LeftScreen.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 + { + leftItems.Add(new TrainInfo()); + } + foreach (var item in leftItems) + { + LeftScreen.Add(item); + } + CurrentPageIndex = CurrentPageIndex + 1 >= Math.Min(_settings.MaxPages, pageCount) ? 0 : CurrentPageIndex + 1; + }); + } + } +} diff --git a/CRSim.ScreenSimulator/Views/BeijingNan/PrimaryScreenView.xaml b/CRSim.ScreenSimulator/Views/BeijingNan/PrimaryScreenView.xaml new file mode 100644 index 0000000..677e25c --- /dev/null +++ b/CRSim.ScreenSimulator/Views/BeijingNan/PrimaryScreenView.xaml @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CRSim.ScreenSimulator/Views/BeijingNan/PrimaryScreenView.xaml.cs b/CRSim.ScreenSimulator/Views/BeijingNan/PrimaryScreenView.xaml.cs new file mode 100644 index 0000000..82e2f0f --- /dev/null +++ b/CRSim.ScreenSimulator/Views/BeijingNan/PrimaryScreenView.xaml.cs @@ -0,0 +1,26 @@ +using CRSim.ScreenSimulator.ViewModels.BeijingNan; +using CRSim.ScreenSimulator.Converters; +using System.Windows; +using System.Collections.Generic; +using System.Windows.Media; + +namespace CRSim.ScreenSimulator.Views.BeijingNan +{ + public partial class PrimaryScreenView : BaseScreenView + { + public PrimaryScreenViewModel ViewModel { get; } + public PrimaryScreenView(PrimaryScreenViewModel viewModel) + { + InitializeComponent(); + ViewModel = viewModel; + DataContext = viewModel; + + var trainStateColorConverter = (TrainStateColorConverter)Resources["TrainStateColorConverter"]; + trainStateColorConverter.WaitingColorList = new List + { + new SolidColorBrush(Colors.White), + new SolidColorBrush((Color)ColorConverter.ConvertFromString("#edd16f")) + }; + } + } +} From 51f3e1f183aa5cff53e349f7497b402d2d3a46cf Mon Sep 17 00:00:00 2001 From: denglihong2007 <98096191+denglihong2007@users.noreply.github.com> Date: Sun, 18 May 2025 22:10:57 +0800 Subject: [PATCH 2/2] =?UTF-8?q?chore:=20=E9=80=82=E9=85=8D=E6=9C=80?= =?UTF-8?q?=E6=96=B0commit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Converters/TrainStateColorConverter.cs | 4 +-- .../BeijingNan/PrimaryScreenViewModel.cs | 30 ------------------- .../Views/BeijingNan/PrimaryScreenView.xaml | 7 ++++- .../BeijingNan/PrimaryScreenView.xaml.cs | 12 -------- 4 files changed, 8 insertions(+), 45 deletions(-) diff --git a/CRSim.ScreenSimulator/Converters/TrainStateColorConverter.cs b/CRSim.ScreenSimulator/Converters/TrainStateColorConverter.cs index 6e11480..2c80362 100644 --- a/CRSim.ScreenSimulator/Converters/TrainStateColorConverter.cs +++ b/CRSim.ScreenSimulator/Converters/TrainStateColorConverter.cs @@ -18,11 +18,11 @@ namespace CRSim.ScreenSimulator.Converters Alternating_Row_Colors: 候车状态隔行异色显示(第4个参数控制行号)。 */ - public List WaitingColorList { get; set; } = new List { new(Colors.White), new(Colors.Yellow) }; + public List WaitingColorList { get; set; } = []; public SolidColorBrush WaitingColor { get; set; } = new(Colors.White); public SolidColorBrush CheckingTicketsColor { get; set; } = new(Colors.LightGreen); public SolidColorBrush StopCheckingTicketsColor { get; set; } = new(Colors.Red); - object IMultiValueConverter.Convert(object[] values, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) + object IMultiValueConverter.Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var serviceProvider = (IServiceProvider)Application.Current.Resources["ServiceProvider"]; _timeService = serviceProvider.GetRequiredService(); diff --git a/CRSim.ScreenSimulator/ViewModels/BeijingNan/PrimaryScreenViewModel.cs b/CRSim.ScreenSimulator/ViewModels/BeijingNan/PrimaryScreenViewModel.cs index a019772..821d463 100644 --- a/CRSim.ScreenSimulator/ViewModels/BeijingNan/PrimaryScreenViewModel.cs +++ b/CRSim.ScreenSimulator/ViewModels/BeijingNan/PrimaryScreenViewModel.cs @@ -1,45 +1,15 @@ using CRSim.Core.Models; using CRSim.Core.Services; -using CRSim.ScreenSimulator.Models; -using System.Collections.ObjectModel; -using System.Windows; namespace CRSim.ScreenSimulator.ViewModels.BeijingNan { public class PrimaryScreenViewModel : ScreenViewModel { - public ObservableCollection LeftScreen { get; private set; } = []; public PrimaryScreenViewModel(ITimeService timeService, ISettingsService settingsService) : base(timeService, settingsService) { ItemsPerPage = 10; PageCount = 1; StationType = StationType.Departure; - timeService.RefreshSecondsElapsed += RefreshDisplay; - Initialize(); - } - private async void Initialize() - { - await WaitForDataLoadAsync(); - RefreshDisplay(null,null); - } - private void RefreshDisplay(object? sender, EventArgs e) - { - Application.Current.Dispatcher.Invoke(() => - { - int pageCount = (int)Math.Ceiling((double)TrainInfo.Count / (ItemsPerPage * PageCount)); - LeftScreen.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 - { - leftItems.Add(new TrainInfo()); - } - foreach (var item in leftItems) - { - LeftScreen.Add(item); - } - CurrentPageIndex = CurrentPageIndex + 1 >= Math.Min(_settings.MaxPages, pageCount) ? 0 : CurrentPageIndex + 1; - }); } } } diff --git a/CRSim.ScreenSimulator/Views/BeijingNan/PrimaryScreenView.xaml b/CRSim.ScreenSimulator/Views/BeijingNan/PrimaryScreenView.xaml index 677e25c..a45ee01 100644 --- a/CRSim.ScreenSimulator/Views/BeijingNan/PrimaryScreenView.xaml +++ b/CRSim.ScreenSimulator/Views/BeijingNan/PrimaryScreenView.xaml @@ -15,7 +15,12 @@ - + + + + + +