Skip to content

Commit 1b57ad8

Browse files
committed
disable Locate button when filename is invalid
1 parent 855acde commit 1b57ad8

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using Avalonia.Data.Converters;
2+
using System;
3+
using System.Globalization;
4+
using System.Linq;
5+
6+
namespace GitContentSearch.UI.Converters
7+
{
8+
public class FileNameValidationConverter : IValueConverter
9+
{
10+
private static readonly char[] InvalidCharacters = { '\\', '/', ':', '*', '?', '"', '<', '>', '|' };
11+
12+
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
13+
{
14+
if (value is string fileName)
15+
{
16+
return !fileName.Any(c => InvalidCharacters.Contains(c));
17+
}
18+
return true;
19+
}
20+
21+
public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
22+
{
23+
throw new NotImplementedException();
24+
}
25+
}
26+
}

GitContentSearch.UI/Views/MainWindow.axaml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<converters:OperationColorConverter x:Key="OperationColorConverter"/>
1818
<converters:BoolConverter x:Key="BoolConverter"/>
1919
<converters:OperationButtonTextConverter x:Key="OperationButtonTextConverter"/>
20+
<converters:FileNameValidationConverter x:Key="FileNameValidationConverter"/>
2021
</Window.Resources>
2122

2223
<Design.DataContext>
@@ -35,8 +36,14 @@
3536
Classes="Locate"
3637
Content="Locate"
3738
Command="{Binding LocateFileCommand}"
38-
IsEnabled="{Binding !IsSearching}"
39-
Margin="8,0"/>
39+
Margin="8,0">
40+
<Button.IsEnabled>
41+
<MultiBinding Converter="{x:Static BoolConverters.And}">
42+
<Binding Path="!IsSearching"/>
43+
<Binding Path="FilePath" Converter="{StaticResource FileNameValidationConverter}"/>
44+
</MultiBinding>
45+
</Button.IsEnabled>
46+
</Button>
4047
<Button Grid.Column="3"
4148
Classes="Secondary"
4249
Content="Browse"

0 commit comments

Comments
 (0)