From 8abe6d7f01616d8d63c6e9a3745401573da679b6 Mon Sep 17 00:00:00 2001 From: Zhe Fang Date: Fri, 15 Aug 2025 18:38:28 -0400 Subject: [PATCH] add settings port for adjusting fps and isfixedtimestep --- .../Package.appxmanifest | 2 +- .../BetterLyrics.WinUI3/App.xaml | 2 ++ .../Converter/FPSToTimeSpanConverter.cs | 26 +++++++++++++++++++ .../Models/Settings/AdvancedSettings.cs | 16 ++++++++++++ .../Models/Settings/AppSettings.cs | 1 + .../SettingsService/SettingsService.cs | 1 + .../Strings/en-US/Resources.resw | 6 +++++ .../Strings/ja-JP/Resources.resw | 6 +++++ .../Strings/ko-KR/Resources.resw | 6 +++++ .../Strings/zh-CN/Resources.resw | 6 +++++ .../Strings/zh-TW/Resources.resw | 6 +++++ .../LyricsRendererViewModel.Ctor.cs | 2 ++ .../LyricsRendererViewModel.cs | 3 +++ .../Views/SettingsPage.xaml | 13 ++++++++++ 14 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 BetterLyrics.WinUI3/BetterLyrics.WinUI3/Converter/FPSToTimeSpanConverter.cs create mode 100644 BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/Settings/AdvancedSettings.cs diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3 (Package)/Package.appxmanifest b/BetterLyrics.WinUI3/BetterLyrics.WinUI3 (Package)/Package.appxmanifest index b9d83ba..93d5c20 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3 (Package)/Package.appxmanifest +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3 (Package)/Package.appxmanifest @@ -12,7 +12,7 @@ + Version="1.0.52.0" /> diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/App.xaml b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/App.xaml index c133156..99c3653 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/App.xaml +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/App.xaml @@ -53,6 +53,8 @@ + + diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Converter/FPSToTimeSpanConverter.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Converter/FPSToTimeSpanConverter.cs new file mode 100644 index 0000000..7c8f698 --- /dev/null +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Converter/FPSToTimeSpanConverter.cs @@ -0,0 +1,26 @@ +using Microsoft.UI.Xaml.Data; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BetterLyrics.WinUI3.Converter +{ + public class FPSToTimeSpanConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, string language) + { + if (value is int fps) + { + return TimeSpan.FromSeconds(1.0 / fps); + } + return TimeSpan.FromSeconds(1.0 / 60); + } + + public object ConvertBack(object value, Type targetType, object parameter, string language) + { + throw new NotImplementedException(); + } + } +} diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/Settings/AdvancedSettings.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/Settings/AdvancedSettings.cs new file mode 100644 index 0000000..098559a --- /dev/null +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/Settings/AdvancedSettings.cs @@ -0,0 +1,16 @@ +using BetterLyrics.WinUI3.Enums; +using CommunityToolkit.Mvvm.ComponentModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BetterLyrics.WinUI3.Models.Settings +{ + public partial class AdvancedSettings : ObservableRecipient + { + [ObservableProperty][NotifyPropertyChangedRecipients] public partial bool IsFixedTimeStep { get; set; } = false; + [ObservableProperty][NotifyPropertyChangedRecipients] public partial int FPS { get; set; } = 60; + } +} diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/Settings/AppSettings.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/Settings/AppSettings.cs index 0c41444..3fe3a59 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/Settings/AppSettings.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/Settings/AppSettings.cs @@ -27,6 +27,7 @@ namespace BetterLyrics.WinUI3.Models.Settings [ObservableProperty][NotifyPropertyChangedRecipients] public partial TranslationSettings TranslationSettings { get; set; } = new TranslationSettings(); [ObservableProperty][NotifyPropertyChangedRecipients] public partial GeneralSettings GeneralSettings { get; set; } = new GeneralSettings(); [ObservableProperty][NotifyPropertyChangedRecipients] public partial MusicGallerySettings MusicGallerySettings { get; set; } = new MusicGallerySettings(); + [ObservableProperty][NotifyPropertyChangedRecipients] public partial AdvancedSettings AdvancedSettings { get; set; } = new AdvancedSettings(); [ObservableProperty][NotifyPropertyChangedRecipients] public partial FullyObservableCollection LocalMediaFolders { get; set; } = []; [ObservableProperty][NotifyPropertyChangedRecipients] public partial FullyObservableCollection MediaSourceProvidersInfo { get; set; } = []; diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/SettingsService/SettingsService.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/SettingsService/SettingsService.cs index c538fac..e17f6be 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/SettingsService/SettingsService.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/SettingsService/SettingsService.cs @@ -46,6 +46,7 @@ namespace BetterLyrics.WinUI3.Services.SettingsService AppSettings.TranslationSettings.PropertyChanged += AppSettings_PropertyChanged; AppSettings.GeneralSettings.PropertyChanged += AppSettings_PropertyChanged; AppSettings.MusicGallerySettings.PropertyChanged += AppSettings_PropertyChanged; + AppSettings.AdvancedSettings.PropertyChanged += AppSettings_PropertyChanged; AppSettings.MediaSourceProvidersInfo.CollectionChanged += AppSettings_CollectionChanged; AppSettings.MediaSourceProvidersInfo.ItemPropertyChanged += AppSettings_ItemPropertyChanged; diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/en-US/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/en-US/Resources.resw index 199cbc6..e9ba24b 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/en-US/Resources.resw +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/en-US/Resources.resw @@ -583,9 +583,15 @@ If you encounter any problems, please go to the Settings page, About tab, and vi Frequently asked questions + + Fixed time step rendering + Follow system + + Rendering frame rate + Open in new window diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ja-JP/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ja-JP/Resources.resw index e7779ac..adf6418 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ja-JP/Resources.resw +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ja-JP/Resources.resw @@ -583,9 +583,15 @@ よくある質問 + + 固定時間ステップレンダリング + システムをフォローします + + レンダリングフレームレート + 新しいウィンドウで開きます diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ko-KR/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ko-KR/Resources.resw index a549d10..6661de9 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ko-KR/Resources.resw +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ko-KR/Resources.resw @@ -583,9 +583,15 @@ 자주 묻는 질문 + + 고정 시간 단계 렌더링 + 시스템을 따르십시오 + + 렌더링 프레임 속도 + 새 창에서 열립니다 diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-CN/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-CN/Resources.resw index c5518f5..16ea5e6 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-CN/Resources.resw +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-CN/Resources.resw @@ -583,9 +583,15 @@ 常见问题与解答 + + 固定时间步长渲染 + 跟随系统 + + 渲染帧率 + 在新窗口中打开 diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-TW/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-TW/Resources.resw index 13649cd..faceef7 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-TW/Resources.resw +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-TW/Resources.resw @@ -583,9 +583,15 @@ 常見問題與解答 + + 固定時間步長渲染 + 跟隨系統 + + 渲染幀率 + 在新視窗中開啟 diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Ctor.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Ctor.cs index 1c22dbb..e96da87 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Ctor.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Ctor.cs @@ -35,6 +35,8 @@ namespace BetterLyrics.WinUI3.ViewModels.LyricsRendererViewModel _logger = Ioc.Default.GetRequiredService>(); + AppSettings = _settingsService.AppSettings; + _settingsService.AppSettings.MediaSourceProvidersInfo.ItemPropertyChanged += MediaSourceProvidersInfo_ItemPropertyChanged; _settingsService.AppSettings.LocalMediaFolders.CollectionChanged += LocalMediaFolders_CollectionChanged; _settingsService.AppSettings.LocalMediaFolders.ItemPropertyChanged += LocalMediaFolders_ItemPropertyChanged; diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.cs index 12005b4..7cfbe0c 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.cs @@ -33,6 +33,9 @@ namespace BetterLyrics.WinUI3.ViewModels.LyricsRendererViewModel { public partial class LyricsRendererViewModel : BaseViewModel { + [ObservableProperty] + public partial AppSettings AppSettings { get; set; } + private LyricsStyleSettings _lyricsStyleSettings; private LyricsEffectSettings _lyricsEffectSettings; diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Views/SettingsPage.xaml b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Views/SettingsPage.xaml index 694af7f..91a7d9f 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Views/SettingsPage.xaml +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Views/SettingsPage.xaml @@ -197,6 +197,19 @@ + + + + + + + +