mirror of
https://github.com/sourcegit-scm/sourcegit.git
synced 2024-12-26 21:17:20 -08:00
245 lines
13 KiB
XML
245 lines
13 KiB
XML
<UserControl xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:m="using:SourceGit.Models"
|
|
xmlns:vm="using:SourceGit.ViewModels"
|
|
xmlns:v="using:SourceGit.Views"
|
|
xmlns:c="using:SourceGit.Converters"
|
|
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
|
x:Class="SourceGit.Views.Histories"
|
|
x:DataType="vm:Histories"
|
|
x:Name="ThisControl">
|
|
<v:LayoutableGrid RowDefinitions="*,3,*" ColumnDefinitions="*,3,*"
|
|
UseHorizontal="{Binding Source={x:Static vm:Preference.Instance}, Path=UseTwoColumnsLayoutInHistories}">
|
|
<Grid Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3">
|
|
<Grid RowDefinitions="24,*">
|
|
<!-- Headers -->
|
|
<Border Grid.Row="0"
|
|
Background="{DynamicResource Brush.Window}"
|
|
BorderThickness="0,0,0,1"
|
|
BorderBrush="{DynamicResource Brush.Border0}">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" MinWidth="100"/>
|
|
<ColumnDefinition Width="3"/>
|
|
<ColumnDefinition Width="{Binding #ThisControl.AuthorNameColumnWidth, Mode=TwoWay}" MinWidth="80"/>
|
|
<ColumnDefinition Width="100" MaxWidth="100" MinWidth="100"/>
|
|
<ColumnDefinition Width="170" MaxWidth="170" MinWidth="170"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<TextBlock Grid.Column="0" Classes="table_header" Text="{DynamicResource Text.Histories.Header.GraphAndSubject}" HorizontalAlignment="Center"/>
|
|
<GridSplitter Grid.Column="1" Background="Transparent" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
|
|
<Border Grid.Column="2" BorderThickness="1,0,0,0" BorderBrush="{DynamicResource Brush.Border0}" ClipToBounds="True">
|
|
<TextBlock Classes="table_header" Text="{DynamicResource Text.Histories.Header.Author}" HorizontalAlignment="Center"/>
|
|
</Border>
|
|
<Border Grid.Column="3" BorderThickness="1,0" BorderBrush="{DynamicResource Brush.Border0}" ClipToBounds="True">
|
|
<TextBlock Classes="table_header" Text="{DynamicResource Text.Histories.Header.SHA}" HorizontalAlignment="Center"/>
|
|
</Border>
|
|
<StackPanel Grid.Column="4" Orientation="Horizontal" HorizontalAlignment="Center">
|
|
<ToggleButton Classes="time_display_mode"
|
|
Width="10" Height="10"
|
|
IsChecked="{Binding Source={x:Static vm:Preference.Instance}, Path=DisplayTimeAsPeriodInHistories, Mode=TwoWay}"/>
|
|
<TextBlock Classes="table_header" Margin="6,0,0,0" Text="{DynamicResource Text.Histories.Header.Time}"/>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- Commit Lists & Graph -->
|
|
<Grid Grid.Row="1">
|
|
<ListBox x:Name="CommitListContainer"
|
|
Background="{DynamicResource Brush.Contents}"
|
|
ItemsSource="{Binding Commits}"
|
|
SelectionMode="Multiple"
|
|
SelectedItem="{Binding AutoSelectedCommit, Mode=OneWay}"
|
|
LayoutUpdated="OnCommitListLayoutUpdated"
|
|
SelectionChanged="OnCommitListSelectionChanged"
|
|
ContextRequested="OnCommitListContextRequested"
|
|
DoubleTapped="OnCommitListDoubleTapped"
|
|
KeyDown="OnCommitListKeyDown">
|
|
<ListBox.Styles>
|
|
<Style Selector="ListBoxItem">
|
|
<Setter Property="Margin" Value="0"/>
|
|
<Setter Property="Padding" Value="0"/>
|
|
<Setter Property="Height" Value="28"/>
|
|
<Setter Property="Template">
|
|
<ControlTemplate>
|
|
<Grid>
|
|
<Border Name="PART_Background"
|
|
Background="Transparent"
|
|
CornerRadius="{TemplateBinding CornerRadius}"
|
|
Opacity="0"/>
|
|
|
|
<ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}"
|
|
Content="{TemplateBinding Content}"
|
|
Padding="{TemplateBinding Padding}"
|
|
VerticalContentAlignment="Center"
|
|
HorizontalContentAlignment="Stretch" />
|
|
</Grid>
|
|
</ControlTemplate>
|
|
</Setter>
|
|
|
|
<Style Selector="^:pointerover /template/ Border#PART_Background">
|
|
<Setter Property="Background" Value="{DynamicResource Brush.AccentHovered}" />
|
|
<Setter Property="Opacity" Value=".5"/>
|
|
</Style>
|
|
<Style Selector="^:selected /template/ Border#PART_Background">
|
|
<Setter Property="Background" Value="{DynamicResource Brush.Accent}" />
|
|
<Setter Property="Opacity" Value=".65"/>
|
|
</Style>
|
|
<Style Selector="^:selected:pointerover /template/ Border#PART_Background">
|
|
<Setter Property="Background" Value="{DynamicResource Brush.Accent}" />
|
|
<Setter Property="Opacity" Value=".8"/>
|
|
</Style>
|
|
</Style>
|
|
</ListBox.Styles>
|
|
|
|
<ListBox.ItemsPanel>
|
|
<ItemsPanelTemplate>
|
|
<VirtualizingStackPanel Orientation="Vertical"/>
|
|
</ItemsPanelTemplate>
|
|
</ListBox.ItemsPanel>
|
|
|
|
<ListBox.ItemTemplate>
|
|
<DataTemplate DataType="m:Commit">
|
|
<Grid Height="26">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="{Binding #ThisControl.AuthorNameColumnWidth, Mode=OneWay}"/>
|
|
<ColumnDefinition Width="100" MaxWidth="100" MinWidth="100"/>
|
|
<ColumnDefinition Width="170" MaxWidth="170" MinWidth="170"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- Subject & REFS -->
|
|
<Border Grid.Column="0" Padding="{Binding Margin}" ClipToBounds="True">
|
|
<Grid ColumnDefinitions="Auto,Auto,*" Margin="2,0,4,0" ClipToBounds="True">
|
|
<v:CommitStatusIndicator Grid.Column="0"
|
|
CurrentBranch="{Binding $parent[v:Histories].CurrentBranch}"
|
|
AheadBrush="{DynamicResource Brush.Accent}"
|
|
BehindBrush="{DynamicResource Brush.FG1}"
|
|
VerticalAlignment="Center"/>
|
|
|
|
<v:CommitRefsPresenter Grid.Column="1"
|
|
IconBackground="{DynamicResource Brush.DecoratorIconBG}"
|
|
IconForeground="{DynamicResource Brush.DecoratorIcon}"
|
|
BranchNameBackground="{DynamicResource Brush.DecoratorBranch}"
|
|
HeadBranchNameBackground="{DynamicResource Brush.DecoratorHead}"
|
|
TagNameBackground="{DynamicResource Brush.DecoratorTag}"
|
|
LabelForeground="{DynamicResource Brush.DecoratorFG}"
|
|
FontFamily="{DynamicResource Fonts.Primary}"
|
|
FontSize="11"
|
|
VerticalAlignment="Center"
|
|
Refs="{Binding Decorators}"/>
|
|
|
|
<v:CommitSubjectPresenter Grid.Column="2"
|
|
Classes="primary"
|
|
Subject="{Binding Subject}"
|
|
IssueTrackerRules="{Binding $parent[v:Histories].IssueTrackerRules}"
|
|
FontWeight="{Binding FontWeight}"
|
|
Opacity="{Binding Opacity}"/>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- Author -->
|
|
<Grid Grid.Column="1" ColumnDefinitions="20,*" IsHitTestVisible="False">
|
|
<v:Avatar Grid.Column="0"
|
|
Width="16" Height="16"
|
|
Margin="4,0,0,0"
|
|
HorizontalAlignment="Left"
|
|
VerticalAlignment="Center"
|
|
IsHitTestVisible="False"
|
|
User="{Binding Author}"
|
|
Opacity="{Binding Opacity}"/>
|
|
|
|
<Border Grid.Column="1" Padding="8,0,0,0" ClipToBounds="True">
|
|
<TextBlock Classes="primary"
|
|
Text="{Binding Author.Name}"
|
|
FontWeight="{Binding FontWeight}"
|
|
HorizontalAlignment="Left"
|
|
Opacity="{Binding Opacity}"/>
|
|
</Border>
|
|
</Grid>
|
|
|
|
<!-- SHA -->
|
|
<Border Grid.Column="2" Padding="4,0" IsHitTestVisible="False" ClipToBounds="True">
|
|
<TextBlock Classes="primary"
|
|
Text="{Binding SHA, Converter={x:Static c:StringConverters.ToShortSHA}}"
|
|
HorizontalAlignment="Center"
|
|
FontWeight="{Binding FontWeight}"
|
|
Opacity="{Binding Opacity}"/>
|
|
</Border>
|
|
|
|
<!-- COMMIT TIME -->
|
|
<Border Grid.Column="3" Padding="4,0" ClipToBounds="True" IsHitTestVisible="False">
|
|
<v:CommitTimeTextBlock Classes="primary"
|
|
HorizontalAlignment="Center"
|
|
FontWeight="{Binding FontWeight}"
|
|
Opacity="{Binding Opacity}"
|
|
Timestamp="{Binding CommitterTime}"
|
|
ShowAsDateTime="{Binding Source={x:Static vm:Preference.Instance}, Path=!DisplayTimeAsPeriodInHistories}"/>
|
|
</Border>
|
|
</Grid>
|
|
</DataTemplate>
|
|
</ListBox.ItemTemplate>
|
|
</ListBox>
|
|
|
|
<v:CommitGraph x:Name="CommitGraph"
|
|
Graph="{Binding Graph}"
|
|
DotBrush="{DynamicResource Brush.Contents}"
|
|
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
|
|
IsHitTestVisible="False"
|
|
ClipToBounds="True"/>
|
|
</Grid>
|
|
</Grid>
|
|
|
|
<!-- Fix memory leak -->
|
|
<v:LoadingIcon Width="48" Height="48" HorizontalAlignment="Center" VerticalAlignment="Center" IsVisible="{Binding IsLoading}"/>
|
|
</Grid>
|
|
|
|
<GridSplitter Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3"
|
|
MinWidth="1" MinHeight="1"
|
|
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
|
|
Background="{DynamicResource Brush.Window}"
|
|
BorderBrush="{DynamicResource Brush.Border0}"/>
|
|
|
|
<Border Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3">
|
|
<ContentControl>
|
|
<ContentControl.Content>
|
|
<Binding Path="DetailContext">
|
|
<Binding.TargetNullValue>
|
|
<Path Width="128" Height="128"
|
|
Data="{StaticResource Icons.Detail}"
|
|
HorizontalAlignment="Center"
|
|
Fill="{DynamicResource Brush.FG2}"/>
|
|
</Binding.TargetNullValue>
|
|
</Binding>
|
|
</ContentControl.Content>
|
|
|
|
<ContentControl.DataTemplates>
|
|
<DataTemplate DataType="vm:CommitDetail">
|
|
<v:CommitDetail/>
|
|
</DataTemplate>
|
|
|
|
<DataTemplate DataType="vm:RevisionCompare">
|
|
<v:RevisionCompare/>
|
|
</DataTemplate>
|
|
|
|
<DataTemplate DataType="x:Int32">
|
|
<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
|
|
<Path Width="128" Height="128"
|
|
Data="{StaticResource Icons.Detail}"
|
|
HorizontalAlignment="Center"
|
|
Fill="{DynamicResource Brush.FG2}"/>
|
|
|
|
<TextBlock HorizontalAlignment="Center"
|
|
Margin="0,16"
|
|
FontSize="24" FontWeight="Bold"
|
|
Foreground="{DynamicResource Brush.FG2}"
|
|
Text="{Binding Converter={x:Static c:StringConverters.FormatByResourceKey}, ConverterParameter='Histories.Selected'}"/>
|
|
</StackPanel>
|
|
</DataTemplate>
|
|
</ContentControl.DataTemplates>
|
|
</ContentControl>
|
|
</Border>
|
|
</v:LayoutableGrid>
|
|
</UserControl>
|