Dialog improvements.

This commit is contained in:
Burak Kaan Köse
2026-03-16 15:02:39 +01:00
parent 4519b77444
commit 5b2a99ffe5
5 changed files with 184 additions and 65 deletions
@@ -1156,10 +1156,23 @@
"WinoAccount_SignOutButton_Description": "Remove the locally stored Wino Account session.", "WinoAccount_SignOutButton_Description": "Remove the locally stored Wino Account session.",
"WinoAccount_SignOutButton_Action": "Sign out", "WinoAccount_SignOutButton_Action": "Sign out",
"WinoAccount_RegisterDialog_Title": "Create Wino Account", "WinoAccount_RegisterDialog_Title": "Create Wino Account",
"WinoAccount_RegisterDialog_Description": "Register a new Wino Account using the localhost API.", "WinoAccount_RegisterDialog_Description": "Create a Wino Account to keep your Wino experience in sync and unlock account-based add-ons.",
"WinoAccount_RegisterDialog_HeroTitle": "Create your Wino Account",
"WinoAccount_RegisterDialog_BenefitsTitle": "Why create one?",
"WinoAccount_RegisterDialog_BenefitSyncTitle": "Import and export settings across devices",
"WinoAccount_RegisterDialog_BenefitSyncDescription": "Move your Wino preferences between devices without rebuilding your setup from scratch.",
"WinoAccount_RegisterDialog_BenefitAiTitle": "Access exclusive add-ons like Wino AI Pack (paid)",
"WinoAccount_RegisterDialog_BenefitAiDescription": "Use one account to unlock premium Wino features as they become available.",
"WinoAccount_RegisterDialog_DifferenceTitle": "Wino Account is separate from your mail accounts",
"WinoAccount_RegisterDialog_DifferenceDescription": "Your Outlook, Gmail, IMAP, or other email accounts stay exactly as they are. A Wino Account only manages Wino-specific features and account-based add-ons.",
"WinoAccount_RegisterDialog_PrimaryButton": "Register", "WinoAccount_RegisterDialog_PrimaryButton": "Register",
"WinoAccount_LoginDialog_Title": "Sign In to Wino Account", "WinoAccount_LoginDialog_Title": "Sign In to Wino Account",
"WinoAccount_LoginDialog_Description": "Sign in using the localhost API.", "WinoAccount_LoginDialog_Description": "Sign in to your Wino Account to sync your Wino setup and access account-based features.",
"WinoAccount_LoginDialog_HeroTitle": "Welcome back",
"WinoAccount_LoginDialog_BenefitsTitle": "What signing in gives you",
"WinoAccount_LoginDialog_BenefitsDescription": "Use your Wino Account to continue syncing settings across devices and to access paid add-ons such as Wino AI Pack.",
"WinoAccount_LoginDialog_DifferenceTitle": "This is not your email mailbox sign-in",
"WinoAccount_LoginDialog_DifferenceDescription": "Signing in here does not add or replace your Outlook, Gmail, or IMAP accounts in Wino. It only signs you in to Wino-specific services.",
"WinoAccount_EmailLabel": "Email", "WinoAccount_EmailLabel": "Email",
"WinoAccount_EmailPlaceholder": "name@example.com", "WinoAccount_EmailPlaceholder": "name@example.com",
"WinoAccount_PasswordLabel": "Password", "WinoAccount_PasswordLabel": "Password",
@@ -7,45 +7,93 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="{x:Bind domain:Translator.WinoAccount_LoginDialog_Title}" Title="{x:Bind domain:Translator.WinoAccount_LoginDialog_Title}"
PrimaryButtonClick="LoginClicked" PrimaryButtonClick="LoginClicked"
PrimaryButtonStyle="{ThemeResource AccentButtonStyle}"
PrimaryButtonText="{x:Bind domain:Translator.Buttons_SignIn}" PrimaryButtonText="{x:Bind domain:Translator.Buttons_SignIn}"
SecondaryButtonText="{x:Bind domain:Translator.Buttons_Cancel}" SecondaryButtonText="{x:Bind domain:Translator.Buttons_Cancel}"
Style="{StaticResource WinoDialogStyle}" Style="{StaticResource WinoDialogStyle}"
mc:Ignorable="d"> mc:Ignorable="d">
<ContentDialog.Resources> <ContentDialog.Resources>
<x:Double x:Key="ContentDialogMinWidth">440</x:Double> <x:Double x:Key="ContentDialogMinWidth">520</x:Double>
<x:Double x:Key="ContentDialogMaxWidth">440</x:Double> <x:Double x:Key="ContentDialogMaxWidth">520</x:Double>
</ContentDialog.Resources> </ContentDialog.Resources>
<StackPanel Spacing="12"> <ScrollViewer VerticalScrollBarVisibility="Auto">
<TextBlock <StackPanel Spacing="16">
Foreground="{ThemeResource TextFillColorSecondaryBrush}" <Border
Text="{x:Bind domain:Translator.WinoAccount_LoginDialog_Description}" Padding="14"
TextWrapping="WrapWholeWords" /> Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}"
CornerRadius="16">
<Grid ColumnSpacing="12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<FontIcon
FontSize="18"
Foreground="{ThemeResource AccentTextFillColorPrimaryBrush}"
Glyph="&#xE8D7;" />
<StackPanel Grid.Column="1" Spacing="4">
<TextBlock Style="{StaticResource BodyStrongTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_LoginDialog_BenefitsTitle}" />
<TextBlock
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Text="{x:Bind domain:Translator.WinoAccount_LoginDialog_BenefitsDescription}"
TextWrapping="WrapWholeWords" />
</StackPanel>
</Grid>
</Border>
<TextBox <Border
x:Name="EmailTextBox" Padding="14"
Header="{x:Bind domain:Translator.WinoAccount_EmailLabel}" Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}"
PlaceholderText="{x:Bind domain:Translator.WinoAccount_EmailPlaceholder}" BorderBrush="{ThemeResource TextFillColorDisabledBrush}"
TextChanging="InputChanged" /> BorderThickness="1"
CornerRadius="16">
<Grid ColumnSpacing="12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<FontIcon
FontSize="18"
Foreground="{ThemeResource AccentTextFillColorPrimaryBrush}"
Glyph="&#xE946;" />
<StackPanel Grid.Column="1" Spacing="4">
<TextBlock Style="{StaticResource BodyStrongTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_LoginDialog_DifferenceTitle}" />
<TextBlock
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Text="{x:Bind domain:Translator.WinoAccount_LoginDialog_DifferenceDescription}"
TextWrapping="WrapWholeWords" />
</StackPanel>
</Grid>
</Border>
<PasswordBox <StackPanel Spacing="12">
x:Name="PasswordBox" <TextBox
Header="{x:Bind domain:Translator.WinoAccount_PasswordLabel}" x:Name="EmailTextBox"
PasswordChanged="InputChanged" /> Header="{x:Bind domain:Translator.WinoAccount_EmailLabel}"
PlaceholderText="{x:Bind domain:Translator.WinoAccount_EmailPlaceholder}"
TextChanging="InputChanged" />
<ProgressRing <PasswordBox
x:Name="BusyRing" x:Name="PasswordBox"
Width="20" Header="{x:Bind domain:Translator.WinoAccount_PasswordLabel}"
Height="20" PasswordChanged="InputChanged" />
HorizontalAlignment="Left" </StackPanel>
IsActive="False"
Visibility="Collapsed" />
<TextBlock <ProgressRing
x:Name="ErrorTextBlock" x:Name="BusyRing"
Foreground="{ThemeResource SystemFillColorCriticalBrush}" Width="20"
TextWrapping="WrapWholeWords" Height="20"
Visibility="Collapsed" /> HorizontalAlignment="Left"
</StackPanel> IsActive="False"
Visibility="Collapsed" />
<TextBlock
x:Name="ErrorTextBlock"
Foreground="{ThemeResource SystemFillColorCriticalBrush}"
TextWrapping="WrapWholeWords"
Visibility="Collapsed" />
</StackPanel>
</ScrollViewer>
</ContentDialog> </ContentDialog>
@@ -7,50 +7,104 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="{x:Bind domain:Translator.WinoAccount_RegisterDialog_Title}" Title="{x:Bind domain:Translator.WinoAccount_RegisterDialog_Title}"
PrimaryButtonClick="RegisterClicked" PrimaryButtonClick="RegisterClicked"
PrimaryButtonStyle="{ThemeResource AccentButtonStyle}"
PrimaryButtonText="{x:Bind domain:Translator.WinoAccount_RegisterDialog_PrimaryButton}" PrimaryButtonText="{x:Bind domain:Translator.WinoAccount_RegisterDialog_PrimaryButton}"
SecondaryButtonText="{x:Bind domain:Translator.Buttons_Cancel}" SecondaryButtonText="{x:Bind domain:Translator.Buttons_Cancel}"
Style="{StaticResource WinoDialogStyle}" Style="{StaticResource WinoDialogStyle}"
mc:Ignorable="d"> mc:Ignorable="d">
<ContentDialog.Resources> <ContentDialog.Resources>
<x:Double x:Key="ContentDialogMinWidth">440</x:Double> <x:Double x:Key="ContentDialogMinWidth">560</x:Double>
<x:Double x:Key="ContentDialogMaxWidth">440</x:Double> <x:Double x:Key="ContentDialogMaxWidth">560</x:Double>
</ContentDialog.Resources> </ContentDialog.Resources>
<StackPanel Spacing="12"> <ScrollViewer VerticalScrollBarVisibility="Auto">
<TextBlock <StackPanel Spacing="4">
Foreground="{ThemeResource TextFillColorSecondaryBrush}" <Image
Text="{x:Bind domain:Translator.WinoAccount_RegisterDialog_Description}" Width="64"
TextWrapping="WrapWholeWords" /> Height="64"
Source="/Assets/AppEntries/MailAssets/LargeTile.png" />
<StackPanel Spacing="10">
<TextBlock Style="{StaticResource BodyStrongTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_RegisterDialog_BenefitsTitle}" />
<TextBox <Border
x:Name="EmailTextBox" Padding="14"
Header="{x:Bind domain:Translator.WinoAccount_EmailLabel}" Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}"
PlaceholderText="{x:Bind domain:Translator.WinoAccount_EmailPlaceholder}" CornerRadius="16">
TextChanging="InputChanged" /> <Grid ColumnSpacing="12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<FontIcon
FontSize="18"
Foreground="{ThemeResource AccentTextFillColorPrimaryBrush}"
Glyph="&#xE8D7;" />
<StackPanel Grid.Column="1" Spacing="2">
<TextBlock Style="{StaticResource BodyStrongTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_RegisterDialog_BenefitSyncTitle}" />
<TextBlock
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Text="{x:Bind domain:Translator.WinoAccount_RegisterDialog_BenefitSyncDescription}"
TextWrapping="WrapWholeWords" />
</StackPanel>
</Grid>
</Border>
<PasswordBox <Border
x:Name="PasswordBox" Padding="14"
Header="{x:Bind domain:Translator.WinoAccount_PasswordLabel}" Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}"
PasswordChanged="InputChanged" /> CornerRadius="16">
<Grid ColumnSpacing="12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<FontIcon
FontSize="18"
Foreground="{ThemeResource AccentTextFillColorPrimaryBrush}"
Glyph="&#xEA18;" />
<StackPanel Grid.Column="1" Spacing="2">
<TextBlock Style="{StaticResource BodyStrongTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_RegisterDialog_BenefitAiTitle}" />
<TextBlock
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Text="{x:Bind domain:Translator.WinoAccount_RegisterDialog_BenefitAiDescription}"
TextWrapping="WrapWholeWords" />
</StackPanel>
</Grid>
</Border>
</StackPanel>
<PasswordBox <StackPanel Margin="0,12" Spacing="12">
x:Name="ConfirmPasswordBox" <TextBox
Header="{x:Bind domain:Translator.WinoAccount_ConfirmPasswordLabel}" x:Name="EmailTextBox"
PasswordChanged="InputChanged" /> Header="{x:Bind domain:Translator.WinoAccount_EmailLabel}"
PlaceholderText="{x:Bind domain:Translator.WinoAccount_EmailPlaceholder}"
TextChanging="InputChanged" />
<ProgressRing <PasswordBox
x:Name="BusyRing" x:Name="PasswordBox"
Width="20" Header="{x:Bind domain:Translator.WinoAccount_PasswordLabel}"
Height="20" PasswordChanged="InputChanged" />
HorizontalAlignment="Left"
IsActive="False"
Visibility="Collapsed" />
<TextBlock <PasswordBox
x:Name="ErrorTextBlock" x:Name="ConfirmPasswordBox"
Foreground="{ThemeResource SystemFillColorCriticalBrush}" Header="{x:Bind domain:Translator.WinoAccount_ConfirmPasswordLabel}"
TextWrapping="WrapWholeWords" PasswordChanged="InputChanged" />
Visibility="Collapsed" /> </StackPanel>
</StackPanel>
<ProgressRing
x:Name="BusyRing"
Width="20"
Height="20"
HorizontalAlignment="Left"
IsActive="False"
Visibility="Collapsed" />
<TextBlock
x:Name="ErrorTextBlock"
Foreground="{ThemeResource SystemFillColorCriticalBrush}"
TextWrapping="WrapWholeWords"
Visibility="Collapsed" />
</StackPanel>
</ScrollViewer>
</ContentDialog> </ContentDialog>
+3 -1
View File
@@ -91,7 +91,9 @@
Background="Transparent" Background="Transparent"
BorderBrush="Transparent"> BorderBrush="Transparent">
<Button.Flyout> <Button.Flyout>
<Flyout Placement="Bottom"> <Flyout
x:Name="WinoAccountFlyout"
Placement="Bottom">
<Grid MinWidth="320" MaxWidth="360"> <Grid MinWidth="320" MaxWidth="360">
<StackPanel <StackPanel
x:Name="WinoAccountSignedOutView" x:Name="WinoAccountSignedOutView"
+2
View File
@@ -409,6 +409,7 @@ public sealed partial class ShellWindow : WindowEx, IWinoShellWindow,
private async void RegisterWinoAccountClicked(object sender, RoutedEventArgs e) private async void RegisterWinoAccountClicked(object sender, RoutedEventArgs e)
{ {
WinoAccountFlyout.Hide();
var account = await MailDialogService.ShowWinoAccountRegistrationDialogAsync(); var account = await MailDialogService.ShowWinoAccountRegistrationDialogAsync();
if (account != null) if (account != null)
{ {
@@ -421,6 +422,7 @@ public sealed partial class ShellWindow : WindowEx, IWinoShellWindow,
private async void LoginWinoAccountClicked(object sender, RoutedEventArgs e) private async void LoginWinoAccountClicked(object sender, RoutedEventArgs e)
{ {
WinoAccountFlyout.Hide();
var account = await MailDialogService.ShowWinoAccountLoginDialogAsync(); var account = await MailDialogService.ShowWinoAccountLoginDialogAsync();
if (account != null) if (account != null)
{ {