initial commit
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
using System;
|
||||
using System.CodeDom.Compiler;
|
||||
using System.Collections;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using System.Windows.Markup;
|
||||
using System.Windows.Media;
|
||||
using Microsoft.Win32;
|
||||
using Wpf.Ui.Controls;
|
||||
|
||||
namespace Crysome.Server.View;
|
||||
|
||||
public class LanguageWindow : FluentWindow, IComponentConnector
|
||||
{
|
||||
private static readonly string SavedLangPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "language.dat");
|
||||
|
||||
internal TitleBar TitleBarControl;
|
||||
|
||||
internal TextBlock SelectLabel;
|
||||
|
||||
internal ComboBox LanguageComboBox;
|
||||
|
||||
internal Button ContinueButton;
|
||||
|
||||
private bool _contentLoaded;
|
||||
|
||||
public string SelectedCultureTag { get; private set; } = "en";
|
||||
|
||||
public LanguageWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
ApplyBackdrop();
|
||||
PreSelectSavedLanguage();
|
||||
}
|
||||
|
||||
private void PreSelectSavedLanguage()
|
||||
{
|
||||
string text = LoadSavedLanguage();
|
||||
foreach (ComboBoxItem item in (IEnumerable)LanguageComboBox.Items)
|
||||
{
|
||||
if (item.Tag as string == text)
|
||||
{
|
||||
LanguageComboBox.SelectedItem = item;
|
||||
return;
|
||||
}
|
||||
}
|
||||
LanguageComboBox.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
private static string LoadSavedLanguage()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (File.Exists(SavedLangPath))
|
||||
{
|
||||
string text = File.ReadAllText(SavedLangPath)?.Trim();
|
||||
if (!string.IsNullOrEmpty(text))
|
||||
{
|
||||
return text;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
return "en";
|
||||
}
|
||||
|
||||
private void SaveLanguage(string tag)
|
||||
{
|
||||
try
|
||||
{
|
||||
File.WriteAllText(SavedLangPath, tag);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private void ContinueButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (LanguageComboBox.SelectedItem is ComboBoxItem { Tag: string tag })
|
||||
{
|
||||
SelectedCultureTag = tag;
|
||||
SaveLanguage(tag);
|
||||
}
|
||||
((Window)this).DialogResult = true;
|
||||
((Window)this).Close();
|
||||
}
|
||||
|
||||
private void ApplyBackdrop()
|
||||
{
|
||||
if (IsWindows11OrNewer())
|
||||
{
|
||||
((FluentWindow)this).ExtendsContentIntoTitleBar = true;
|
||||
((FluentWindow)this).WindowBackdropType = (WindowBackdropType)2;
|
||||
}
|
||||
else
|
||||
{
|
||||
((Control)this).Background = new SolidColorBrush(Color.FromRgb(32, 32, 32));
|
||||
}
|
||||
}
|
||||
|
||||
private static bool IsWindows11OrNewer()
|
||||
{
|
||||
try
|
||||
{
|
||||
using RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
|
||||
if (registryKey?.GetValue("CurrentBuild") is string s && int.TryParse(s, out var result))
|
||||
{
|
||||
return result >= 22000;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
[DebuggerNonUserCode]
|
||||
[GeneratedCode("PresentationBuildTasks", "9.0.14.0")]
|
||||
public void InitializeComponent()
|
||||
{
|
||||
if (!_contentLoaded)
|
||||
{
|
||||
_contentLoaded = true;
|
||||
Uri resourceLocator = new Uri("/Crysome.Server;component/view/languagewindow.xaml", UriKind.Relative);
|
||||
Application.LoadComponent(this, resourceLocator);
|
||||
}
|
||||
}
|
||||
|
||||
[DebuggerNonUserCode]
|
||||
[GeneratedCode("PresentationBuildTasks", "9.0.14.0")]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
void IComponentConnector.Connect(int connectionId, object target)
|
||||
{
|
||||
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0026: Expected O, but got Unknown
|
||||
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_004d: Expected O, but got Unknown
|
||||
switch (connectionId)
|
||||
{
|
||||
case 1:
|
||||
TitleBarControl = (TitleBar)target;
|
||||
break;
|
||||
case 2:
|
||||
SelectLabel = (TextBlock)target;
|
||||
break;
|
||||
case 3:
|
||||
LanguageComboBox = (ComboBox)target;
|
||||
break;
|
||||
case 4:
|
||||
ContinueButton = (Button)target;
|
||||
((ButtonBase)(object)ContinueButton).Click += ContinueButton_Click;
|
||||
break;
|
||||
default:
|
||||
_contentLoaded = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user