using Microsoft.UI;
using Microsoft.UI.Windowing;
using Microsoft.UI.Xaml;
using Windows.Graphics;
using Windows.UI.ViewManagement;
using WinRT.Interop;
using XFEEliteDangerous.Desktop;
using XFEExtension.NetCore.WinUIHelper.Utilities.Helper;
namespace XFEEliteDangerous.Desktop;
public sealed partial class MainWindow : Window
{
private readonly UISettings settings = new();
public MainWindow()
{
InitializeComponent();
Title = DesktopContext.State.ServerName + " · " + DesktopContext.Role;
ExtendsContentIntoTitleBar = true;
AppWindow.TitleBar.PreferredHeightOption = TitleBarHeightOption.Tall;
AppWindow.TitleBar.ButtonBackgroundColor = Colors.Transparent;
AppWindow.TitleBar.ButtonInactiveBackgroundColor = Colors.Transparent;
var scale = Math.Max(GetDpiForWindow(WindowNative.GetWindowHandle(this)), 96) / 96d;
var work = DisplayArea.GetFromWindowId(AppWindow.Id, DisplayAreaFallback.Primary).WorkArea;
var width = Math.Min((int)(1280 * scale), Math.Max(1, work.Width - (int)(48 * scale)));
var height = Math.Min((int)(900 * scale), Math.Max(1, work.Height - (int)(48 * scale)));
AppWindow.MoveAndResize(new RectInt32(work.X + (work.Width - width) / 2, work.Y + (work.Height - height) / 2, width, height));
settings.ColorValuesChanged += Changed;
DesktopContext.State.PropertyChanged += StateChanged;
Closed += (_, _) => { settings.ColorValuesChanged -= Changed; DesktopContext.State.PropertyChanged -= StateChanged; };
}
private void Changed(UISettings sender, object args) => DispatcherQueue.TryEnqueue(() => AppThemeHelper.ChangeTheme(SystemProfile.Theme));
private void StateChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs args)
{
if (args.PropertyName is nameof(DesktopState.ServerName) or nameof(DesktopState.RoleLabel)) Title = DesktopContext.State.ServerName + " · " + DesktopContext.Role;
}
[System.Runtime.InteropServices.DllImport("user32.dll", ExactSpelling = true)]
private static extern uint GetDpiForWindow(nint hwnd);
}
using Microsoft.UI;
using Microsoft.UI.Windowing;
using Microsoft.UI.Xaml;
using Windows.Graphics;
using Windows.UI.ViewManagement;
using WinRT.Interop;
using XFEEliteDangerous.Desktop;
using XFEExtension.NetCore.WinUIHelper.Utilities.Helper;
namespace XFEEliteDangerous.Desktop;
public sealed partial class MainWindow : Window
{
private readonly UISettings settings = new();
public MainWindow()
{
InitializeComponent();
Title = DesktopContext.State.ServerName + " · " + DesktopContext.Role;
ExtendsContentIntoTitleBar = true;
AppWindow.TitleBar.PreferredHeightOption = TitleBarHeightOption.Tall;
AppWindow.TitleBar.ButtonBackgroundColor = Colors.Transparent;
AppWindow.TitleBar.ButtonInactiveBackgroundColor = Colors.Transparent;
var scale = Math.Max(GetDpiForWindow(WindowNative.GetWindowHandle(this)), 96) / 96d;
var work = DisplayArea.GetFromWindowId(AppWindow.Id, DisplayAreaFallback.Primary).WorkArea;
var width = Math.Min((int)(1280 * scale), Math.Max(1, work.Width - (int)(48 * scale)));
var height = Math.Min((int)(900 * scale), Math.Max(1, work.Height - (int)(48 * scale)));
AppWindow.MoveAndResize(new RectInt32(work.X + (work.Width - width) / 2, work.Y + (work.Height - height) / 2, width, height));
settings.ColorValuesChanged += Changed;
DesktopContext.State.PropertyChanged += StateChanged;
Closed += (_, _) => { settings.ColorValuesChanged -= Changed; DesktopContext.State.PropertyChanged -= StateChanged; };
}
private void Changed(UISettings sender, object args) => DispatcherQueue.TryEnqueue(() => AppThemeHelper.ChangeTheme(SystemProfile.Theme));
private void StateChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs args)
{
if (args.PropertyName is nameof(DesktopState.ServerName) or nameof(DesktopState.RoleLabel)) Title = DesktopContext.State.ServerName + " · " + DesktopContext.Role;
}
[System.Runtime.InteropServices.DllImport("user32.dll", ExactSpelling = true)]
private static extern uint GetDpiForWindow(nint hwnd);
}