names changed, layer of abstraction added
This commit is contained in:
@@ -0,0 +1,424 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Page
|
||||
x:Class="VDownload.Core.Views.Home.HomeVideoCollectionView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="using:VDownload.Core.Views.Home"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:i="using:Microsoft.Xaml.Interactivity"
|
||||
xmlns:ic="using:Microsoft.Xaml.Interactions.Core"
|
||||
xmlns:m="using:VDownload.Models"
|
||||
xmlns:ct="using:CommunityToolkit.WinUI"
|
||||
xmlns:ctc="using:CommunityToolkit.WinUI.Controls"
|
||||
xmlns:ctuc="using:CommunityToolkit.WinUI.UI.Controls"
|
||||
xmlns:c="using:SimpleToolkit.UI.WinUI.Controls"
|
||||
mc:Ignorable="d"
|
||||
Background="{ThemeResource ViewBackgroundColor}"
|
||||
x:Name="Root">
|
||||
|
||||
<Grid Padding="15"
|
||||
RowSpacing="20">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid Grid.Row="0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0"
|
||||
VerticalAlignment="Center"
|
||||
Text="{Binding Name}"
|
||||
FontWeight="Bold"
|
||||
FontSize="20"
|
||||
TextWrapping="WrapWholeWords"/>
|
||||
<StackPanel Grid.Column="1"
|
||||
Orientation="Horizontal"
|
||||
Margin="-5"
|
||||
Spacing="10">
|
||||
<TextBlock VerticalAlignment="Center"
|
||||
Visibility="{Binding IsSomethingHidden, Converter={StaticResource BoolToVisibilityConverter}}">
|
||||
<Run x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/HiddenTextBlock"/><Run Text="{Binding HiddenCount}"/>
|
||||
</TextBlock>
|
||||
<AppBarToggleButton x:Name="FilterButton"
|
||||
Icon="Filter"
|
||||
Width="40"
|
||||
Height="48">
|
||||
<AppBarToggleButton.Resources>
|
||||
<TeachingTip x:Name="FilterWindow"
|
||||
x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/FilterWindow"
|
||||
Target="{Binding ElementName=FilterButton}"
|
||||
PreferredPlacement="BottomLeft"
|
||||
IsOpen="{Binding ElementName=FilterButton, Path=IsChecked, Mode=TwoWay}">
|
||||
<Grid VerticalAlignment="Top"
|
||||
Margin="0,10,0,0"
|
||||
ColumnSpacing="10"
|
||||
RowSpacing="10">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/FilterTitleTextBlock"
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
VerticalAlignment="Center"/>
|
||||
<TextBox x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/FilterTitleTextBox"
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Text="{Binding TitleFilter, Mode=TwoWay}"/>
|
||||
<TextBlock x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/FilterAuthorTextBlock"
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
VerticalAlignment="Center"/>
|
||||
<TextBox x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/FilterAuthorTextBox"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Text="{Binding AuthorFilter, Mode=TwoWay}"/>
|
||||
<TextBlock x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/FilterViewsTextBlock"
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
VerticalAlignment="Center"/>
|
||||
<Grid Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
ColumnSpacing="5">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<NumberBox Grid.Column="0"
|
||||
SpinButtonPlacementMode="Compact"
|
||||
Minimum="{Binding MinViews}"
|
||||
Value="{Binding MinViewsFilter, Mode=TwoWay}"
|
||||
Maximum="{Binding MaxViewsFilter}"
|
||||
SmallChange="1"
|
||||
LargeChange="10"/>
|
||||
<TextBlock Grid.Column="1"
|
||||
VerticalAlignment="Center"
|
||||
Text="-"/>
|
||||
<NumberBox Grid.Column="2"
|
||||
SpinButtonPlacementMode="Compact"
|
||||
Minimum="{Binding MinViewsFilter}"
|
||||
Value="{Binding MaxViewsFilter, Mode=TwoWay}"
|
||||
Maximum="{Binding MaxViews}"
|
||||
SmallChange="1"
|
||||
LargeChange="10"/>
|
||||
</Grid>
|
||||
<TextBlock x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/FilterDateTextBlock"
|
||||
Grid.Row="3"
|
||||
Grid.Column="0"
|
||||
VerticalAlignment="Center"/>
|
||||
<Grid Grid.Row="3"
|
||||
Grid.Column="1"
|
||||
ColumnSpacing="5">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<CalendarDatePicker Grid.Column="0"
|
||||
MinDate="{Binding MinDate}"
|
||||
Date="{Binding MinDateFilter, Mode=TwoWay}"
|
||||
MaxDate="{Binding MaxDateFilter}"/>
|
||||
<TextBlock Grid.Column="1"
|
||||
VerticalAlignment="Center"
|
||||
Text="-"/>
|
||||
<CalendarDatePicker Grid.Column="2"
|
||||
MinDate="{Binding MinDateFilter}"
|
||||
Date="{Binding MaxDateFilter, Mode=TwoWay}"
|
||||
MaxDate="{Binding MaxDate}"/>
|
||||
</Grid>
|
||||
<TextBlock x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/FilterDurationTextBlock"
|
||||
Grid.Row="4"
|
||||
Grid.Column="0"
|
||||
VerticalAlignment="Center"/>
|
||||
<Grid Grid.Row="4"
|
||||
Grid.Column="1"
|
||||
RowSpacing="5">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<c:TimeSpanControl Grid.Row="0"
|
||||
Minimum="{Binding MinDuration}"
|
||||
Value="{Binding MinDurationFilter, Mode=TwoWay}"
|
||||
Maximum="{Binding MaxDurationFilter}"/>
|
||||
<c:TimeSpanControl Grid.Row="1"
|
||||
Minimum="{Binding MinDurationFilter}"
|
||||
Value="{Binding MaxDurationFilter, Mode=TwoWay}"
|
||||
Maximum="{Binding MaxDuration}"/>
|
||||
</Grid>
|
||||
<TextBlock x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/FilterRemovedTextBlock"
|
||||
Grid.Row="5"
|
||||
Grid.Column="0"
|
||||
VerticalAlignment="Center"/>
|
||||
<Grid Grid.Row="5"
|
||||
Grid.Column="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0"
|
||||
VerticalAlignment="Center"
|
||||
Text="{Binding RemovedCount}"/>
|
||||
<Button x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/FilterRemovedButton"
|
||||
Grid.Column="1"
|
||||
Command="{Binding RestoreRemovedVideosCommand}"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</TeachingTip>
|
||||
</AppBarToggleButton.Resources>
|
||||
</AppBarToggleButton>
|
||||
<AppBarButton x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/ApplyDirectoryButton"
|
||||
Icon="Folder"
|
||||
Width="40"
|
||||
Height="48"
|
||||
Command="{Binding SelectDirectoryCommand}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
<ScrollViewer Grid.Row="1">
|
||||
<ItemsControl ItemsSource="{Binding Videos}">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Expander HorizontalAlignment="Stretch"
|
||||
Margin="0,0,0,10"
|
||||
CornerRadius="10"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
Visibility="{Binding Value, Converter={StaticResource BoolToVisibilityConverter}}">
|
||||
<Expander.Header>
|
||||
<Grid Padding="-16,0,-16,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Image Grid.Column="0"
|
||||
Source="{Binding Key.ThumbnailUrl, TargetNullValue={StaticResource ImageOtherThumbnail}}"
|
||||
Height="100"/>
|
||||
<Grid Grid.Column="1"
|
||||
Margin="10"
|
||||
RowSpacing="10">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Grid.Row="0"
|
||||
FontSize="16"
|
||||
Text="{Binding Key.Title}"
|
||||
FontWeight="SemiBold"
|
||||
TextTrimming="CharacterEllipsis"/>
|
||||
<Grid Grid.Row="1"
|
||||
RowSpacing="10"
|
||||
ColumnSpacing="10">
|
||||
<Grid.Resources>
|
||||
<x:Double x:Key="IconSize">17</x:Double>
|
||||
<x:Double x:Key="FontSize">13</x:Double>
|
||||
</Grid.Resources>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Image Grid.Column="0"
|
||||
Grid.Row="0"
|
||||
VerticalAlignment="Center"
|
||||
Source="{ThemeResource ImageHomePlaylistViewAuthor}"
|
||||
Width="{StaticResource IconSize}"/>
|
||||
<TextBlock Grid.Column="1"
|
||||
Grid.Row="0"
|
||||
FontSize="{StaticResource FontSize}"
|
||||
VerticalAlignment="Center"
|
||||
Text="{Binding Key.Author}"/>
|
||||
<Image Grid.Column="0"
|
||||
Grid.Row="1"
|
||||
VerticalAlignment="Center"
|
||||
Source="{ThemeResource ImageHomePlaylistViewDate}"
|
||||
Width="{StaticResource IconSize}"/>
|
||||
<TextBlock Grid.Column="1"
|
||||
Grid.Row="1"
|
||||
FontSize="{StaticResource FontSize}"
|
||||
VerticalAlignment="Center"
|
||||
Text="{Binding Key.PublishDate}"/>
|
||||
<Image Grid.Column="2"
|
||||
Grid.Row="0"
|
||||
VerticalAlignment="Center"
|
||||
Source="{ThemeResource ImageHomePlaylistViewTime}"
|
||||
Width="{StaticResource IconSize}"/>
|
||||
<TextBlock Grid.Column="3"
|
||||
Grid.Row="0"
|
||||
FontSize="{StaticResource FontSize}"
|
||||
VerticalAlignment="Center"
|
||||
Text="{Binding Key.Duration}"/>
|
||||
<Image Grid.Column="2"
|
||||
Grid.Row="1"
|
||||
VerticalAlignment="Center"
|
||||
Source="{ThemeResource ImageHomePlaylistViewViews}"
|
||||
Width="{StaticResource IconSize}"/>
|
||||
<TextBlock Grid.Column="3"
|
||||
Grid.Row="1"
|
||||
FontSize="{StaticResource FontSize}"
|
||||
VerticalAlignment="Center"
|
||||
Text="{Binding Key.Views}"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<AppBarButton Grid.Column="2"
|
||||
Width="40"
|
||||
Height="48"
|
||||
Icon="Delete"
|
||||
VerticalAlignment="Center"
|
||||
Command="{Binding ElementName=Root, Path=DataContext.RemoveVideoCommand}"
|
||||
CommandParameter="{Binding Key}"/>
|
||||
</Grid>
|
||||
</Expander.Header>
|
||||
<Expander.Content>
|
||||
<StackPanel Spacing="20">
|
||||
<StackPanel Spacing="5">
|
||||
<TextBlock x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/MediaOptionsHeader"
|
||||
FontWeight="Bold"
|
||||
FontSize="15"/>
|
||||
<ctc:SettingsCard x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/QualitySettingsCard">
|
||||
<ctc:SettingsCard.HeaderIcon>
|
||||
<BitmapIcon ShowAsMonochrome="False"
|
||||
UriSource="{ThemeResource ImageHomePlaylistViewMedia}"/>
|
||||
</ctc:SettingsCard.HeaderIcon>
|
||||
<ComboBox ItemsSource="{Binding Key.Streams}"
|
||||
SelectedItem="{Binding Key.SelectedStream, Mode=TwoWay}"/>
|
||||
</ctc:SettingsCard>
|
||||
<ctc:SettingsCard x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/MediaTypeSettingsCard">
|
||||
<ctc:SettingsCard.HeaderIcon>
|
||||
<BitmapIcon ShowAsMonochrome="False"
|
||||
UriSource="{ThemeResource ImageHomePlaylistViewMedia}"/>
|
||||
</ctc:SettingsCard.HeaderIcon>
|
||||
<ComboBox ItemsSource="{ct:EnumValues Type=m:MediaType}"
|
||||
SelectedItem="{Binding Key.MediaType, Mode=TwoWay}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<ctuc:SwitchPresenter Value="{Binding Converter={StaticResource ObjectToStringConverter}}">
|
||||
<ctuc:Case Value="Original">
|
||||
<TextBlock x:Uid="/VDownload.Core.Strings/CommonResources/MediaTypeOriginal"/>
|
||||
</ctuc:Case>
|
||||
<ctuc:Case Value="OnlyVideo">
|
||||
<TextBlock x:Uid="/VDownload.Core.Strings/CommonResources/MediaTypeOnlyVideo"/>
|
||||
</ctuc:Case>
|
||||
<ctuc:Case Value="OnlyAudio">
|
||||
<TextBlock x:Uid="/VDownload.Core.Strings/CommonResources/MediaTypeOnlyAudio"/>
|
||||
</ctuc:Case>
|
||||
</ctuc:SwitchPresenter>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
</ctc:SettingsCard>
|
||||
<ctc:SettingsExpander x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/TrimSettingsGroup">
|
||||
<ctc:SettingsExpander.HeaderIcon>
|
||||
<BitmapIcon ShowAsMonochrome="False"
|
||||
UriSource="{ThemeResource ImageHomePlaylistViewTrim}"/>
|
||||
</ctc:SettingsExpander.HeaderIcon>
|
||||
<ctc:SettingsExpander.Items>
|
||||
<ctc:SettingsCard x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/TrimStartSettingsCard">
|
||||
<c:TimeSpanControl Value="{Binding Key.TrimStart, Mode=TwoWay}"
|
||||
Maximum="{Binding Key.TrimEnd, Mode=OneWay}"/>
|
||||
</ctc:SettingsCard>
|
||||
<ctc:SettingsCard x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/TrimEndSettingsCard">
|
||||
<c:TimeSpanControl Minimum="{Binding Key.TrimStart, Mode=OneWay}"
|
||||
Value="{Binding Key.TrimEnd, Mode=TwoWay}"
|
||||
Maximum="{Binding Key.Duration, Mode=OneWay}"/>
|
||||
</ctc:SettingsCard>
|
||||
</ctc:SettingsExpander.Items>
|
||||
</ctc:SettingsExpander>
|
||||
</StackPanel>
|
||||
<StackPanel Spacing="5">
|
||||
<TextBlock x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/FileOptionsHeader"
|
||||
FontWeight="Bold"
|
||||
FontSize="15"/>
|
||||
<ctc:SettingsCard x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/DirectorySettingsCard"
|
||||
Description="{Binding Key.DirectoryPath}">
|
||||
<ctc:SettingsCard.HeaderIcon>
|
||||
<BitmapIcon ShowAsMonochrome="False"
|
||||
UriSource="{ThemeResource ImageHomePlaylistViewDirectory}"/>
|
||||
</ctc:SettingsCard.HeaderIcon>
|
||||
<Button x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/DirectorySettingsCardButton"
|
||||
Command="{Binding Key.BrowseCommand}"/>
|
||||
</ctc:SettingsCard>
|
||||
<ctc:SettingsCard x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/FilenameSettingsCard">
|
||||
<ctc:SettingsCard.HeaderIcon>
|
||||
<BitmapIcon ShowAsMonochrome="False"
|
||||
UriSource="{ThemeResource ImageHomePlaylistViewFilename}"/>
|
||||
</ctc:SettingsCard.HeaderIcon>
|
||||
<TextBox Text="{Binding Key.Filename, Mode=TwoWay}"/>
|
||||
</ctc:SettingsCard>
|
||||
<ctc:SettingsCard x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/FileTypeSettingsCard">
|
||||
<ctc:SettingsCard.HeaderIcon>
|
||||
<BitmapIcon ShowAsMonochrome="False"
|
||||
UriSource="{ThemeResource ImageHomePlaylistViewExtension}"/>
|
||||
</ctc:SettingsCard.HeaderIcon>
|
||||
<i:Interaction.Behaviors>
|
||||
<ic:DataTriggerBehavior Binding="{Binding Key.MediaType, Converter={StaticResource ObjectToStringConverter}}"
|
||||
ComparisonCondition="Equal"
|
||||
Value="OnlyAudio">
|
||||
<ic:ChangePropertyAction PropertyName="Content">
|
||||
<ic:ChangePropertyAction.Value>
|
||||
<ComboBox ItemsSource="{ct:EnumValues Type=m:AudioExtension}"
|
||||
SelectedItem="{Binding Key.AudioExtension, Mode=TwoWay}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding}"/>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
</ic:ChangePropertyAction.Value>
|
||||
</ic:ChangePropertyAction>
|
||||
</ic:DataTriggerBehavior>
|
||||
<ic:DataTriggerBehavior Binding="{Binding Key.MediaType, Converter={StaticResource ObjectToStringConverter}}"
|
||||
ComparisonCondition="NotEqual"
|
||||
Value="OnlyAudio">
|
||||
<ic:ChangePropertyAction PropertyName="Content">
|
||||
<ic:ChangePropertyAction.Value>
|
||||
<ComboBox ItemsSource="{ct:EnumValues Type=m:VideoExtension}"
|
||||
SelectedItem="{Binding Key.VideoExtension, Mode=TwoWay}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding}"/>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
</ic:ChangePropertyAction.Value>
|
||||
</ic:ChangePropertyAction>
|
||||
</ic:DataTriggerBehavior>
|
||||
</i:Interaction.Behaviors>
|
||||
</ctc:SettingsCard>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Expander.Content>
|
||||
</Expander>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</ScrollViewer>
|
||||
<StackPanel Grid.Row="2"
|
||||
HorizontalAlignment="Right"
|
||||
Orientation="Horizontal"
|
||||
Spacing="10">
|
||||
<Button x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/CreateAndStartButton"
|
||||
Command="{Binding CreateTasksAndDownloadCommand}"/>
|
||||
<Button x:Uid="/VDownload.Core.Strings/HomePlaylistViewResources/CreateButton"
|
||||
Style="{StaticResource AccentButtonStyle}"
|
||||
Command="{Binding CreateTasksCommand}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Page>
|
||||
Reference in New Issue
Block a user