using GZStudio.Contracts.Services; using GZStudio.Helpers; using GZStudio.ViewModels; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Input; using Microsoft.UI.Xaml.Media; using Windows.System; namespace GZStudio.Views; // TODO: Update NavigationViewItem titles and icons in ShellPage.xaml. public sealed partial class ShellPage : Page { public ShellViewModel ViewModel { get; } public ShellPage(ShellViewModel viewModel) { ViewModel = viewModel; InitializeComponent(); ViewModel.NavigationService.Frame = NavigationFrame; ViewModel.NavigationViewService.Initialize(NavigationViewControl); // TODO: Set the title bar icon by updating /Assets/WindowIcon.ico. // A custom title bar is required for full window theme and Mica support. // https://docs.microsoft.com/windows/apps/develop/title-bar?tabs=winui3#full-customization App.MainWindow.ExtendsContentIntoTitleBar = true; App.MainWindow.SetTitleBar(AppTitleBar); App.MainWindow.Activated += MainWindow_Activated; //AppTitleBarText.Text = "AppDisplayName".GetLocalized(); //AppTitleBar.Loaded += MyTitleBar_Loaded; } //private void MyTitleBar_Loaded(object sender, RoutedEventArgs e) //{ // // Parts get delay loaded. If you have the parts, make them visible. // VisualStateManager.GoToState(AppTitleBar, "SubtitleTextVisible", false); // VisualStateManager.GoToState(AppTitleBar, "HeaderVisible", false); // VisualStateManager.GoToState(AppTitleBar, "ContentVisible", false); // VisualStateManager.GoToState(AppTitleBar, "FooterVisible", false); // // Run layout so we re-calculate the drag regions. // AppTitleBar.InvalidateMeasure(); //} private void OnLoaded(object sender, Microsoft.UI.Xaml.RoutedEventArgs e) { TitleBarHelper.UpdateTitleBar(RequestedTheme); KeyboardAccelerators.Add(BuildKeyboardAccelerator(VirtualKey.Left, VirtualKeyModifiers.Menu)); KeyboardAccelerators.Add(BuildKeyboardAccelerator(VirtualKey.GoBack)); } private void MainWindow_Activated(object sender, WindowActivatedEventArgs args) { //App.AppTitlebar = AppTitleBarText as UIElement; } private void NavigationViewControl_DisplayModeChanged(NavigationView sender, NavigationViewDisplayModeChangedEventArgs args) { //AppTitleBar.Margin = new Thickness() //{ // Left = sender.CompactPaneLength * (sender.DisplayMode == NavigationViewDisplayMode.Minimal ? 2 : 1), // Top = AppTitleBar.Margin.Top, // Right = AppTitleBar.Margin.Right, // Bottom = AppTitleBar.Margin.Bottom //}; } private static KeyboardAccelerator BuildKeyboardAccelerator(VirtualKey key, VirtualKeyModifiers? modifiers = null) { var keyboardAccelerator = new KeyboardAccelerator() { Key = key }; if (modifiers.HasValue) { keyboardAccelerator.Modifiers = modifiers.Value; } keyboardAccelerator.Invoked += OnKeyboardAcceleratorInvoked; return keyboardAccelerator; } private static void OnKeyboardAcceleratorInvoked(KeyboardAccelerator sender, KeyboardAcceleratorInvokedEventArgs args) { var navigationService = App.GetService(); var result = navigationService.GoBack(); args.Handled = result; } }