Implemented filtering
- Also an additional extension method for later
This commit is contained in:
parent
0bc82dc6b5
commit
e671fd4185
|
@ -1,4 +1,6 @@
|
|||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace BFR.Helpers
|
||||
{
|
||||
|
@ -11,4 +13,18 @@ namespace BFR.Helpers
|
|||
list.Add(t);
|
||||
}
|
||||
}
|
||||
|
||||
public static class StringExtensions
|
||||
{
|
||||
public static string Replace(this string input, string pattern, string replacement, bool useRegex = false, bool useRegexReplace = false) =>
|
||||
Regex.Replace(input,
|
||||
useRegex ? pattern : Regex.Escape(pattern),
|
||||
useRegexReplace ? replacement : replacement.Replace("$", "$$"));
|
||||
|
||||
public static bool RegexContains(this string input, string pattern)
|
||||
{
|
||||
try { return Regex.IsMatch(input, pattern); }
|
||||
catch(Exception) { return false; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,13 +16,13 @@
|
|||
<!-- Filters -->
|
||||
<Grid Grid.Row="1" Grid.ColumnSpan="3" ColumnDefinitions="auto,*,auto,*,auto,auto,auto,auto" IsVisible="{Binding #FilterExpander.IsExpanded}">
|
||||
<TextBlock Grid.Column="0" Text="Extension:"/>
|
||||
<TextBox Grid.Column="1"/>
|
||||
<TextBox Grid.Column="1" Text="{Binding FilterExtension}" KeyUp="FilterChangedAny"/>
|
||||
<TextBlock Grid.Column="2" Text="Name:"/>
|
||||
<TextBox Grid.Column="3"/>
|
||||
<TextBox Grid.Column="3" Text="{Binding FilterPattern}" KeyUp="FilterChangedAny"/>
|
||||
<TextBlock Grid.Column="4" Text="Full Name:"/>
|
||||
<CheckBox Grid.Column="5"/>
|
||||
<CheckBox Grid.Column="5" IsChecked="{Binding FilterFullName}" Click="FilterChangedAny"/>
|
||||
<TextBlock Grid.Column="6" Text="Regex:"/>
|
||||
<CheckBox Grid.Column="7" Margin="4,4,5,4"/>
|
||||
<CheckBox Grid.Column="7" IsChecked="{Binding FilterRegex}" Click="FilterChangedAny" Margin="4,4,5,4"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
|
|
@ -1,14 +1,17 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
using Avalonia.Input;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Markup.Xaml;
|
||||
using Avalonia.Interactivity;
|
||||
|
||||
using BFR.DataModels;
|
||||
using BFR.Helpers;
|
||||
using BFR.DataModels;
|
||||
|
||||
namespace BFR
|
||||
{
|
||||
|
@ -24,11 +27,14 @@ namespace BFR
|
|||
Filter();
|
||||
}
|
||||
|
||||
public void FilterChangedAny(object sender, KeyEventArgs e) => Filter();
|
||||
public void FilterChangedAny(object sender, RoutedEventArgs e) => Filter();
|
||||
public void Filter()
|
||||
{
|
||||
Files.ReplaceAll(AllFiles);
|
||||
|
||||
// TODO: Apply filters
|
||||
// Filter all files in the directory for those satisfying the given filters
|
||||
Files.ReplaceAll(AllFiles.Where(x =>
|
||||
(FilterExtension == "" || x.Extension == FilterExtension)
|
||||
&& (FilterFullName ? x.FullName : x.Name).RegexContains(FilterRegex ? FilterPattern : Regex.Escape(FilterPattern))));
|
||||
|
||||
Preview();
|
||||
}
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
using System;
|
||||
|
||||
using Avalonia;
|
||||
using Avalonia;
|
||||
using Avalonia.Collections;
|
||||
using Avalonia.Controls;
|
||||
|
||||
|
@ -16,5 +14,11 @@ namespace BFR
|
|||
|
||||
public AvaloniaList<FileModel> AllFiles { get; } = new AvaloniaList<FileModel>();
|
||||
public AvaloniaList<FileModel> Files { get; } = new AvaloniaList<FileModel>();
|
||||
|
||||
// Filters
|
||||
public string FilterExtension { get; set; } = "";
|
||||
public string FilterPattern { get; set; } = "";
|
||||
public bool FilterFullName { get; set; } = false;
|
||||
public bool FilterRegex { get; set; } = false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user