From 0ab07e853603bb4ca9775d0b65415ee32b6eac08 Mon Sep 17 00:00:00 2001 From: denglihong2007 <2639367181@qq.com> Date: Thu, 13 Mar 2025 23:16:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E7=BB=88=E5=88=B0?= =?UTF-8?q?=E8=BD=A6=E6=98=BE=E7=A4=BA=E6=97=B6=E9=95=BF=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CRSim.Core/Models/Settings.cs | 4 ++++ CRSim.Core/Services/SettingsService.cs | 16 +++++++++------- .../ViewModels/Pages/SettingsPageViewModel.cs | 7 +++++++ CRSim/Views/Pages/SettingsPage.xaml | 19 ++++++++++++++++++- 4 files changed, 38 insertions(+), 8 deletions(-) diff --git a/CRSim.Core/Models/Settings.cs b/CRSim.Core/Models/Settings.cs index 62c45c6..24c055e 100644 --- a/CRSim.Core/Models/Settings.cs +++ b/CRSim.Core/Models/Settings.cs @@ -16,6 +16,10 @@ namespace CRSim.Core.Models /// public TimeSpan StopDisplayUntilDepartureDuration { get; set; } = TimeSpan.FromMinutes(1); + /// + /// 直到终到后多久停止显示 + /// + public TimeSpan StopDisplayFromArrivalDuration { get; set; } = TimeSpan.FromMinutes(10); public TimeSpan StopCheckInAdvanceDuration { get; set; } = TimeSpan.FromMinutes(2); public int MaxPages { get; set; } = 3; diff --git a/CRSim.Core/Services/SettingsService.cs b/CRSim.Core/Services/SettingsService.cs index 7d436a4..55285f3 100644 --- a/CRSim.Core/Services/SettingsService.cs +++ b/CRSim.Core/Services/SettingsService.cs @@ -19,6 +19,7 @@ namespace CRSim.Core.Services _key.SetValue("MaxPages", _settings.MaxPages); _key.SetValue("StopCheckInAdvanceDuration", (int)_settings.StopCheckInAdvanceDuration.TotalMinutes); _key.SetValue("StopDisplayUntilDepartureDuration", (int)_settings.StopDisplayUntilDepartureDuration.TotalMinutes); + _key.SetValue("StopDisplayFromArrivalDuration", (int)_settings.StopDisplayFromArrivalDuration.TotalMinutes); _key.SetValue("PassingCheckInAdvanceDuration", (int)_settings.PassingCheckInAdvanceDuration.TotalMinutes); _key.SetValue("DepartureCheckInAdvanceDuration", (int)_settings.DepartureCheckInAdvanceDuration.TotalMinutes); } @@ -34,13 +35,14 @@ namespace CRSim.Core.Services else { _settings = new Settings(); - _settings.TimeOffset = TimeSpan.FromMinutes((int)_key.GetValue("TimeOffset")); - _settings.SwitchPageSeconds = (int)_key.GetValue("SwitchPageSeconds"); - _settings.MaxPages = (int)_key.GetValue("MaxPages"); - _settings.StopCheckInAdvanceDuration = TimeSpan.FromMinutes((int)_key.GetValue("StopCheckInAdvanceDuration")); - _settings.StopDisplayUntilDepartureDuration = TimeSpan.FromMinutes((int)_key.GetValue("StopDisplayUntilDepartureDuration")); - _settings.PassingCheckInAdvanceDuration = TimeSpan.FromMinutes((int)_key.GetValue("PassingCheckInAdvanceDuration")); - _settings.DepartureCheckInAdvanceDuration = TimeSpan.FromMinutes((int)_key.GetValue("DepartureCheckInAdvanceDuration")); + if (_key.GetValue("TimeOffset") != null) _settings.TimeOffset = TimeSpan.FromMinutes((int)_key.GetValue("TimeOffset")); + if (_key.GetValue("SwitchPageSeconds") != null) _settings.SwitchPageSeconds = (int)_key.GetValue("SwitchPageSeconds"); + if (_key.GetValue("MaxPages") != null) _settings.MaxPages = (int)_key.GetValue("MaxPages"); + if (_key.GetValue("StopCheckInAdvanceDuration") != null) _settings.StopCheckInAdvanceDuration = TimeSpan.FromMinutes((int)_key.GetValue("StopCheckInAdvanceDuration")); + if (_key.GetValue("StopDisplayUntilDepartureDuration") != null) _settings.StopDisplayUntilDepartureDuration = TimeSpan.FromMinutes((int)_key.GetValue("StopDisplayUntilDepartureDuration")); + if (_key.GetValue("StopDisplayFromArrivalDuration") != null) _settings.StopDisplayFromArrivalDuration = TimeSpan.FromMinutes((int)_key.GetValue("StopDisplayFromArrivalDuration")); + 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")); } } diff --git a/CRSim/ViewModels/Pages/SettingsPageViewModel.cs b/CRSim/ViewModels/Pages/SettingsPageViewModel.cs index 70a16a8..a034f89 100644 --- a/CRSim/ViewModels/Pages/SettingsPageViewModel.cs +++ b/CRSim/ViewModels/Pages/SettingsPageViewModel.cs @@ -20,6 +20,8 @@ [ObservableProperty] public string _stopDisplayUntilDepartureDuration; [ObservableProperty] + public string _stopDisplayFromArrivalDuration; + [ObservableProperty] public string _stopCheckInAdvanceDuration; [ObservableProperty] public string _maxPages; @@ -44,6 +46,7 @@ DepartureCheckInAdvanceDuration = _settings.DepartureCheckInAdvanceDuration.TotalMinutes.ToString(); PassingCheckInAdvanceDuration = _settings.PassingCheckInAdvanceDuration.TotalMinutes.ToString(); StopDisplayUntilDepartureDuration = _settings.StopDisplayUntilDepartureDuration.TotalMinutes.ToString(); + StopDisplayFromArrivalDuration = _settings.StopDisplayFromArrivalDuration.TotalMinutes.ToString(); StopCheckInAdvanceDuration = _settings.StopCheckInAdvanceDuration.TotalMinutes.ToString(); MaxPages = _settings.MaxPages.ToString(); SwitchPageSeconds = _settings.SwitchPageSeconds.ToString(); @@ -68,6 +71,10 @@ { _settings.StopDisplayUntilDepartureDuration = TimeSpan.FromMinutes(l); } + if (int.TryParse(StopDisplayFromArrivalDuration, out int p) && p >= 0) + { + _settings.StopDisplayFromArrivalDuration = TimeSpan.FromMinutes(p); + } if (int.TryParse(StopCheckInAdvanceDuration, out int m) && m >= 0) { _settings.StopCheckInAdvanceDuration = TimeSpan.FromMinutes(m); diff --git a/CRSim/Views/Pages/SettingsPage.xaml b/CRSim/Views/Pages/SettingsPage.xaml index 5414e17..9f3b26c 100644 --- a/CRSim/Views/Pages/SettingsPage.xaml +++ b/CRSim/Views/Pages/SettingsPage.xaml @@ -242,7 +242,7 @@ Grid.Column="3"/> - + @@ -259,6 +259,23 @@ Grid.Column="3"/> + + + + + + + + + + + + + +