Files
harmonia/Harmonia.UI/Views/PlaybackBar.axaml

94 lines
4.6 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:vm="clr-namespace:Harmonia.UI.ViewModels"
xmlns:converter="clr-namespace:Harmonia.UI.Converters"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
DataContext="{x:Static vm:ViewModelLocator.PlaybackBarViewModel}"
x:Class="Harmonia.UI.Views.PlaybackBar"
x:DataType="vm:PlaybackBarViewModel">
<UserControl.Resources>
<converter:SecondsToStringConverter x:Key="SecondsToString" />
<converter:ArtistsToStringConverter x:Key="ArtistsToString" />
<converter:NullVisibilityConverter x:Key="NullVisibility" />
<converter:SongTitleConverter x:Key="SongTitle" />
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<!-- Slider -->
<Grid Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" VerticalAlignment="Center" Margin="0 0 0 10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Foreground="#aaaaaa" Text="{Binding Position, Converter={StaticResource SecondsToString}}" FontSize="13" Margin="0 0 6 0" VerticalAlignment="Center"></TextBlock>
<Slider Name="TrackSlider" Loaded="Slider_Loaded" Grid.Column="1" Value="{Binding CurrentPosition, Mode=TwoWay, UpdateSourceTrigger=Explicit}" Minimum="0" Maximum="{Binding MaxPosition, Mode=OneWay}" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Foreground="#aaaaaa" Text="{Binding MaxPosition, Converter={StaticResource SecondsToString}}" FontSize="13" Margin="6 0 0 0" VerticalAlignment="Center"></TextBlock>
</Grid>
<!-- Song Info -->
<Grid Grid.Row="1" Grid.Column="0" Name="PlayingSongGrid">
<StackPanel Orientation="Horizontal">
<Grid Margin="0 0 10 0">
<!--<Image Name="PlayingSongImage" Width="80" Height="80"></Image>-->
<Image Source="{Binding SongImageSource, Mode=TwoWay}" Width="80" Height="80"></Image>
<Canvas Background="#19000000"></Canvas>
</Grid>
<StackPanel VerticalAlignment="Center">
<TextBlock Foreground="#dddddd" FontWeight="SemiBold" FontSize="16" LineHeight="20" Text="{Binding Song, Converter={StaticResource SongTitle}}"></TextBlock>
<TextBlock Foreground="#aaaaaa" FontSize="14" LineHeight="20" Text="{Binding Song.Artists, Converter={StaticResource ArtistsToString}}"></TextBlock>
<TextBlock Foreground="#aaaaaa" FontSize="14" LineHeight="20" Text="{Binding Song.Album}"></TextBlock>
<TextBlock Foreground="#777" FontSize="12" IsVisible="{Binding Song, Converter={StaticResource NullVisibility}}" FontWeight="Normal" Opacity="1.0">
<Run Text="{Binding Song.FileType}"></Run>
<Run Text=" - "></Run>
<Run Text="{Binding Song.BitRate}"></Run>
<Run Text=" kbps - "></Run>
<Run Text="{Binding Song.SampleRate}"></Run>
<Run Text=" Hz"></Run>
</TextBlock>
</StackPanel>
</StackPanel>
</Grid>
<!-- Action Buttons -->
<Grid Grid.Row="1" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center">
<StackPanel Orientation="Horizontal">
<Button Margin="8 0 8 0" Click="PreviousSongButton_Click" Theme="{StaticResource BorderlessButton}">
<Button.Content>
<StackPanel Orientation="Horizontal">
<PathIcon Data="{StaticResource SemiIconBackward}" Margin="0 0 0 0"></PathIcon>
<TextBlock Text="" FontSize="18"/>
</StackPanel>
</Button.Content>
</Button>
<Button Margin="8 0 8 0" Click="StopButton_Click">
<TextBlock Text="&#x0042;" FontSize="18"></TextBlock>
</Button>
<Button Margin="8 0 8 0" Click="PlayButton_Click">
<TextBlock Text="&#x0041;" FontSize="36"></TextBlock>
</Button>
<Button Margin="8 0 8 0" Click="PauseButton_Click">
<TextBlock Text="&#x0043;" FontSize="18"></TextBlock>
</Button>
<Button Margin="8 0 8 0" Click="NextSongButton_Click">
<TextBlock Text="&#x0045;" FontSize="18"></TextBlock>
</Button>
</StackPanel>
</Grid>
</Grid>
</UserControl>