|
|
|
<controls:UserControlBase
|
|
|
|
x:Class="StabilityMatrix.Avalonia.Views.ProgressManagerPage"
|
|
|
|
xmlns="https://github.com/avaloniaui"
|
|
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
|
|
xmlns:controls="clr-namespace:StabilityMatrix.Avalonia.Controls"
|
|
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
|
|
xmlns:fluentAvalonia="clr-namespace:FluentIcons.FluentAvalonia;assembly=FluentIcons.FluentAvalonia"
|
|
|
|
xmlns:icons="clr-namespace:Projektanker.Icons.Avalonia;assembly=Projektanker.Icons.Avalonia"
|
|
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
|
|
xmlns:mocks="clr-namespace:StabilityMatrix.Avalonia.DesignData"
|
|
|
|
xmlns:ui="using:FluentAvalonia.UI.Controls"
|
|
|
|
xmlns:vm="clr-namespace:StabilityMatrix.Avalonia.ViewModels"
|
|
|
|
xmlns:vmBase="clr-namespace:StabilityMatrix.Avalonia.ViewModels.Base"
|
|
|
|
xmlns:progress="clr-namespace:StabilityMatrix.Avalonia.ViewModels.Progress"
|
|
|
|
MaxHeight="250"
|
|
|
|
d:DataContext="{x:Static mocks:DesignData.ProgressManagerViewModel}"
|
|
|
|
d:DesignHeight="250"
|
|
|
|
d:DesignWidth="300"
|
|
|
|
x:DataType="progress:ProgressManagerViewModel"
|
|
|
|
mc:Ignorable="d">
|
|
|
|
<ScrollViewer>
|
|
|
|
<Grid RowDefinitions="Auto, *">
|
|
|
|
<TextBlock
|
|
|
|
Grid.Row="0"
|
|
|
|
VerticalAlignment="Center"
|
|
|
|
FontSize="16"
|
|
|
|
Text="Downloads"
|
|
|
|
TextAlignment="Left"
|
|
|
|
TextDecorations="Underline" />
|
|
|
|
<Button
|
|
|
|
Grid.Row="0"
|
|
|
|
Margin="0,0,8,0"
|
|
|
|
Padding="4"
|
|
|
|
HorizontalAlignment="Right"
|
|
|
|
Classes="transparent"
|
|
|
|
Command="{Binding ClearDownloads}"
|
|
|
|
Content="Clear Finished"
|
|
|
|
IsVisible="{Binding !!ProgressItems.Count}" />
|
|
|
|
|
|
|
|
<ItemsControl
|
|
|
|
Grid.Row="1"
|
|
|
|
Margin="0,4,0,0"
|
|
|
|
ItemsSource="{Binding ProgressItems, Mode=OneWay}">
|
|
|
|
<ItemsControl.DataTemplates>
|
|
|
|
|
|
|
|
<DataTemplate DataType="{x:Type vmBase:PausableProgressItemViewModelBase}">
|
|
|
|
<Border
|
|
|
|
Margin="4"
|
|
|
|
Padding="8"
|
|
|
|
Background="#22000000"
|
|
|
|
BorderBrush="#33000000"
|
|
|
|
BorderThickness="2"
|
|
|
|
CornerRadius="8">
|
|
|
|
<Grid ColumnDefinitions="Auto,Auto" RowDefinitions="Auto,Auto">
|
|
|
|
|
|
|
|
<Grid Grid.Row="0" Grid.Column="0" RowDefinitions="Auto, Auto">
|
|
|
|
<TextBlock
|
|
|
|
MaxWidth="200"
|
|
|
|
Text="{Binding Name, Mode=OneWay}"
|
|
|
|
TextWrapping="NoWrap"
|
|
|
|
TextTrimming="CharacterEllipsis"/>
|
|
|
|
|
|
|
|
<!-- non-indeterminate progress -->
|
|
|
|
<TextBlock Grid.Row="1"
|
|
|
|
Margin="0,0"
|
|
|
|
IsVisible="{Binding !Progress.IsIndeterminate}">
|
|
|
|
<Run Text="{Binding Progress.Text, Mode=OneWay}" />
|
|
|
|
<Run Text="{Binding Progress.Value, Mode=OneWay}" /><Run Text="%" />
|
|
|
|
</TextBlock>
|
|
|
|
|
|
|
|
<!-- indeterminate progress -->
|
|
|
|
<TextBlock Grid.Row="1"
|
|
|
|
Margin="0,4"
|
|
|
|
IsVisible="{Binding Progress.IsIndeterminate}"
|
|
|
|
Text="{Binding Progress.Text, Mode=OneWay}" />
|
|
|
|
</Grid>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Buttons -->
|
|
|
|
<UniformGrid
|
|
|
|
Grid.Row="0"
|
|
|
|
Grid.Column="1"
|
|
|
|
Columns="2">
|
|
|
|
<ToggleButton
|
|
|
|
Name="PauseResumeToggleButton"
|
|
|
|
Classes="transparent-full"
|
|
|
|
Command="{Binding TogglePauseResumeCommand}"
|
|
|
|
IsChecked="{Binding IsPaused}"
|
|
|
|
IsVisible="{Binding CanPauseResume}">
|
|
|
|
<Panel>
|
|
|
|
<ui:SymbolIcon IsVisible="{Binding ElementName=PauseResumeToggleButton, Path=!IsChecked}" Symbol="Pause" />
|
|
|
|
<ui:SymbolIcon IsVisible="{Binding ElementName=PauseResumeToggleButton, Path=IsChecked}" Symbol="Play" />
|
|
|
|
</Panel>
|
|
|
|
</ToggleButton>
|
|
|
|
|
|
|
|
<Button
|
|
|
|
Command="{Binding CancelCommand}"
|
|
|
|
IsVisible="{Binding CanCancel}"
|
|
|
|
Classes="transparent-full">
|
|
|
|
<ui:SymbolIcon Symbol="Cancel" />
|
|
|
|
</Button>
|
|
|
|
</UniformGrid>
|
|
|
|
|
|
|
|
<ProgressBar
|
|
|
|
Grid.Row="1"
|
|
|
|
Grid.Column="0"
|
|
|
|
Grid.ColumnSpan="2"
|
|
|
|
Margin="0,8,0,4"
|
|
|
|
IsIndeterminate="{Binding Progress.IsIndeterminate}"
|
|
|
|
Value="{Binding Progress.Value, Mode=OneWay}">
|
|
|
|
<ProgressBar.Transitions>
|
|
|
|
<Transitions>
|
|
|
|
<DoubleTransition Property="Value" Duration="00:00:00.150">
|
|
|
|
<DoubleTransition.Easing>
|
|
|
|
<SineEaseInOut />
|
|
|
|
</DoubleTransition.Easing>
|
|
|
|
</DoubleTransition>
|
|
|
|
</Transitions>
|
|
|
|
</ProgressBar.Transitions>
|
|
|
|
</ProgressBar>
|
|
|
|
</Grid>
|
|
|
|
</Border>
|
|
|
|
</DataTemplate>
|
|
|
|
|
|
|
|
<DataTemplate DataType="{x:Type progress:ProgressItemViewModel}">
|
|
|
|
<Border
|
|
|
|
Margin="4"
|
|
|
|
Padding="8"
|
|
|
|
Background="#22000000"
|
|
|
|
BorderBrush="#33000000"
|
|
|
|
BorderThickness="2"
|
|
|
|
CornerRadius="8">
|
|
|
|
<Grid ColumnDefinitions="*,Auto" RowDefinitions="*,Auto">
|
|
|
|
<StackPanel Grid.Row="0" Grid.Column="0">
|
|
|
|
<TextBlock Margin="0,0" Text="{Binding Name, Mode=OneWay}" />
|
|
|
|
|
|
|
|
<!-- non-indeterminate progress -->
|
|
|
|
<TextBlock
|
|
|
|
Margin="0,0"
|
|
|
|
IsVisible="{Binding !Progress.IsIndeterminate}">
|
|
|
|
<Run Text="{Binding Progress.Text, Mode=OneWay}" />
|
|
|
|
<Run Text="{Binding Progress.Value, Mode=OneWay}" /><Run Text="%" />
|
|
|
|
</TextBlock>
|
|
|
|
|
|
|
|
<!-- indeterminate progress -->
|
|
|
|
<TextBlock
|
|
|
|
Margin="0,4"
|
|
|
|
IsVisible="{Binding Progress.IsIndeterminate}"
|
|
|
|
Text="{Binding Progress.Text, Mode=OneWay}" />
|
|
|
|
</StackPanel>
|
|
|
|
|
|
|
|
<ProgressBar
|
|
|
|
Grid.Row="1"
|
|
|
|
Grid.Column="0"
|
|
|
|
Grid.ColumnSpan="2"
|
|
|
|
Margin="0,8,0,4"
|
|
|
|
IsIndeterminate="{Binding Progress.IsIndeterminate}"
|
|
|
|
Value="{Binding Progress.Value, Mode=OneWay}">
|
|
|
|
<ProgressBar.Transitions>
|
|
|
|
<Transitions>
|
|
|
|
<DoubleTransition Property="Value" Duration="00:00:00.150">
|
|
|
|
<DoubleTransition.Easing>
|
|
|
|
<SineEaseInOut />
|
|
|
|
</DoubleTransition.Easing>
|
|
|
|
</DoubleTransition>
|
|
|
|
</Transitions>
|
|
|
|
</ProgressBar.Transitions>
|
|
|
|
</ProgressBar>
|
|
|
|
</Grid>
|
|
|
|
</Border>
|
|
|
|
</DataTemplate>
|
|
|
|
|
|
|
|
<DataTemplate DataType="{x:Type progress:PackageInstallProgressItemViewModel}">
|
|
|
|
<Border
|
|
|
|
Margin="4"
|
|
|
|
Padding="8"
|
|
|
|
Background="#22000000"
|
|
|
|
BorderBrush="#33000000"
|
|
|
|
BorderThickness="2"
|
|
|
|
CornerRadius="8">
|
|
|
|
<Grid ColumnDefinitions="*,Auto" RowDefinitions="*,Auto">
|
|
|
|
|
|
|
|
<StackPanel Grid.Row="0" Grid.Column="0">
|
|
|
|
<TextBlock Margin="0,0"
|
|
|
|
Text="{Binding Progress.Text, Mode=OneWay}" />
|
|
|
|
|
|
|
|
<!-- non-indeterminate progress -->
|
|
|
|
<TextBlock
|
|
|
|
Margin="0,4"
|
|
|
|
MaxWidth="300"
|
|
|
|
IsVisible="{Binding !Progress.IsIndeterminate}">
|
|
|
|
<Run Text="{Binding Progress.Description, Mode=OneWay}" />
|
|
|
|
<Run Text="{Binding Progress.Value, Mode=OneWay}" /><Run Text="%" />
|
|
|
|
</TextBlock>
|
|
|
|
|
|
|
|
<!-- indeterminate progress -->
|
|
|
|
<TextBlock
|
|
|
|
Margin="0,4"
|
|
|
|
MaxWidth="300"
|
|
|
|
IsVisible="{Binding Progress.IsIndeterminate}"
|
|
|
|
Text="{Binding Progress.Description, Mode=OneWay}" />
|
|
|
|
</StackPanel>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Buttons -->
|
|
|
|
<Button
|
|
|
|
Grid.Row="0"
|
|
|
|
Grid.Column="1"
|
|
|
|
Margin="8,0"
|
|
|
|
ToolTip.Tip="Show Progress Dialog"
|
|
|
|
Command="{Binding ShowProgressDialog}"
|
|
|
|
Classes="transparent-full">
|
|
|
|
<ui:SymbolIcon Symbol="Open" />
|
|
|
|
</Button>
|
|
|
|
|
|
|
|
<ProgressBar
|
|
|
|
Grid.Row="1"
|
|
|
|
Grid.Column="0"
|
|
|
|
Grid.ColumnSpan="2"
|
|
|
|
Margin="0,8,0,4"
|
|
|
|
IsIndeterminate="{Binding Progress.IsIndeterminate}"
|
|
|
|
Value="{Binding Progress.Value, Mode=OneWay}">
|
|
|
|
<ProgressBar.Transitions>
|
|
|
|
<Transitions>
|
|
|
|
<DoubleTransition Property="Value" Duration="00:00:00.150">
|
|
|
|
<DoubleTransition.Easing>
|
|
|
|
<SineEaseInOut />
|
|
|
|
</DoubleTransition.Easing>
|
|
|
|
</DoubleTransition>
|
|
|
|
</Transitions>
|
|
|
|
</ProgressBar.Transitions>
|
|
|
|
</ProgressBar>
|
|
|
|
</Grid>
|
|
|
|
</Border>
|
|
|
|
</DataTemplate>
|
|
|
|
</ItemsControl.DataTemplates>
|
|
|
|
</ItemsControl>
|
|
|
|
</Grid>
|
|
|
|
</ScrollViewer>
|
|
|
|
</controls:UserControlBase>
|