added search for playlist

This commit is contained in:
iAmAsval 2021-08-30 20:11:17 +02:00
parent 2915f831d0
commit 35a8e4c71d
4 changed files with 45 additions and 16 deletions

View File

@ -1,5 +1,4 @@
using System.Diagnostics;
using System.Linq;
using System.Threading;
using AdonisUI.Controls;
using FModel.Framework;

View File

@ -6,6 +6,7 @@
xmlns:converters="clr-namespace:FModel.Views.Resources.Converters"
xmlns:adonisUi="clr-namespace:AdonisUI;assembly=AdonisUI"
xmlns:adonisControls="clr-namespace:AdonisUI.Controls;assembly=AdonisUI"
xmlns:adonisExtensions="clr-namespace:AdonisUI.Extensions;assembly=AdonisUI"
WindowStartupLocation="CenterScreen" IconVisibility="Collapsed" Closing="OnClosing" PreviewKeyDown="OnPreviewKeyDown"
Height="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenHeight}, Converter={converters:RatioConverter}, ConverterParameter='0.50'}"
Width="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenWidth}, Converter={converters:RatioConverter}, ConverterParameter='0.55'}">
@ -28,14 +29,8 @@
</Grid.ColumnDefinitions>
<GroupBox Grid.Column="0" Padding="{adonisUi:Space 0}" Background="Transparent">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<DockPanel Margin="10">
<Grid DockPanel.Dock="Top">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
@ -73,8 +68,25 @@
<TextBlock Grid.Row="4" Grid.Column="0" Text="Bytes Per Second" VerticalAlignment="Center" />
<TextBlock Grid.Row="4" Grid.Column="2" Text="{Binding AudioPlayer.PlayedFile.BytesPerSecond}" VerticalAlignment="Center" HorizontalAlignment="Right" />
</Grid>
<Separator Grid.Row="1" Tag="PLAYLIST" Style="{StaticResource CustomSeparator}" />
<ListBox Grid.Row="2" Style="{StaticResource AudioFilesListBox}" PreviewMouseDoubleClick="OnAudioFileMouseDoubleClick">
<Separator DockPanel.Dock="Top" Tag="PLAYLIST" Style="{StaticResource CustomSeparator}" />
<Grid DockPanel.Dock="Top" Height="24" Margin="0 0 0 5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" ZIndex="1" HorizontalAlignment="Left" Margin="5 2 0 0">
<Viewbox Width="16" Height="16">
<Canvas Width="24" Height="24">
<Path Fill="{DynamicResource {x:Static adonisUi:Brushes.ForegroundBrush}}" Data="{StaticResource SearchIcon}" />
</Canvas>
</Viewbox>
</Grid>
<TextBox Grid.Column="0" Grid.ColumnSpan="2" AcceptsTab="False" AcceptsReturn="False"
Padding="25 0 0 0" HorizontalAlignment="Stretch" TextChanged="OnFilterTextChanged"
adonisExtensions:WatermarkExtension.Watermark="Search by name..." />
</Grid>
<ListBox DockPanel.Dock="Top" Style="{StaticResource AudioFilesListBox}" PreviewMouseDoubleClick="OnAudioFileMouseDoubleClick">
<ListBox.ContextMenu>
<ContextMenu>
<MenuItem Header="Play" Command="{Binding AudioPlayer.AudioCommand}" CommandParameter="ForcePlayPause">
@ -116,7 +128,7 @@
</ContextMenu>
</ListBox.ContextMenu>
</ListBox>
</Grid>
</DockPanel>
</GroupBox>
<Grid Grid.Column="1">

View File

@ -1,5 +1,7 @@
using System.ComponentModel;
using System;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
@ -49,6 +51,9 @@ namespace FModel.Views
private void OnPreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.OriginalSource is TextBox)
return;
if (UserSettings.Default.AddAudio.IsTriggered(e.Key))
{
var openFileDialog = new OpenFileDialog
@ -77,5 +82,17 @@ namespace FModel.Views
{
_applicationView.AudioPlayer.PlayPauseOnForce();
}
private void OnFilterTextChanged(object sender, TextChangedEventArgs e)
{
if (sender is not TextBox textBox)
return;
var filters = textBox.Text.Trim().Split(' ');
_applicationView.AudioPlayer.AudioFilesView.Filter = o =>
{
return o is AudioFile audio && filters.All(x => audio.FileName.Contains(x, StringComparison.OrdinalIgnoreCase));
};
}
}
}

View File

@ -43,10 +43,11 @@ namespace FModel.Views.Resources.Controls
FindNext();
break;
case Key.Enter when Keyboard.Modifiers.HasFlag(ModifierKeys.Shift) && ((TabItem) DataContext).HasSearchOpen:
var old = ((TabItem)DataContext).SearchUp;
((TabItem) DataContext).SearchUp = true;
var dc = (TabItem)DataContext;
var old = dc.SearchUp;
dc.SearchUp = true;
FindNext();
((TabItem) DataContext).SearchUp = old;
dc.SearchUp = old;
break;
}
}