New theme service that supports window backdrop.

This commit is contained in:
Burak Kaan Köse
2025-10-03 21:04:23 +02:00
parent 15b6f5f6fb
commit 229006c51d
24 changed files with 1337 additions and 18 deletions
+8
View File
@@ -2,6 +2,7 @@
using System.Text;
using CommunityToolkit.Mvvm.Messaging;
using Microsoft.Extensions.DependencyInjection;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Interfaces;
using Wino.Core.WinUI;
using Wino.Core.WinUI.Interfaces;
@@ -79,6 +80,13 @@ public partial class App : WinoApplication, IRecipient<NewMailSynchronizationReq
{
// TODO: Check app relaunch mutex before loading anything.
// Initialize NewThemeService first to get backdrop settings before creating window
var newThemeService = Services.GetService<INewThemeService>();
var configService = Services.GetService<IConfigurationService>();
// Load saved backdrop type before creating window
var savedBackdropType = (WindowBackdropType)configService.Get("WindowBackdropTypeKey", (int)WindowBackdropType.Mica);
MainWindow = new ShellWindow();
await InitializeServicesAsync();
+1 -4
View File
@@ -10,10 +10,7 @@
Title="ShellWindow"
mc:Ignorable="d">
<winuiex:WindowEx.SystemBackdrop>
<!-- TODO: Reach to ThemeService changes. -->
<MicaBackdrop />
</winuiex:WindowEx.SystemBackdrop>
<!-- SystemBackdrop will be set by NewThemeService -->
<Grid>
<Grid.RowDefinitions>
@@ -14,6 +14,7 @@
xmlns:mailSelectors="using:Wino.Selectors"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:personalization="using:Wino.Core.WinUI.Models.Personalization"
xmlns:personalization1="using:Wino.Core.Domain.Models.Personalization"
xmlns:selectors="using:Wino.Selectors"
xmlns:toolkitExt="using:CommunityToolkit.WinUI"
xmlns:viewModelData="using:Wino.Mail.ViewModels.Data"
@@ -147,6 +148,26 @@
</controls:SettingsExpander.Items>
</controls:SettingsExpander>
<!-- Backdrop Selection -->
<controls:SettingsCard Description="Choose the backdrop effect for your app window" Header="Window Backdrop">
<controls:SettingsCard.HeaderIcon>
<PathIcon Data="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-1-13h2v6h-2zm0 8h2v2h-2z" />
</controls:SettingsCard.HeaderIcon>
<controls:SettingsCard.Content>
<ComboBox
Width="150"
ItemsSource="{x:Bind ViewModel.AvailableBackdropTypes, Mode=OneWay}"
SelectedItem="{x:Bind ViewModel.SelectedBackdropType, Mode=TwoWay}">
<ComboBox.ItemTemplate>
<DataTemplate x:DataType="personalization1:BackdropTypeWrapper">
<TextBlock Text="{x:Bind DisplayName}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</controls:SettingsCard.Content>
</controls:SettingsCard>
<!-- Mail spacing. -->
<controls:SettingsExpander Description="{x:Bind domain:Translator.SettingsMailSpacing_Description}" Header="{x:Bind domain:Translator.SettingsMailSpacing_Title}">
<controls:SettingsExpander.HeaderIcon>