mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-22 00:54:26 +08:00
91 lines
2.8 KiB
C#
91 lines
2.8 KiB
C#
|
|
using System;
|
||
|
|
using Avalonia.Controls;
|
||
|
|
using Avalonia.Interactivity;
|
||
|
|
using LanMontainDesktop.Services;
|
||
|
|
|
||
|
|
namespace LanMontainDesktop.Views.Components;
|
||
|
|
|
||
|
|
public partial class StudyEnvironmentWidgetSettingsWindow : UserControl
|
||
|
|
{
|
||
|
|
private readonly AppSettingsService _appSettingsService = new();
|
||
|
|
private readonly LocalizationService _localizationService = new();
|
||
|
|
private string _languageCode = "zh-CN";
|
||
|
|
private bool _suppressEvents;
|
||
|
|
|
||
|
|
public event EventHandler? SettingsChanged;
|
||
|
|
|
||
|
|
public StudyEnvironmentWidgetSettingsWindow()
|
||
|
|
{
|
||
|
|
InitializeComponent();
|
||
|
|
LoadState();
|
||
|
|
ApplyLocalization();
|
||
|
|
}
|
||
|
|
|
||
|
|
private void LoadState()
|
||
|
|
{
|
||
|
|
var snapshot = _appSettingsService.Load();
|
||
|
|
_languageCode = _localizationService.NormalizeLanguageCode(snapshot.LanguageCode);
|
||
|
|
|
||
|
|
var showDisplayDb = snapshot.StudyEnvironmentShowDisplayDb;
|
||
|
|
var showDbfs = snapshot.StudyEnvironmentShowDbfs;
|
||
|
|
if (!showDisplayDb && !showDbfs)
|
||
|
|
{
|
||
|
|
showDisplayDb = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
_suppressEvents = true;
|
||
|
|
ShowDisplayDbCheckBox.IsChecked = showDisplayDb;
|
||
|
|
ShowDbfsCheckBox.IsChecked = showDbfs;
|
||
|
|
_suppressEvents = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
private void ApplyLocalization()
|
||
|
|
{
|
||
|
|
TitleTextBlock.Text = L("study.environment.settings.title", "环境组件设置");
|
||
|
|
DescriptionTextBlock.Text = L(
|
||
|
|
"study.environment.settings.desc",
|
||
|
|
"配置右侧实时噪音值显示内容。");
|
||
|
|
ShowDisplayDbCheckBox.Content = L(
|
||
|
|
"study.environment.settings.show_display_db",
|
||
|
|
"显示 display dB");
|
||
|
|
ShowDbfsCheckBox.Content = L(
|
||
|
|
"study.environment.settings.show_dbfs",
|
||
|
|
"显示 dBFS");
|
||
|
|
HintTextBlock.Text = L(
|
||
|
|
"study.environment.settings.hint",
|
||
|
|
"至少启用一种显示方式。");
|
||
|
|
}
|
||
|
|
|
||
|
|
private void OnDisplayModeChanged(object? sender, RoutedEventArgs e)
|
||
|
|
{
|
||
|
|
_ = sender;
|
||
|
|
_ = e;
|
||
|
|
if (_suppressEvents)
|
||
|
|
{
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
var showDisplayDb = ShowDisplayDbCheckBox.IsChecked == true;
|
||
|
|
var showDbfs = ShowDbfsCheckBox.IsChecked == true;
|
||
|
|
if (!showDisplayDb && !showDbfs)
|
||
|
|
{
|
||
|
|
_suppressEvents = true;
|
||
|
|
ShowDisplayDbCheckBox.IsChecked = true;
|
||
|
|
_suppressEvents = false;
|
||
|
|
showDisplayDb = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
var snapshot = _appSettingsService.Load();
|
||
|
|
snapshot.StudyEnvironmentShowDisplayDb = showDisplayDb;
|
||
|
|
snapshot.StudyEnvironmentShowDbfs = showDbfs;
|
||
|
|
_appSettingsService.Save(snapshot);
|
||
|
|
|
||
|
|
SettingsChanged?.Invoke(this, EventArgs.Empty);
|
||
|
|
}
|
||
|
|
|
||
|
|
private string L(string key, string fallback)
|
||
|
|
{
|
||
|
|
return _localizationService.GetString(_languageCode, key, fallback);
|
||
|
|
}
|
||
|
|
}
|