Skip to content

Commit

Permalink
feat: add search
Browse files Browse the repository at this point in the history
Because of an external bug, currently the last element cannot be filtered
#11
  • Loading branch information
ChristianGalla committed Feb 10, 2024
1 parent 0526aa7 commit 1bb0b8f
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 19 deletions.
3 changes: 1 addition & 2 deletions AutoStartConfirmLib/GUI/MainPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@
<ColumnDefinition/>
</Grid.ColumnDefinitions>

<!--Disabled until https://github.com/CommunityToolkit/WindowsCommunityToolkit/issues/2913 is fixed-->
<!--<TextBox x:Name="SearchBox" PlaceholderText="Filter" TextChanged="SearchBox_TextChanged" />-->
<AutoSuggestBox x:Name="SearchBox" PlaceholderText="Search" QuerySubmitted="SearchBox_QuerySubmitted" />

<Pivot Grid.Row="1">
<PivotItem Header="Current">
Expand Down
55 changes: 38 additions & 17 deletions AutoStartConfirmLib/GUI/MainPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -466,23 +466,6 @@ public static bool CanBeIgnoredConverter(AutoStartEntry autoStart)
return false;
}

private void SearchBox_TextChanged(object sender, TextChangedEventArgs _)
{
string newText = ((TextBox)sender).Text;

// reset the filter
AutoStartCollectionView.Filter = _ => true;
HistoryAutoStartCollectionView.Filter = _ => true;
IgnoredCollectionView.Filter = _ => true;

if (!string.IsNullOrWhiteSpace(newText))
{
AutoStartCollectionView.Filter = x => ((AutoStartEntry)x).Value.Contains(newText) || ((AutoStartEntry)x).Path.Contains(newText) || ((AutoStartEntry)x).CategoryAsString.Contains(newText);
HistoryAutoStartCollectionView.Filter = x => ((AutoStartEntry)x).Value.Contains(newText) || ((AutoStartEntry)x).Path.Contains(newText) || ((AutoStartEntry)x).CategoryAsString.Contains(newText);
IgnoredCollectionView.Filter = x => ((IgnoredAutoStart)x).Value.Contains(newText) || ((IgnoredAutoStart)x).Path.Contains(newText) || ((IgnoredAutoStart)x).CategoryAsString.Contains(newText);
}
}


private void Dispose(bool disposing)
{
Expand All @@ -503,5 +486,43 @@ public void Dispose()
GC.SuppressFinalize(this);
}

private void SearchBox_QuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args)
{
string newText = sender.Text;

// reset the filter
AutoStartCollectionView.Filter = _ => true;
HistoryAutoStartCollectionView.Filter = _ => true;
IgnoredCollectionView.Filter = _ => true;

if (!string.IsNullOrWhiteSpace(newText))
{
// Because of a bug in AdvancedCollectionView, currently it is not possible to filter the last element
// If tired, ArgumentOutOfRangeException is thrown
// For now ignore ArgumentOutOfRangeException
// See https://github.com/CommunityToolkit/WindowsCommunityToolkit/issues/2913
try
{
AutoStartCollectionView.Filter = x => ((AutoStartEntry)x).Value.Contains(newText, StringComparison.OrdinalIgnoreCase) || ((AutoStartEntry)x).Path.Contains(newText, StringComparison.OrdinalIgnoreCase) || ((AutoStartEntry)x).CategoryAsString.Contains(newText, StringComparison.OrdinalIgnoreCase);
}
catch (ArgumentOutOfRangeException)
{
}
try
{
HistoryAutoStartCollectionView.Filter = x => ((AutoStartEntry)x).Value.Contains(newText, StringComparison.OrdinalIgnoreCase) || ((AutoStartEntry)x).Path.Contains(newText, StringComparison.OrdinalIgnoreCase) || ((AutoStartEntry)x).CategoryAsString.Contains(newText, StringComparison.OrdinalIgnoreCase);
}
catch (ArgumentOutOfRangeException)
{
}
try
{
IgnoredCollectionView.Filter = x => ((IgnoredAutoStart)x).Value.Contains(newText, StringComparison.OrdinalIgnoreCase) || ((IgnoredAutoStart)x).Path.Contains(newText, StringComparison.OrdinalIgnoreCase) || ((IgnoredAutoStart)x).CategoryAsString.Contains(newText, StringComparison.OrdinalIgnoreCase);
}
catch (ArgumentOutOfRangeException)
{
}
}
}
}
}

0 comments on commit 1bb0b8f

Please sign in to comment.