Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions StarlightGUI/LogConsolePage.idl
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace StarlightGUI
{
[default_interface]
runtimeclass LogConsolePage : Microsoft.UI.Xaml.Controls.Page
{
LogConsolePage();
}
}
307 changes: 307 additions & 0 deletions StarlightGUI/LogConsolePage.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,307 @@
<Page
x:Class="StarlightGUI.LogConsolePage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ct="using:XamlToolkit.WinUI.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:essential="using:WinUI3Package"
xmlns:local="using:StarlightGUI"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Background="{StaticResource WindowBackgroundBrush}"
NavigationCacheMode="Enabled"
mc:Ignorable="d">

<Grid>
<Grid Padding="20,10,20,10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>

<!-- 标题栏区域 -->
<Grid
Grid.Row="0"
Padding="0,0,0,5"
Background="{StaticResource WindowBackgroundBrush}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>

<TextBlock
x:Name="LogConsoleTitleUid"
Grid.Column="0"
VerticalAlignment="Center"
FontSize="18"
FontWeight="Bold"
Text="Log Console" />

<TextBlock
x:Name="LogCountText"
Grid.Column="1"
Margin="10,0,0,0"
VerticalAlignment="Center"
Foreground="{ThemeResource SystemControlForegroundBaseMediumBrush}"
Text="" />

<CommandBar
Grid.Column="3"
HorizontalAlignment="Right"
DefaultLabelPosition="Right">
<AppBarToggleButton
x:Name="AutoScrollButton"
IsChecked="True"
Label="Auto Scroll">
<AppBarToggleButton.Icon>
<FontIcon FontFamily="Segoe Fluent Icons" Glyph="&#xe74b;" />
</AppBarToggleButton.Icon>
</AppBarToggleButton>
<AppBarButton
x:Name="ClearButton"
Click="ClearButton_Click"
Label="Clear">
<AppBarButton.Icon>
<FontIcon FontFamily="Segoe Fluent Icons" Glyph="&#xe74d;" />
</AppBarButton.Icon>
</AppBarButton>
<AppBarButton
x:Name="SaveButton"
Click="SaveButton_Click"
Label="Save">
<AppBarButton.Icon>
<FontIcon FontFamily="Segoe Fluent Icons" Glyph="&#xe74e;" />
</AppBarButton.Icon>
</AppBarButton>
</CommandBar>

<TextBox
x:Name="LogSearchBox"
Grid.Column="4"
Width="300"
Height="32"
HorizontalAlignment="Right"
PlaceholderText="Search logs..."
TextChanged="LogSearchBox_TextChanged" />
</Grid>

<!-- 过滤器 -->
<StackPanel
Grid.Row="1"
Margin="0,0,0,5"
Orientation="Horizontal"
Spacing="8">
<ToggleButton
x:Name="FilterInfoButton"
Click="FilterButton_Click"
Content="INFO"
IsChecked="True"
Tag="INFO" />
<ToggleButton
x:Name="FilterWarningButton"
Click="FilterButton_Click"
Content="WARNING"
IsChecked="True"
Tag="WARNING" />
<ToggleButton
x:Name="FilterErrorButton"
Click="FilterButton_Click"
Content="ERROR"
IsChecked="True"
Tag="ERROR" />
<ToggleButton
x:Name="FilterOtherButton"
Click="FilterButton_Click"
Content="OTHER"
IsChecked="True"
Tag="OTHER" />
</StackPanel>

<!-- 表格区域:列头 + 内容共享同一个 Grid -->
<Border
Grid.Row="2"
BorderBrush="{ThemeResource SystemControlBackgroundBaseLowBrush}"
BorderThickness="1"
CornerRadius="5">
<Grid x:Name="TableGrid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="ColTimestamp" Width="160" MinWidth="80" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition x:Name="ColLevel" Width="80" MinWidth="50" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition x:Name="ColSource" Width="160" MinWidth="60" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition x:Name="ColMessage" Width="*" MinWidth="100" />
</Grid.ColumnDefinitions>

<!-- 列头 -->
<Button
x:Name="TimestampHeaderButton"
Grid.Row="0"
Grid.Column="0"
Height="32"
HorizontalAlignment="Stretch"
Content="Timestamp"
CornerRadius="0"
IsEnabled="False" />
<Button
x:Name="LevelHeaderButton"
Grid.Row="0"
Grid.Column="2"
Height="32"
HorizontalAlignment="Stretch"
Content="Level"
CornerRadius="0"
IsEnabled="False" />
<Button
x:Name="SourceHeaderButton"
Grid.Row="0"
Grid.Column="4"
Height="32"
HorizontalAlignment="Stretch"
Content="Source"
CornerRadius="0"
IsEnabled="False" />
<Button
x:Name="MessageHeaderButton"
Grid.Row="0"
Grid.Column="6"
Height="32"
HorizontalAlignment="Stretch"
Content="Message"
CornerRadius="0"
IsEnabled="False" />

<!-- GridSplitters (拖拽调整列宽) -->
<ct:GridSplitter
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="1"
Width="2"
HorizontalAlignment="Center"
Background="{ThemeResource SystemControlBackgroundBaseLowBrush}"
Foreground="{ThemeResource SystemControlBackgroundBaseLowBrush}"
ResizeBehavior="PreviousAndNext"
ResizeDirection="Columns" />
<ct:GridSplitter
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="3"
Width="2"
HorizontalAlignment="Center"
Background="{ThemeResource SystemControlBackgroundBaseLowBrush}"
Foreground="{ThemeResource SystemControlBackgroundBaseLowBrush}"
ResizeBehavior="PreviousAndNext"
ResizeDirection="Columns" />
<ct:GridSplitter
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="5"
Width="2"
HorizontalAlignment="Center"
Background="{ThemeResource SystemControlBackgroundBaseLowBrush}"
Foreground="{ThemeResource SystemControlBackgroundBaseLowBrush}"
ResizeBehavior="PreviousAndNext"
ResizeDirection="Columns" />

<!-- 内容 -->
<Border
Grid.Row="1"
Grid.ColumnSpan="7"
Background="{ThemeResource ControlFillColorDefaultBrush}"
BorderBrush="{ThemeResource SystemControlBackgroundBaseLowBrush}"
BorderThickness="0,1,0,0">
<Grid>
<ProgressRing
x:Name="LoadingRing"
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsActive="False" />

<ListView
x:Name="LogListView"
Background="Transparent"
ContainerContentChanging="LogListView_ContainerContentChanging"
RightTapped="LogListView_RightTapped"
SelectionMode="Extended">
<ListView.ItemContainerStyle>
<Style BasedOn="{StaticResource ListViewItemStyle}" TargetType="ListViewItem">
<Setter Property="Padding" Value="0" />
<Setter Property="MinHeight" Value="0" />
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Grid Height="36" Padding="0,2,0,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="160" />
<ColumnDefinition Width="80" />
<ColumnDefinition Width="160" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>

<!-- Timestamp -->
<TextBlock
Grid.Column="0"
VerticalAlignment="Center"
FontFamily="Consolas"
FontSize="12"
Foreground="{ThemeResource SystemControlForegroundBaseMediumBrush}"
Text="{Binding Timestamp}"
TextTrimming="CharacterEllipsis" />

<!-- Level -->
<Border
Grid.Column="1"
Margin="8,4,8,4"
Padding="6,2,6,2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
CornerRadius="4">
<TextBlock
FontFamily="Consolas"
FontSize="11"
FontWeight="SemiBold"
Text="{Binding Level}"
TextAlignment="Center" />
</Border>

<!-- Source -->
<TextBlock
Grid.Column="2"
Margin="8,0,0,0"
VerticalAlignment="Center"
FontFamily="Consolas"
FontSize="12"
Foreground="{ThemeResource SystemControlForegroundBaseHighBrush}"
Text="{Binding Source}"
TextTrimming="CharacterEllipsis" />

<!-- Message -->
<TextBlock
Grid.Column="3"
Margin="8,0,0,0"
VerticalAlignment="Center"
FontFamily="Consolas"
FontSize="12"
Foreground="{ThemeResource SystemControlForegroundBaseMediumHighBrush}"
Text="{Binding Message}"
TextTrimming="CharacterEllipsis" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</Border>
</Grid>
</Border>
</Grid>
</Grid>
</Page>
Loading
Loading