Add search bar for FastFlag editor (#446)

This commit is contained in:
pizzaboxer 2023-07-26 23:26:56 +01:00
parent d8701b1c40
commit e1013bf9b1
No known key found for this signature in database
GPG Key ID: 59D4A1DBAD0F2BA8
2 changed files with 43 additions and 4 deletions

View File

@ -11,6 +11,7 @@
Loaded="Page_Loaded"> Loaded="Page_Loaded">
<Grid Margin="0,0,14,14"> <Grid Margin="0,0,14,14">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="*" /> <RowDefinition Height="*" />
@ -35,7 +36,9 @@
<ToggleButton x:Name="TogglePresetsButton" Content="Show preset flags" Click="ToggleButton_Click" Margin="12,0,0,0" /> <ToggleButton x:Name="TogglePresetsButton" Content="Show preset flags" Click="ToggleButton_Click" Margin="12,0,0,0" />
</StackPanel> </StackPanel>
<DataGrid Name="DataGrid" Grid.Row="2" HeadersVisibility="Column" GridLinesVisibility="Horizontal" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CellEditEnding="DataGrid_CellEditEnding"> <ui:TextBox x:Name="SearchTextBox" Grid.Row="2" Margin="0,0,0,16" Icon="Search32" PlaceholderText="Search" TextChanged="SearchTextBox_TextChanged" />
<DataGrid Name="DataGrid" Grid.Row="3" HeadersVisibility="Column" GridLinesVisibility="Horizontal" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CellEditEnding="DataGrid_CellEditEnding">
<DataGrid.Style> <DataGrid.Style>
<Style TargetType="DataGrid" BasedOn="{StaticResource {x:Type DataGrid}}"> <Style TargetType="DataGrid" BasedOn="{StaticResource {x:Type DataGrid}}">
<Setter Property="Background" Value="Transparent" /> <Setter Property="Background" Value="Transparent" />

View File

@ -19,6 +19,7 @@ namespace Bloxstrap.UI.Elements.Menu.Pages
private readonly ObservableCollection<FastFlag> _fastFlagList = new(); private readonly ObservableCollection<FastFlag> _fastFlagList = new();
private bool _showPresets = false; private bool _showPresets = false;
private string _searchFilter = "";
public FastFlagEditorPage() public FastFlagEditorPage()
{ {
@ -38,6 +39,9 @@ namespace Bloxstrap.UI.Elements.Menu.Pages
if (!_showPresets && presetFlags.Contains(pair.Key)) if (!_showPresets && presetFlags.Contains(pair.Key))
continue; continue;
if (!pair.Key.ToLower().Contains(_searchFilter.ToLower()))
continue;
var entry = new FastFlag var entry = new FastFlag
{ {
// Enabled = true, // Enabled = true,
@ -69,6 +73,15 @@ namespace Bloxstrap.UI.Elements.Menu.Pages
DataGrid.ScrollIntoView(newSelectedEntry); DataGrid.ScrollIntoView(newSelectedEntry);
} }
private void ClearSearch(bool refresh = true)
{
SearchTextBox.Text = "";
_searchFilter = "";
if (refresh)
ReloadList();
}
// refresh list on page load to synchronize with preset page // refresh list on page load to synchronize with preset page
private void Page_Loaded(object sender, RoutedEventArgs e) => ReloadList(); private void Page_Loaded(object sender, RoutedEventArgs e) => ReloadList();
@ -139,6 +152,9 @@ namespace Bloxstrap.UI.Elements.Menu.Pages
Value = dialog.FlagValueTextBox.Text Value = dialog.FlagValueTextBox.Text
}; };
if (!name.Contains(_searchFilter))
ClearSearch();
_fastFlagList.Add(entry); _fastFlagList.Add(entry);
App.FastFlags.SetValue(entry.Name, entry.Value); App.FastFlags.SetValue(entry.Name, entry.Value);
@ -147,13 +163,24 @@ namespace Bloxstrap.UI.Elements.Menu.Pages
{ {
Controls.ShowMessageBox("An entry for this FastFlag already exists.", MessageBoxImage.Information); Controls.ShowMessageBox("An entry for this FastFlag already exists.", MessageBoxImage.Information);
if (!_showPresets && FastFlagManager.PresetFlags.Values.Contains(dialog.FlagNameTextBox.Text)) bool refresh = false;
if (!_showPresets && FastFlagManager.PresetFlags.Values.Contains(name))
{ {
_showPresets = true;
TogglePresetsButton.IsChecked = true; TogglePresetsButton.IsChecked = true;
ReloadList(); _showPresets = true;
refresh = true;
} }
if (!name.Contains(_searchFilter))
{
ClearSearch(false);
refresh = true;
}
if (refresh)
ReloadList();
entry = _fastFlagList.Where(x => x.Name == name).FirstOrDefault(); entry = _fastFlagList.Where(x => x.Name == name).FirstOrDefault();
} }
@ -183,5 +210,14 @@ namespace Bloxstrap.UI.Elements.Menu.Pages
_showPresets = button.IsChecked ?? false; _showPresets = button.IsChecked ?? false;
ReloadList(); ReloadList();
} }
private void SearchTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (sender is not TextBox textbox)
return;
_searchFilter = textbox.Text;
ReloadList();
}
} }
} }