using System; using CommunityToolkit.Mvvm.Messaging; using Microsoft.Extensions.DependencyInjection; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Wino.Core.Domain.Interfaces; using Wino.Core.WinUI; using Wino.Core.WinUI.Interfaces; using Wino.Messaging.Client.Mails; using Wino.Views; using WinUIEx; namespace Wino.Mail.WinUI; public sealed partial class ShellWindow : WindowEx, IWinoShellWindow { public IStatePersistanceService StatePersistanceService { get; } = WinoApplication.Current.Services.GetService() ?? throw new Exception("StatePersistanceService not registered in DI container."); public IPreferencesService PreferencesService { get; } = WinoApplication.Current.Services.GetService() ?? throw new Exception("PreferencesService not registered in DI container."); public ShellWindow() { InitializeComponent(); MinWidth = 420; MinHeight = 420; ConfigureTitleBar(); } private void ConfigureTitleBar() { AppWindow.TitleBar.ExtendsContentIntoTitleBar = true; } public void HandleAppActivation(LaunchActivatedEventArgs args) { // TODO: Handle protocol activations. MainShellFrame.Navigate(typeof(AppShell)); } public Microsoft.UI.Xaml.Controls.TitleBar GetTitleBar() => ShellTitleBar; public Frame GetMainFrame() => MainShellFrame; public FrameworkElement GetRootContent() => Content as Grid ?? throw new Exception("RootContent is not a Grid or empty."); private void BackButtonClicked(Microsoft.UI.Xaml.Controls.TitleBar sender, object args) { WeakReferenceMessenger.Default.Send(new ClearMailSelectionsRequested()); WeakReferenceMessenger.Default.Send(new DisposeRenderingFrameRequested()); } private void MainFrameNavigated(object sender, Microsoft.UI.Xaml.Navigation.NavigationEventArgs e) => ShellTitleBar.Content = (e.Content as BasePage).ShellContent; private void PaneButtonClicked(Microsoft.UI.Xaml.Controls.TitleBar sender, object args) { PreferencesService.IsNavigationPaneOpened = !PreferencesService.IsNavigationPaneOpened; } }