Files
KfChatDotNet/KfChatDotNetGui/Views/MainWindow.axaml
barelyprofessional 9f92fc8e27 Initial commit
2024-03-25 20:11:49 +08:00

107 lines
6.2 KiB
XML

<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:KfChatDotNetGui.ViewModels"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
Width="800"
Height="450"
x:Class="KfChatDotNetGui.Views.MainWindow"
Icon="/Assets/avalonia-logo.ico"
Title="KfChatDotNetGui">
<Design.DataContext>
<vm:MainWindowViewModel/>
</Design.DataContext>
<Window.Styles>
<Style Selector="ListBoxItem">
<Setter Property="VerticalContentAlignment" Value="Stretch" />
</Style>
</Window.Styles>
<Grid RowDefinitions="Auto,*,Auto,Auto">
<Menu Grid.Row="0">
<MenuItem Header="_File">
<MenuItem Click="ConnectMenuItem_OnClick" Header="_Connect"/>
<Separator/>
<MenuItem Click="ExitMenuItem_OnClick" Header="_Exit"/>
</MenuItem>
<MenuItem Header="_Settings">
<MenuItem Click="IdentitySettings_OnClick" Header="_Identity"/>
<MenuItem Click="RoomSettingsMenuItem_OnClick" Header="_Rooms"/>
<MenuItem Header="_Preferences"/>
</MenuItem>
</Menu>
<Grid Grid.Row="1" ColumnDefinitions="100,4,*,4,200">
<ListBox SelectionChanged="RoomList_OnSelectionChanged" Grid.Column="0" Name="RoomList" ItemsSource="{Binding RoomList}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<GridSplitter Grid.Column="1"/>
<ListBox Grid.Column="2" Name="ChatMessageList" ItemsSource="{Binding Messages}">
<ListBox.Styles>
<Style Selector="ListBoxItem">
<Setter Property="VerticalAlignment" Value="Stretch"/>
</Style>
</ListBox.Styles>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid ColumnDefinitions="Auto,*">
<!-- <Image VerticalAlignment="Top" Margin="0,0,5,0" MaxHeight="32" Grid.Column="0" Source="{Binding Avatar}"/> -->
<Grid Grid.Column="1" RowDefinitions="Auto,Auto">
<Grid Grid.Row="0" ColumnDefinitions="Auto,Auto">
<Button Grid.Column="0" Click="AuthorNameButton_OnClick" Foreground="LightBlue" Background="Transparent" Padding="0" Margin="0,0,5,0" Content="{Binding Author}"/>
<TextBlock Grid.Column="1" FontSize="10" VerticalAlignment="Center" Foreground="Gray" Text="{Binding PostedAt}"/>
</Grid>
<!-- <TextBlock TextWrapping="Wrap" FontWeight="Light" Grid.Row="1" Text="{Binding Message}"/> -->
<ListBox Grid.Row="1" ItemsSource="{Binding Messages}" PointerEntered="OuterMessageRow_OnPointerEnter" ScrollViewer.VerticalScrollBarVisibility="Disabled">
<ListBox.Styles>
<Style Selector="ListBoxItem">
<Setter Property="Padding" Value="0"/>
<Setter Property="Margin" Value="0"/>
</Style>
<Style Selector="Button">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="FontSize" Value="11"/>
<Setter Property="Padding" Value="0"/>
<Setter Property="Margin" Value="0,0,5,0"/>
</Style>
</ListBox.Styles>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid ColumnDefinitions="*,Auto" RowDefinitions="*">
<TextBlock Grid.Column="0" TextWrapping="Wrap" FontWeight="Light" Text="{Binding Message}"/>
<WrapPanel Grid.Column="1" IsVisible="{Binding IsHighlighted}">
<Button Click="MessageEditButton_OnClick" IsVisible="{Binding OwnMessage}" Foreground="Orange">Edit</Button>
<Button Click="MessageDeleteButton_OnClick" IsVisible="{Binding OwnMessage}" Foreground="Red">Delete</Button>
<Button Click="CopyButton_OnClick" Foreground="LightBlue">Copy</Button>
</WrapPanel>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<GridSplitter Grid.Column="3"></GridSplitter>
<ListBox Grid.Column="4" Name="UserList" ItemsSource="{Binding UserList}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
<Grid Margin="1" Grid.Row="2" ColumnDefinitions="*,Auto">
<TextBox KeyDown="NewChatMessage_OnKeyDown" Name="NewChatMessage" Grid.Column="0" BorderBrush="Gray" TextWrapping="NoWrap"/>
<Button Click="NewChatMessageSubmitButton_OnClick" Grid.Column="1">Send</Button>
</Grid>
<TextBlock Grid.Row="3" Text="{Binding Status}"/>
</Grid>
</Window>