Files
Wino-Mail/Wino.Mail/Controls/MailItemDisplayInformationControl.xaml

327 lines
16 KiB
Plaintext
Raw Normal View History

2024-04-18 01:44:37 +02:00
<UserControl
x:Class="Wino.Controls.MailItemDisplayInformationControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
2024-08-31 03:18:43 +02:00
xmlns:animatedvisuals="using:Microsoft.UI.Xaml.Controls.AnimatedVisuals"
2024-04-18 01:44:37 +02:00
xmlns:controls="using:Wino.Controls"
xmlns:domain="using:Wino.Core.Domain"
2024-08-26 01:07:51 +02:00
xmlns:enums="using:Wino.Core.Domain.Enums"
xmlns:helpers="using:Wino.Helpers"
2024-08-31 03:18:43 +02:00
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
2024-08-26 01:07:51 +02:00
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
FocusVisualMargin="8"
FocusVisualPrimaryBrush="{StaticResource SystemControlRevealFocusVisualBrush}"
FocusVisualPrimaryThickness="2"
FocusVisualSecondaryBrush="{StaticResource SystemControlFocusVisualSecondaryBrush}"
FocusVisualSecondaryThickness="1"
2024-04-18 01:44:37 +02:00
PointerEntered="ControlPointerEntered"
PointerExited="ControlPointerExited">
<UserControl.Resources>
<Style
x:Key="HoverActionButtonStyle"
BasedOn="{StaticResource DefaultButtonStyle}"
TargetType="Button">
<Setter Property="Padding" Value="0" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderThickness" Value="0" />
</Style>
</UserControl.Resources>
2024-08-26 01:07:51 +02:00
<Grid>
2024-04-18 01:44:37 +02:00
<Grid
x:Name="RootContainer"
Padding="0,1"
2024-08-26 01:07:51 +02:00
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
2024-04-18 01:44:37 +02:00
x:DefaultBindMode="OneWay">
<!-- Custom Interaction Focus Indicator -->
<Ellipse
Width="8"
Height="8"
Margin="0,12,8,0"
HorizontalAlignment="Right"
VerticalAlignment="Top"
2024-08-26 01:07:51 +02:00
Canvas.ZIndex="9999"
Fill="{ThemeResource SystemAccentColor}"
Visibility="{x:Bind IsCustomFocused, Mode=OneWay}" />
2024-04-18 01:44:37 +02:00
<Border
x:Name="RootContainerVisualWrapper"
Margin="0,4"
Background="Transparent"
BorderBrush="Transparent"
BorderThickness="0.5"
CornerRadius="4" />
<Grid x:Name="MainContentContainer">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<controls:ImagePreviewControl
x:Name="ContactImage"
Width="35"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="14"
FromAddress="{x:Bind MailItem.FromAddress, Mode=OneWay}"
FromName="{x:Bind MailItem.FromName, Mode=OneWay}"
2024-08-26 01:07:51 +02:00
SenderContactPicture="{x:Bind MailItem.SenderContact.Base64ContactPicture}"
2024-04-18 01:44:37 +02:00
Visibility="{x:Bind IsAvatarVisible, Mode=OneWay}" />
<Grid
x:Name="ContentGrid"
Grid.Column="1"
Canvas.ZIndex="2">
<!-- Sender + Title -->
<Grid x:Name="ContentStackpanel" VerticalAlignment="Center">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- Sender + IsDraft + Hover Buttons -->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<!-- IsDraft Tag -->
<TextBlock
x:Name="DraftTitle"
Margin="0,0,4,0"
x:Load="{x:Bind MailItem.IsDraft, Mode=OneWay}"
2024-04-18 01:44:37 +02:00
Foreground="{StaticResource DeleteBrush}">
<Run Text="[" /><Run Text="{x:Bind domain:Translator.Draft}" /><Run Text="]" /> <Run Text=" " />
</TextBlock>
<!-- Sender -->
<TextBlock
x:Name="SenderText"
Grid.Column="1"
Text="{x:Bind MailItem.FromName}"
2024-04-18 01:44:37 +02:00
TextTrimming="WordEllipsis" />
<!-- Hover button -->
<StackPanel
x:Name="HoverActionButtons"
Grid.Column="2"
HorizontalAlignment="Right"
Background="Transparent"
Canvas.ZIndex="10"
Orientation="Horizontal"
Spacing="12"
Visibility="Collapsed">
<StackPanel.ChildrenTransitions>
<TransitionCollection>
<EdgeUIThemeTransition Edge="Right" />
</TransitionCollection>
</StackPanel.ChildrenTransitions>
<Button Click="FirstActionClicked" Style="{StaticResource HoverActionButtonStyle}">
<Button.Content>
<controls:WinoFontIcon FontSize="16" Icon="{x:Bind helpers:XamlHelpers.GetWinoIconGlyph(LeftHoverAction), Mode=OneWay}" />
</Button.Content>
</Button>
<Button Click="SecondActionClicked" Style="{StaticResource HoverActionButtonStyle}">
<Button.Content>
<controls:WinoFontIcon FontSize="16" Icon="{x:Bind helpers:XamlHelpers.GetWinoIconGlyph(CenterHoverAction), Mode=OneWay}" />
</Button.Content>
</Button>
<Button Click="ThirdActionClicked" Style="{StaticResource HoverActionButtonStyle}">
<Button.Content>
<controls:WinoFontIcon FontSize="16" Icon="{x:Bind helpers:XamlHelpers.GetWinoIconGlyph(RightHoverAction), Mode=OneWay}" />
</Button.Content>
</Button>
</StackPanel>
</Grid>
<!-- Subject + IsDraft -->
<Grid Grid.Row="1">
2024-04-18 01:44:37 +02:00
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
2024-04-18 01:44:37 +02:00
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
2024-08-31 03:18:43 +02:00
<local:AnimatedIcon
xmlns:local="using:Microsoft.UI.Xaml.Controls"
x:Name="ExpandCollapseChevron"
Width="14"
Height="14"
Margin="-4,0,2,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
local:AnimatedIcon.State="NormalOff"
AutomationProperties.AccessibilityView="Raw"
Foreground="{ThemeResource ApplicationForegroundThemeBrush}"
RenderTransformOrigin="0.5, 0.5"
Visibility="{x:Bind IsThreadExpanderVisible, Mode=OneWay}">
<animatedvisuals:AnimatedChevronRightDownSmallVisualSource />
<local:AnimatedIcon.FallbackIconSource>
<local:FontIconSource
FontFamily="{StaticResource SymbolThemeFontFamily}"
FontSize="12"
Glyph="&#xE76C;"
IsTextScaleFactorEnabled="False" />
</local:AnimatedIcon.FallbackIconSource>
<local:AnimatedIcon.RenderTransform />
</local:AnimatedIcon>
2024-04-18 01:44:37 +02:00
<TextBlock
x:Name="TitleText"
Grid.Column="1"
2024-04-18 01:44:37 +02:00
MaxLines="1"
Text="{x:Bind MailItem.Subject}"
2024-04-18 01:44:37 +02:00
TextTrimming="CharacterEllipsis" />
<TextBlock
Grid.Column="2"
Margin="4,0,0,0"
2024-04-18 01:44:37 +02:00
HorizontalAlignment="Right"
VerticalAlignment="Center"
FontSize="11"
Opacity="0.7"
Text="{x:Bind helpers:XamlHelpers.GetMailItemDisplaySummaryForListing(MailItem.IsDraft, MailItem.CreationDate, Prefer24HourTimeFormat)}" />
2024-04-18 01:44:37 +02:00
</Grid>
<!-- Message -->
<Grid
x:Name="PreviewTextContainerRoot"
Grid.Row="2"
VerticalAlignment="Top">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid x:Name="PreviewTextContainer">
<TextBlock
x:Name="PreviewTextblock"
x:Load="{x:Bind helpers:XamlHelpers.ShouldDisplayPreview(MailItem.PreviewText), Mode=OneWay}"
2024-04-18 01:44:37 +02:00
MaxLines="1"
Opacity="0.7"
Text="{x:Bind MailItem.PreviewText}"
2024-04-18 01:44:37 +02:00
TextTrimming="CharacterEllipsis" />
</Grid>
<!-- Right Icons Container -->
<StackPanel
x:Name="IconsContainer"
Grid.Column="1"
Margin="4,4,1,4"
Orientation="Horizontal"
Spacing="2">
<ContentPresenter
x:Name="HasAttachmentContent"
x:Load="{x:Bind MailItem.HasAttachments, Mode=OneWay}"
2024-04-18 01:44:37 +02:00
ContentTemplate="{StaticResource AttachmentSymbolControlTemplate}" />
<ContentPresenter
x:Name="IsFlaggedContent"
x:Load="{x:Bind MailItem.IsFlagged, Mode=OneWay}"
2024-04-18 01:44:37 +02:00
ContentTemplate="{StaticResource FlaggedSymbolControlTemplate}" />
</StackPanel>
</Grid>
</Grid>
</Grid>
</Grid>
</Grid>
<VisualStateManager.VisualStateGroups>
<!-- Read States -->
<VisualStateGroup x:Name="ReadStates">
<VisualState x:Name="Unread">
<VisualState.StateTriggers>
<StateTrigger IsActive="{x:Bind MailItem.IsRead, Converter={StaticResource ReverseBooleanConverter}, Mode=OneWay}" />
2024-04-18 01:44:37 +02:00
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="TitleText.Foreground" Value="{ThemeResource SystemAccentColor}" />
<Setter Target="TitleText.FontWeight" Value="Semibold" />
<Setter Target="SenderText.FontWeight" Value="Semibold" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Read" />
</VisualStateGroup>
<!-- Sizing States -->
<VisualStateGroup x:Name="SizingStates">
<VisualState x:Name="Compact">
<VisualState.Setters>
2024-08-26 01:07:51 +02:00
<Setter Target="RootContainer.Height" Value="50" />
2024-04-18 01:44:37 +02:00
<Setter Target="ContentGrid.Padding" Value="8,0" />
<Setter Target="PreviewTextContainer.Visibility" Value="Collapsed" />
</VisualState.Setters>
<VisualState.StateTriggers>
<StateTrigger IsActive="{x:Bind helpers:XamlHelpers.ObjectEquals(DisplayMode, enums:MailListDisplayMode.Compact), Mode=OneWay}" />
</VisualState.StateTriggers>
</VisualState>
<!-- Medium -->
<VisualState x:Name="Medium">
<VisualState.Setters>
2024-08-26 01:07:51 +02:00
<Setter Target="RootContainer.Height" Value="65" />
2024-04-18 01:44:37 +02:00
<Setter Target="ContentGrid.Padding" Value="6,0" />
<Setter Target="PreviewTextContainer.Visibility" Value="Visible" />
</VisualState.Setters>
<VisualState.StateTriggers>
<StateTrigger IsActive="{x:Bind helpers:XamlHelpers.ObjectEquals(DisplayMode, enums:MailListDisplayMode.Medium), Mode=OneWay}" />
</VisualState.StateTriggers>
</VisualState>
<!-- Spacious -->
<VisualState x:Name="Spacious">
<VisualState.Setters>
2024-08-26 01:07:51 +02:00
<Setter Target="RootContainer.Height" Value="Auto" />
2024-04-18 01:44:37 +02:00
<Setter Target="ContentGrid.Padding" Value="12,12,6,12" />
<Setter Target="PreviewTextContainer.Visibility" Value="Visible" />
</VisualState.Setters>
<VisualState.StateTriggers>
<StateTrigger IsActive="{x:Bind helpers:XamlHelpers.ObjectEquals(DisplayMode, enums:MailListDisplayMode.Spacious), Mode=OneWay}" />
</VisualState.StateTriggers>
</VisualState>
</VisualStateGroup>
<!-- Preview Text States -->
<VisualStateGroup x:Name="PreviewTextStates">
<VisualState x:Name="ShowText" />
<VisualState x:Name="HideText">
<VisualState.Setters>
<Setter Target="PreviewTextContainerRoot.Visibility" Value="Collapsed" />
</VisualState.Setters>
<VisualState.StateTriggers>
<StateTrigger IsActive="{x:Bind ShowPreviewText, Mode=OneWay, Converter={StaticResource ReverseBooleanConverter}}" />
</VisualState.StateTriggers>
</VisualState>
</VisualStateGroup>
<!-- Thread Expanding States -->
<VisualStateGroup x:Name="ExpanderStates">
<VisualState x:Name="NotExpanded" />
<VisualState x:Name="ExpandedState">
<VisualState.Setters>
2024-08-31 03:18:43 +02:00
<Setter Target="ExpandCollapseChevron.(controls:AnimatedIcon.State)" Value="NormalOn" />
</VisualState.Setters>
<VisualState.StateTriggers>
<StateTrigger IsActive="{x:Bind IsThreadExpanded, Mode=OneWay}" />
</VisualState.StateTriggers>
</VisualState>
</VisualStateGroup>
2024-04-18 01:44:37 +02:00
</VisualStateManager.VisualStateGroups>
</Grid>
</UserControl>