From 567adeb2b89d86cd170b14398992b31723087551 Mon Sep 17 00:00:00 2001 From: denglihong2007 <98096191+denglihong2007@users.noreply.github.com> Date: Thu, 1 May 2025 21:31:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20#113=20=E6=B7=BB=E5=8A=A0=E4=BB=85?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E5=BD=93=E6=97=A5=E8=BD=A6=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CRSim.Core/Models/Settings.cs | 1 + CRSim.Core/Services/SettingsService.cs | 2 ++ .../ChengduMetro/PlatformScreenViewModel.cs | 10 ++++++++-- .../ViewModels/ScreenViewModel.cs | 5 +++++ .../XuzhouMetro/PlatformScreenViewModel.cs | 10 ++++++++-- CRSim/ViewModels/Pages/SettingsPageViewModel.cs | 4 ++++ CRSim/Views/Pages/SettingsPage.xaml | 16 ++++++++++++++-- 7 files changed, 42 insertions(+), 6 deletions(-) diff --git a/CRSim.Core/Models/Settings.cs b/CRSim.Core/Models/Settings.cs index bdc0cb9..5007ca0 100644 --- a/CRSim.Core/Models/Settings.cs +++ b/CRSim.Core/Models/Settings.cs @@ -25,5 +25,6 @@ namespace CRSim.Core.Models public int MaxPages { get; set; } = 3; public int SwitchPageSeconds { get; set; } = 20; public string UserKey { get; set; } = ""; + public bool LoadTodayOnly { get; set; } = false; } } diff --git a/CRSim.Core/Services/SettingsService.cs b/CRSim.Core/Services/SettingsService.cs index aa887e8..c4d1655 100644 --- a/CRSim.Core/Services/SettingsService.cs +++ b/CRSim.Core/Services/SettingsService.cs @@ -23,6 +23,7 @@ namespace CRSim.Core.Services _key.SetValue("PassingCheckInAdvanceDuration", (int)_settings.PassingCheckInAdvanceDuration.TotalMinutes); _key.SetValue("DepartureCheckInAdvanceDuration", (int)_settings.DepartureCheckInAdvanceDuration.TotalMinutes); _key.SetValue("UserKey", _settings.UserKey); + _key.SetValue("LoadTodayOnly", _settings.LoadTodayOnly); } private void LoadSettings() { @@ -45,6 +46,7 @@ namespace CRSim.Core.Services if (_key.GetValue("PassingCheckInAdvanceDuration") != null) _settings.PassingCheckInAdvanceDuration = TimeSpan.FromMinutes((int)_key.GetValue("PassingCheckInAdvanceDuration")); if (_key.GetValue("DepartureCheckInAdvanceDuration") != null) _settings.DepartureCheckInAdvanceDuration = TimeSpan.FromMinutes((int)_key.GetValue("DepartureCheckInAdvanceDuration")); if (_key.GetValue("UserKey") != null) _settings.UserKey = (string)_key.GetValue("UserKey"); + if (_key.GetValue("LoadTodayOnly") != null) _settings.LoadTodayOnly = bool.Parse((string)_key.GetValue("LoadTodayOnly")); } } diff --git a/CRSim.ScreenSimulator/ViewModels/ChengduMetro/PlatformScreenViewModel.cs b/CRSim.ScreenSimulator/ViewModels/ChengduMetro/PlatformScreenViewModel.cs index 03b3fef..15d3e35 100644 --- a/CRSim.ScreenSimulator/ViewModels/ChengduMetro/PlatformScreenViewModel.cs +++ b/CRSim.ScreenSimulator/ViewModels/ChengduMetro/PlatformScreenViewModel.cs @@ -2,11 +2,13 @@ using CRSim.Core.Models; using CRSim.Core.Services; using CRSim.ScreenSimulator.Models; +using System.Runtime; namespace CRSim.ScreenSimulator.ViewModels.ChengduMetro { public partial class PlatformScreenViewModel : ObservableObject { private readonly ITimeService _timeService; + public readonly Settings _settings; [ObservableProperty] private DateTime _currentTime = new(); [ObservableProperty] @@ -19,9 +21,10 @@ namespace CRSim.ScreenSimulator.ViewModels.ChengduMetro private Uri _video = new("Assets\\Advertisement-1.mp4", UriKind.Relative); public List TrainInfos { get; set; } = []; - public PlatformScreenViewModel(ITimeService timeService) + public PlatformScreenViewModel(ITimeService timeService, ISettingsService settingsService) { _timeService = timeService; + _settings = settingsService.GetSettings(); timeService.OneSecondElapsed += RefreshDisplay; } public void LoadData(Station station,string _ticketCheck,string platform) @@ -33,7 +36,10 @@ namespace CRSim.ScreenSimulator.ViewModels.ChengduMetro { var now = _timeService.GetDateTimeNow(); var today = now.Date; - + if (_settings.LoadTodayOnly && today.Add((trainNumber.DepartureTime ?? trainNumber.ArrivalTime)!.Value) < now) + { + continue; + } DateTime? AdjustTime(TimeSpan? time) => time.HasValue ? (today.Add(time.Value) > now ? today.Add(time.Value) : today.Add(time.Value).AddDays(1)) : null; diff --git a/CRSim.ScreenSimulator/ViewModels/ScreenViewModel.cs b/CRSim.ScreenSimulator/ViewModels/ScreenViewModel.cs index cc2b1ea..75c2975 100644 --- a/CRSim.ScreenSimulator/ViewModels/ScreenViewModel.cs +++ b/CRSim.ScreenSimulator/ViewModels/ScreenViewModel.cs @@ -97,6 +97,11 @@ namespace CRSim.ScreenSimulator.ViewModels var now = _timeService.GetDateTimeNow(); var today = now.Date; + if (_settings.LoadTodayOnly && today.Add((trainNumber.DepartureTime??trainNumber.ArrivalTime)!.Value) < now) + { + continue; + } + DateTime? AdjustTime(TimeSpan? time) => time.HasValue ? (today.Add(time.Value) > now ? today.Add(time.Value) : today.Add(time.Value).AddDays(1)) : null; diff --git a/CRSim.ScreenSimulator/ViewModels/XuzhouMetro/PlatformScreenViewModel.cs b/CRSim.ScreenSimulator/ViewModels/XuzhouMetro/PlatformScreenViewModel.cs index 82f9528..6587866 100644 --- a/CRSim.ScreenSimulator/ViewModels/XuzhouMetro/PlatformScreenViewModel.cs +++ b/CRSim.ScreenSimulator/ViewModels/XuzhouMetro/PlatformScreenViewModel.cs @@ -2,11 +2,13 @@ using CRSim.Core.Models; using CRSim.Core.Services; using CRSim.ScreenSimulator.Models; +using System.Runtime; namespace CRSim.ScreenSimulator.ViewModels.XuzhouMetro { public partial class PlatformScreenViewModel : ObservableObject { private readonly ITimeService _timeService; + public readonly Settings _settings; [ObservableProperty] private DateTime _currentTime = new(); [ObservableProperty] @@ -19,9 +21,10 @@ namespace CRSim.ScreenSimulator.ViewModels.XuzhouMetro private Uri _video = new("Assets\\Advertisement-2.mp4", UriKind.Relative); public List TrainInfos { get; set; } = []; - public PlatformScreenViewModel(ITimeService timeService) + public PlatformScreenViewModel(ITimeService timeService, ISettingsService settingsService) { _timeService = timeService; + _settings = settingsService.GetSettings(); timeService.OneSecondElapsed += RefreshDisplay; } public void LoadData(Station station,string _ticketCheck,string platform) @@ -33,7 +36,10 @@ namespace CRSim.ScreenSimulator.ViewModels.XuzhouMetro { var now = _timeService.GetDateTimeNow(); var today = now.Date; - + if (_settings.LoadTodayOnly && today.Add((trainNumber.DepartureTime ?? trainNumber.ArrivalTime)!.Value) < now) + { + continue; + } DateTime? AdjustTime(TimeSpan? time) => time.HasValue ? (today.Add(time.Value) > now ? today.Add(time.Value) : today.Add(time.Value).AddDays(1)) : null; diff --git a/CRSim/ViewModels/Pages/SettingsPageViewModel.cs b/CRSim/ViewModels/Pages/SettingsPageViewModel.cs index 7860a0d..7775f98 100644 --- a/CRSim/ViewModels/Pages/SettingsPageViewModel.cs +++ b/CRSim/ViewModels/Pages/SettingsPageViewModel.cs @@ -29,6 +29,8 @@ public string _switchPageSeconds; [ObservableProperty] public string _userKey; + [ObservableProperty] + public bool _loadTodayOnly; #endregion public SettingsPageViewModel(ISettingsService settingsService, IDatabaseService databaseService, IDialogService dialogService) { @@ -53,6 +55,7 @@ MaxPages = _settings.MaxPages.ToString(); SwitchPageSeconds = _settings.SwitchPageSeconds.ToString(); UserKey = _settings.UserKey; + LoadTodayOnly = _settings.LoadTodayOnly; } [RelayCommand] @@ -67,6 +70,7 @@ UpdateSettings(MaxPages, false, value => _settings.MaxPages = value); UpdateSettings(SwitchPageSeconds, false, value => _settings.SwitchPageSeconds = value); _settings.UserKey = UserKey; + _settings.LoadTodayOnly = LoadTodayOnly; _settingsService.SaveSettings(); } private void UpdateSettings(string input,bool allowNegative, Action updateAction) diff --git a/CRSim/Views/Pages/SettingsPage.xaml b/CRSim/Views/Pages/SettingsPage.xaml index 82a5ae0..7abc457 100644 --- a/CRSim/Views/Pages/SettingsPage.xaml +++ b/CRSim/Views/Pages/SettingsPage.xaml @@ -150,7 +150,7 @@ - 设置最大页数、切换时长 + 设置最大页数、切换时长等 @@ -158,6 +158,18 @@ + + + + + + + + + + + @@ -208,7 +220,7 @@ Text="" FontSize="20"/> - + 设置检票时长、停检时间等