60 lines
2.1 KiB
C#
60 lines
2.1 KiB
C#
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<IStatePersistanceService>() ?? throw new Exception("StatePersistanceService not registered in DI container.");
|
|
public IPreferencesService PreferencesService { get; } = WinoApplication.Current.Services.GetService<IPreferencesService>() ?? 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;
|
|
}
|
|
}
|