Skip to content
This repository was archived by the owner on Apr 30, 2024. It is now read-only.

Commit 5737d57

Browse files
committed
Removed ContinuationTemplate and added visual state
1 parent 7efec8d commit 5737d57

3 files changed

Lines changed: 77 additions & 74 deletions

File tree

src/Quarrel/Controls/Panels/Messages/MessagePanel.xaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
<UserControl.Resources>
1616
<mselectors:MessageTemplateSelector x:Key="MessageTemplateSelector"
1717
DefaultTemplate="{StaticResource DefaultMessageTemplate}"
18-
ContinuationTemplate="{StaticResource ContinuationTemplate}"
1918
InfoTemplate="{StaticResource InfoMessageTemplate}"/>
2019
</UserControl.Resources>
2120

src/Quarrel/DataTemplates/MessageTemplates.xaml

Lines changed: 77 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -6,88 +6,100 @@
66
xmlns:mconvert="using:Quarrel.Converters.DataTemplates.Messages"
77
xmlns:tconvert="using:Quarrel.Converters.Time"
88
xmlns:qc="using:Quarrel.Controls"
9+
xmlns:mcontrols="using:Quarrel.Controls.Panels.Messages"
910
xmlns:bindablemessages="using:Quarrel.Bindables.Messages"
1011
xmlns:bindableembeds="using:Quarrel.Bindables.Messages.Embeds"
1112
xmlns:markdown="using:Quarrel.Markdown"
1213
xmlns:converters="using:Quarrel.Converters">
1314

1415
<DataTemplate x:Key="DefaultMessageTemplate" x:DataType="bindablemessages:BindableMessage">
15-
<Grid Padding="2,12,2,4">
16-
<Grid.ColumnDefinitions>
17-
<ColumnDefinition Width="64"/>
18-
<ColumnDefinition Width="*"/>
19-
</Grid.ColumnDefinitions>
16+
<!--Grid must be wrapped in a user control to enable the VisualStateManager-->
17+
<UserControl>
18+
<Grid x:Name="RootGrid" Padding="2,12,2,4">
19+
<VisualStateManager.VisualStateGroups>
20+
<VisualStateGroup>
21+
<VisualState x:Name="Default">
22+
<VisualState.StateTriggers>
23+
<StateTrigger IsActive="{x:Bind converters:InverseBoolConverter.Convert(IsContinuation), Mode=OneWay}"/>
24+
</VisualState.StateTriggers>
25+
<VisualState.Setters>
26+
<Setter Target="RootGrid.Padding" Value="2,12,2,4"/>
27+
<Setter Target="Header.Visibility" Value="Visible"/>
28+
<Setter Target="ProfileImageContainer.Visibility" Value="Visible"/>
29+
</VisualState.Setters>
30+
</VisualState>
31+
<VisualState x:Name="Continuation">
32+
<VisualState.StateTriggers>
33+
<StateTrigger IsActive="{x:Bind IsContinuation, Mode=OneWay}"/>
34+
</VisualState.StateTriggers>
35+
<VisualState.Setters>
36+
<Setter Target="RootGrid.Padding" Value="2,2,0,2"/>
37+
<Setter Target="Header.Visibility" Value="Collapsed"/>
38+
<Setter Target="ProfileImageContainer.Visibility" Value="Collapsed"/>
39+
</VisualState.Setters>
40+
</VisualState>
41+
</VisualStateGroup>
42+
</VisualStateManager.VisualStateGroups>
2043

21-
<!--Image-->
22-
<Border x:Name="ProfileImageContainer" Width="36" Height="36"
23-
CornerRadius="18" VerticalAlignment="Top">
24-
<tc:ImageEx Source="{x:Bind Author.AvatarUri}"/>
25-
</Border>
44+
<Grid.ColumnDefinitions>
45+
<ColumnDefinition Width="64"/>
46+
<ColumnDefinition Width="*"/>
47+
</Grid.ColumnDefinitions>
2648

27-
<Grid Grid.Column="1">
28-
<Grid.RowDefinitions>
29-
<RowDefinition Height="auto"/>
30-
<RowDefinition/>
31-
</Grid.RowDefinitions>
49+
<!--Image-->
50+
<Border x:Name="ProfileImageContainer" Width="36" Height="36"
51+
CornerRadius="18" VerticalAlignment="Top">
52+
<tc:ImageEx Source="{x:Bind Author.AvatarUri}"/>
53+
</Border>
3254

33-
<StackPanel Orientation="Horizontal" Margin="0,-2,0,0" x:Name="UsernameContainer">
34-
<HyperlinkButton Content="{x:Bind Author.User.Username}" Style="{StaticResource PlainTextHyperlinkStyle}"
35-
FontSize="14"/>
36-
<TextBlock Text="{x:Bind tconvert:SmartTimeFormatConverter.Convert(Message.Timestamp)}"
37-
VerticalAlignment="Center"
38-
FontSize="12" Opacity=".5" Margin="6,0"/>
39-
</StackPanel>
55+
<Grid Grid.Column="1">
56+
<Grid.RowDefinitions>
57+
<RowDefinition Height="auto"/>
58+
<RowDefinition/>
59+
</Grid.RowDefinitions>
4060

41-
<StackPanel Grid.Row="1">
42-
<markdown:MessageRenderer Text="{x:Bind Content, Mode=OneWay}" Context="{x:Bind}"
43-
HorizontalAlignment="Left"/>
61+
<StackPanel x:Name="Header" Orientation="Horizontal" Margin="0,-2,0,0">
62+
<HyperlinkButton Content="{x:Bind Author.User.Username}" Style="{StaticResource PlainTextHyperlinkStyle}"
63+
FontSize="14"/>
64+
<TextBlock Text="{x:Bind tconvert:SmartTimeFormatConverter.Convert(Message.Timestamp)}"
65+
VerticalAlignment="Center" FontSize="12" Opacity=".5" Margin="6,0"/>
66+
</StackPanel>
4467

45-
<ItemsControl ItemsSource="{x:Bind Attachments}"
46-
HorizontalAlignment="Left">
47-
<ItemsControl.ItemTemplate>
48-
<DataTemplate x:DataType="bindableembeds:BindableAttachment">
49-
<tc:ImageEx Source="{x:Bind Attachment.ProxyUrl}" MaxWidth="400"
50-
CornerRadius="2"/>
51-
</DataTemplate>
52-
</ItemsControl.ItemTemplate>
53-
</ItemsControl>
54-
</StackPanel>
55-
</Grid>
56-
</Grid>
57-
</DataTemplate>
68+
<StackPanel Grid.Row="1">
69+
<markdown:MessageRenderer Text="{x:Bind Message.Content, Mode=OneWay}" Context="{x:Bind}"
70+
HorizontalAlignment="Left"/>
5871

59-
<DataTemplate x:Key="ContinuationTemplate" x:DataType="bindablemessages:BindableMessage">
60-
<StackPanel Margin="64,2,0,2">
61-
<markdown:MessageRenderer Text="{x:Bind Content, Mode=OneWay}" Context="{x:Bind}"
62-
HorizontalAlignment="Left"/>
63-
64-
<ItemsControl ItemsSource="{x:Bind Attachments}"
65-
HorizontalAlignment="Left">
66-
<ItemsControl.ItemTemplate>
67-
<DataTemplate x:DataType="bindableembeds:BindableAttachment">
68-
<tc:ImageEx Source="{x:Bind Attachment.ProxyUrl}" MaxWidth="400"
69-
CornerRadius="2"/>
70-
</DataTemplate>
71-
</ItemsControl.ItemTemplate>
72-
</ItemsControl>
73-
</StackPanel>
72+
<ItemsControl ItemsSource="{x:Bind Message.Attachments}"
73+
HorizontalAlignment="Left">
74+
<ItemsControl.ItemTemplate>
75+
<DataTemplate x:DataType="bindableembeds:BindableAttachment">
76+
<tc:ImageEx Source="{x:Bind Attachment.ProxyUrl}" MaxWidth="400" CornerRadius="2"/>
77+
</DataTemplate>
78+
</ItemsControl.ItemTemplate>
79+
</ItemsControl>
80+
</StackPanel>
81+
</Grid>
82+
</Grid>
83+
</UserControl>
7484
</DataTemplate>
7585

7686
<DataTemplate x:Key="InfoMessageTemplate" x:DataType="bindablemessages:BindableMessage">
77-
<Grid VerticalAlignment="Center">
78-
<Grid.ColumnDefinitions>
79-
<ColumnDefinition Width="64"/>
80-
<ColumnDefinition Width="auto"/>
81-
<ColumnDefinition Width="auto"/>
82-
</Grid.ColumnDefinitions>
83-
<FontIcon Glyph="{x:Bind mconvert:InfoMessageIconConverter.Convert(Message.Type)}"
84-
Foreground="{x:Bind mconvert:InfoMessageColorConverter.Convert(Message.Type)}"/>
87+
<Grid Height="32">
88+
<Grid VerticalAlignment="Center">
89+
<Grid.ColumnDefinitions>
90+
<ColumnDefinition Width="64"/>
91+
<ColumnDefinition Width="auto"/>
92+
<ColumnDefinition Width="auto"/>
93+
</Grid.ColumnDefinitions>
94+
<FontIcon Glyph="{x:Bind mconvert:InfoMessageIconConverter.Convert(Message.Type)}"
95+
Foreground="{x:Bind mconvert:InfoMessageColorConverter.Convert(Message.Type)}"/>
8596

86-
<markdown:MessageRenderer Grid.Column="1" Margin="0,-5,0,0" Context="{x:Bind}" HorizontalAlignment="Left"
87-
Text="{x:Bind mconvert:InfoMessageContentConverter.Convert((bindablemessages:BindableMessage))}"/>
97+
<markdown:MessageRenderer Grid.Column="1" Margin="0,-5,0,0" Context="{x:Bind}" HorizontalAlignment="Left"
98+
Text="{x:Bind mconvert:InfoMessageContentConverter.Convert((bindablemessages:BindableMessage))}"/>
8899

89-
<TextBlock Grid.Column="2" Text="{x:Bind tconvert:SmartTimeFormatConverter.Convert(Message.Timestamp)}"
90-
Opacity=".5" Margin="8,0"/>
100+
<TextBlock Grid.Column="2" Text="{x:Bind tconvert:SmartTimeFormatConverter.Convert(Message.Timestamp)}"
101+
Opacity=".5" Margin="8,0"/>
102+
</Grid>
91103
</Grid>
92104
</DataTemplate>
93105

src/Quarrel/Selectors/Messages/MessageTemplateSelector.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,11 @@ public class MessageTemplateSelector : DataTemplateSelector
1111
{
1212
public DataTemplate DefaultTemplate { get; set; }
1313

14-
public DataTemplate ContinuationTemplate { get; set; }
15-
1614
public DataTemplate InfoTemplate { get; set; }
1715

1816
protected override DataTemplate? SelectTemplateCore(object item, DependencyObject container)
1917
{
2018
BindableMessage message = (BindableMessage)item;
21-
22-
if (message.IsContinuation)
23-
{
24-
return ContinuationTemplate;
25-
}
26-
2719
return message.Message.Type switch
2820
{
2921
MessageType.Default or MessageType.Reply => DefaultTemplate,

0 commit comments

Comments
 (0)