Chinese language treatment for WinUI bug.
This commit is contained in:
@@ -60,7 +60,7 @@ public partial class CalendarItemCommandBarFlyout : CommandBarFlyout
|
||||
|
||||
if (menuItem.HasChildren)
|
||||
{
|
||||
var flyout = new MenuFlyout();
|
||||
var flyout = new WinoMenuFlyout();
|
||||
PopulateMenuFlyoutItems(flyout.Items, menuItem.Children);
|
||||
button.Flyout = flyout;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Wino.Core.Domain.Enums;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
|
||||
namespace Wino.Mail.WinUI.Controls;
|
||||
|
||||
internal static class MenuFlyoutLanguageHelper
|
||||
{
|
||||
private const string ChineseLanguageTag = "zh-CN";
|
||||
|
||||
public static void Apply(MenuFlyoutItemBase item)
|
||||
{
|
||||
if (WinoApplication.Current.Services.GetRequiredService<IPreferencesService>().CurrentLanguage == AppLanguage.Chinese)
|
||||
{
|
||||
item.Language = ChineseLanguageTag;
|
||||
}
|
||||
else
|
||||
{
|
||||
item.ClearValue(MenuFlyoutItemBase.LanguageProperty);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
|
||||
namespace Wino.Mail.WinUI.Controls;
|
||||
|
||||
public partial class WinoMenuFlyout : MenuFlyout
|
||||
{
|
||||
public WinoMenuFlyout()
|
||||
{
|
||||
Opening += OnOpening;
|
||||
}
|
||||
|
||||
private void OnOpening(object? sender, object e)
|
||||
{
|
||||
foreach (var item in Items)
|
||||
{
|
||||
ApplyLanguage(item);
|
||||
}
|
||||
}
|
||||
|
||||
private static void ApplyLanguage(MenuFlyoutItemBase item)
|
||||
{
|
||||
MenuFlyoutLanguageHelper.Apply(item);
|
||||
|
||||
if (item is MenuFlyoutSubItem subItem)
|
||||
{
|
||||
foreach (var childItem in subItem.Items)
|
||||
{
|
||||
ApplyLanguage(childItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@ using Wino.Helpers;
|
||||
|
||||
namespace Wino.MenuFlyouts;
|
||||
|
||||
public partial class AccountSelectorFlyout : MenuFlyout, IDisposable
|
||||
public partial class AccountSelectorFlyout : WinoMenuFlyout, IDisposable
|
||||
{
|
||||
private readonly IEnumerable<MailAccount> _accounts;
|
||||
private readonly Func<MailAccount, Task> _onItemSelection;
|
||||
|
||||
@@ -9,7 +9,7 @@ using Wino.Helpers;
|
||||
|
||||
namespace Wino.MenuFlyouts;
|
||||
|
||||
public partial class FilterMenuFlyout : MenuFlyout
|
||||
public partial class FilterMenuFlyout : WinoMenuFlyout
|
||||
{
|
||||
public static readonly DependencyProperty SelectedFilterChangedCommandProperty = DependencyProperty.Register(nameof(SelectedFilterChangedCommand), typeof(IRelayCommand<FilterOption>), typeof(FilterMenuFlyout), new PropertyMetadata(null));
|
||||
public static readonly DependencyProperty FilterOptionsProperty = DependencyProperty.Register(nameof(FilterOptions), typeof(List<FilterOption>), typeof(FilterMenuFlyout), new PropertyMetadata(null, new PropertyChangedCallback(OnOptionsChanged)));
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Wino.Core.Domain.Enums;
|
||||
using Wino.Core.Domain.Models.Menus;
|
||||
|
||||
namespace Wino.MenuFlyouts.Context;
|
||||
|
||||
public partial class MailOperationFlyout : WinoOperationFlyout<MailOperationMenuItem>
|
||||
{
|
||||
public MailOperationFlyout(IEnumerable<MailOperationMenuItem> availableActions, TaskCompletionSource<MailOperationMenuItem> completionSource) : base(availableActions, completionSource)
|
||||
{
|
||||
if (AvailableActions == null) return;
|
||||
|
||||
foreach (var action in AvailableActions)
|
||||
{
|
||||
if (action.Operation == MailOperation.Seperator)
|
||||
Items.Add(new MenuFlyoutSeparator());
|
||||
else
|
||||
{
|
||||
var menuFlyoutItem = new MailOperationMenuFlyoutItem(action, (c) => MenuItemClicked(c));
|
||||
|
||||
Items.Add(menuFlyoutItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ using Microsoft.UI.Xaml;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Windows.Foundation;
|
||||
using Wino.Core.Domain.Entities.Mail;
|
||||
using Wino.Mail.WinUI.Controls;
|
||||
|
||||
namespace Wino.MenuFlyouts;
|
||||
|
||||
@@ -13,7 +14,7 @@ public class MoveButtonMenuItemClickedEventArgs
|
||||
public Guid ClickedFolderId { get; set; }
|
||||
}
|
||||
|
||||
public partial class MoveButtonFlyout : MenuFlyout
|
||||
public partial class MoveButtonFlyout : WinoMenuFlyout
|
||||
{
|
||||
public event TypedEventHandler<MoveButtonFlyout, MoveButtonMenuItemClickedEventArgs> MenuItemClick = delegate { };
|
||||
public static readonly DependencyProperty FoldersProperty = DependencyProperty.Register(nameof(Folders), typeof(List<MailItemFolder>), typeof(MoveButtonFlyout), new PropertyMetadata(null, new PropertyChangedCallback(OnFoldersChanged)));
|
||||
@@ -30,8 +31,6 @@ public partial class MoveButtonFlyout : MenuFlyout
|
||||
{
|
||||
menu.InitializeMenu();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void InitializeMenu()
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Wino.Mail.WinUI.Controls;
|
||||
|
||||
namespace Wino.MenuFlyouts;
|
||||
|
||||
public partial class WinoOperationFlyout<TActionType> : MenuFlyout, IDisposable where TActionType : class
|
||||
public partial class WinoOperationFlyout<TActionType> : WinoMenuFlyout, IDisposable where TActionType : class
|
||||
{
|
||||
public TActionType ClickedOperation { get; set; } = null!;
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ using Microsoft.UI.Xaml.Controls;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Folders;
|
||||
using Wino.Core.Domain.Models.Menus;
|
||||
using Wino.Mail.WinUI.Controls;
|
||||
using Wino.Helpers;
|
||||
using Wino.Mail.WinUI.Controls;
|
||||
|
||||
namespace Wino.MenuFlyouts;
|
||||
|
||||
@@ -18,6 +18,8 @@ public partial class WinoOperationFlyoutItem<TOperationMenuItem> : MenuFlyoutIte
|
||||
Operation = operationMenuItem;
|
||||
IsEnabled = operationMenuItem.IsEnabled;
|
||||
|
||||
MenuFlyoutLanguageHelper.Apply(this);
|
||||
|
||||
if (Operation is FolderOperationMenuItem folderOperationMenuItem)
|
||||
{
|
||||
var internalOperation = folderOperationMenuItem.Operation;
|
||||
|
||||
@@ -535,7 +535,7 @@
|
||||
<ToolTip Content="{x:Bind FileName}" />
|
||||
</ToolTipService.ToolTip>
|
||||
<Grid.ContextFlyout>
|
||||
<MenuFlyout Placement="Right">
|
||||
<coreControls:WinoMenuFlyout Placement="Right">
|
||||
<MenuFlyoutItem
|
||||
Click="OpenCalendarAttachment_Click"
|
||||
CommandParameter="{x:Bind}"
|
||||
@@ -552,7 +552,7 @@
|
||||
<PathIcon Data="{StaticResource SaveAttachmentPathIcon}" />
|
||||
</MenuFlyoutItem.Icon>
|
||||
</MenuFlyoutItem>
|
||||
</MenuFlyout>
|
||||
</coreControls:WinoMenuFlyout>
|
||||
</Grid.ContextFlyout>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="40" />
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
Background="Transparent"
|
||||
ColumnSpacing="3">
|
||||
<Grid.ContextFlyout>
|
||||
<MenuFlyout>
|
||||
<coreControls:WinoMenuFlyout>
|
||||
<MenuFlyoutItem
|
||||
Click="OpenAttachment_Click"
|
||||
CommandParameter="{x:Bind}"
|
||||
@@ -44,7 +44,7 @@
|
||||
Click="SaveAttachment_Click"
|
||||
CommandParameter="{x:Bind}"
|
||||
Text="{x:Bind domain:Translator.Buttons_Save}" />
|
||||
</MenuFlyout>
|
||||
</coreControls:WinoMenuFlyout>
|
||||
</Grid.ContextFlyout>
|
||||
<ToolTipService.ToolTip>
|
||||
<ToolTip Content="{x:Bind FileName}" />
|
||||
|
||||
@@ -27,6 +27,7 @@ using Wino.Core.Domain.Models.Navigation;
|
||||
using Wino.Mail.ViewModels.Data;
|
||||
using Wino.Mail.ViewModels.Messages;
|
||||
using Wino.Mail.WinUI;
|
||||
using Wino.Mail.WinUI.Controls;
|
||||
using Wino.Mail.WinUI.Controls.ListView;
|
||||
using Wino.Mail.WinUI.Helpers;
|
||||
using Wino.Mail.WinUI.Interfaces;
|
||||
@@ -318,7 +319,7 @@ public sealed partial class MailListPage : MailListPageAbstract,
|
||||
double y)
|
||||
{
|
||||
var source = new TaskCompletionSource<MailContextAction?>();
|
||||
var flyout = new MenuFlyout();
|
||||
var flyout = new WinoMenuFlyout();
|
||||
|
||||
foreach (var action in availableActions)
|
||||
{
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
<ToolTip Content="{x:Bind FileName}" />
|
||||
</ToolTipService.ToolTip>
|
||||
<Grid.ContextFlyout>
|
||||
<MenuFlyout Placement="Right">
|
||||
<coreControls:WinoMenuFlyout Placement="Right">
|
||||
<MenuFlyoutItem
|
||||
Click="OpenAttachment_Click"
|
||||
CommandParameter="{x:Bind}"
|
||||
@@ -97,7 +97,7 @@
|
||||
<PathIcon Data="{StaticResource SaveAttachmentPathIcon}" />
|
||||
</MenuFlyoutItem.Icon>
|
||||
</MenuFlyoutItem>
|
||||
</MenuFlyout>
|
||||
</coreControls:WinoMenuFlyout>
|
||||
</Grid.ContextFlyout>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="40" />
|
||||
|
||||
@@ -80,7 +80,12 @@
|
||||
BorderBrush="{ThemeResource CardStrokeColorDefaultBrush}"
|
||||
BorderThickness="1"
|
||||
CornerRadius="8">
|
||||
<StackPanel Spacing="10">
|
||||
<Grid RowSpacing="10">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Spacing="2">
|
||||
<TextBlock FontWeight="SemiBold" Text="{x:Bind domain:Translator.AccountCreation_InitialSynchronization_Title}" />
|
||||
<TextBlock
|
||||
@@ -90,31 +95,29 @@
|
||||
TextWrapping="WrapWholeWords" />
|
||||
</StackPanel>
|
||||
|
||||
<ListView
|
||||
<GridView
|
||||
Grid.Row="1"
|
||||
HorizontalAlignment="Center"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
ItemsSource="{x:Bind ViewModel.InitialSynchronizationRanges, Mode=OneWay}"
|
||||
SelectedItem="{x:Bind ViewModel.SelectedInitialSynchronizationRange, Mode=TwoWay}">
|
||||
<ListView.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<ItemsStackPanel Orientation="Horizontal" />
|
||||
</ItemsPanelTemplate>
|
||||
</ListView.ItemsPanel>
|
||||
<ListView.ItemTemplate>
|
||||
<GridView.ItemTemplate>
|
||||
<DataTemplate x:DataType="accounts:InitialSynchronizationRangeOption">
|
||||
<TextBlock Text="{x:Bind DisplayText}" />
|
||||
<Grid Padding="12">
|
||||
<TextBlock Text="{x:Bind DisplayText}" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</ListView.ItemTemplate>
|
||||
</ListView>
|
||||
</GridView.ItemTemplate>
|
||||
</GridView>
|
||||
|
||||
<muxc:InfoBar
|
||||
Title="{x:Bind domain:Translator.GeneralTitle_Warning}"
|
||||
Grid.Row="2"
|
||||
Margin="0,2,0,0"
|
||||
IsOpen="True"
|
||||
Message="{x:Bind domain:Translator.AccountCreation_InitialSynchronization_EverythingWarning}"
|
||||
Severity="Warning"
|
||||
Visibility="{x:Bind ViewModel.IsInitialSynchronizationWarningVisible, Mode=OneWay}" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<!-- Provider List -->
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
xmlns:abstract="using:Wino.Views.Abstract"
|
||||
xmlns:controls="using:CommunityToolkit.WinUI.Controls"
|
||||
xmlns:controls1="using:Wino.Controls"
|
||||
xmlns:coreControls="using:Wino.Mail.WinUI.Controls"
|
||||
xmlns:coreSelectors="using:Wino.Mail.WinUI.Selectors"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:data="using:Wino.Core.ViewModels.Data"
|
||||
@@ -56,7 +57,7 @@
|
||||
CornerRadius="6"
|
||||
RowSpacing="0">
|
||||
<Grid.ContextFlyout>
|
||||
<MenuFlyout Placement="BottomEdgeAlignedRight">
|
||||
<coreControls:WinoMenuFlyout Placement="BottomEdgeAlignedRight">
|
||||
<MenuFlyoutItem
|
||||
Command="{Binding ElementName=root, Path=ViewModel.DeleteCustomThemeCommand}"
|
||||
CommandParameter="{x:Bind}"
|
||||
@@ -65,7 +66,7 @@
|
||||
<SymbolIcon Symbol="Delete" />
|
||||
</MenuFlyoutItem.Icon>
|
||||
</MenuFlyoutItem>
|
||||
</MenuFlyout>
|
||||
</coreControls:WinoMenuFlyout>
|
||||
</Grid.ContextFlyout>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="125" />
|
||||
|
||||
@@ -534,7 +534,7 @@ public sealed partial class WinoAppShell : Views.Abstract.WinoAppShellAbstract,
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
var flyout = new MenuFlyout();
|
||||
var flyout = new WinoMenuFlyout();
|
||||
|
||||
var manageAccountSettingsItem = new MenuFlyoutItem
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user