Skip to content

Commit 55ef448

Browse files
committed
Feature: Search / reset filter
1 parent 4f8b96e commit 55ef448

File tree

2 files changed

+109
-2
lines changed

2 files changed

+109
-2
lines changed

Source/NETworkManager/ProfileDialogManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ private static GroupInfo ParseGroupInfo(GroupViewModel instance)
298298
// Update group in profiles
299299
if (profiles.Count > 0)
300300
if (!string.IsNullOrEmpty(instance.Group.Name) &&
301-
!string.Equals(instance.Group.Name, name, StringComparison.Ordinal))
301+
!string.Equals(instance.Group.Name, name, StringComparison.OrdinalIgnoreCase))
302302
foreach (var profile in profiles)
303303
profile.Group = name;
304304
//else

Source/NETworkManager/Views/ProfilesView.xaml

Lines changed: 108 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,6 @@
283283
</Button>
284284
</Grid>
285285
<controls:MultiSelectDataGrid x:Name="DataGridProfiles" Grid.Column="0" Grid.Row="1"
286-
Visibility="{Binding IsSearching, Converter={StaticResource BooleanReverseToVisibilityCollapsedConverter}}"
287286
ItemsSource="{Binding Profiles}" SelectedItem="{Binding SelectedProfile}"
288287
SelectedItemsList="{Binding SelectedProfiles, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
289288
AutoGenerateColumns="false"
@@ -355,6 +354,11 @@
355354
Value="1">
356355
<Setter Property="ContextMenu" Value="{StaticResource RowContextMenu}" />
357356
</DataTrigger>
357+
<DataTrigger
358+
Binding="{Binding DataContext.IsSearching, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}"
359+
Value="True">
360+
<Setter Property="Visibility" Value="Collapsed" />
361+
</DataTrigger>
358362
</Style.Triggers>
359363
</Style>
360364
</DataGrid.RowStyle>
@@ -426,6 +430,109 @@
426430
<mah:ProgressRing Grid.Column="0" Grid.Row="1"
427431
Height="50" Width="50"
428432
IsActive="{Binding Path=IsSearching}" />
433+
<Grid Grid.Row="1" VerticalAlignment="Center">
434+
<Grid.Style>
435+
<Style TargetType="{x:Type TypeName=Grid}">
436+
<Setter Property="Visibility" Value="Collapsed" />
437+
<Style.Triggers>
438+
<MultiDataTrigger>
439+
<MultiDataTrigger.Conditions>
440+
<Condition Binding="{Binding Path=Groups.Count}" Value="0" />
441+
<Condition Binding="{Binding Path=IsSearching}" Value="False" />
442+
</MultiDataTrigger.Conditions>
443+
<MultiDataTrigger.Setters>
444+
<Setter Property="Visibility" Value="Visible" />
445+
</MultiDataTrigger.Setters>
446+
</MultiDataTrigger>
447+
<MultiDataTrigger>
448+
<MultiDataTrigger.Conditions>
449+
<Condition Binding="{Binding Path=Profiles.Count}" Value="0" />
450+
<Condition Binding="{Binding Path=IsSearching}" Value="False" />
451+
</MultiDataTrigger.Conditions>
452+
<MultiDataTrigger.Setters>
453+
<Setter Property="Visibility" Value="Visible" />
454+
</MultiDataTrigger.Setters>
455+
</MultiDataTrigger>
456+
</Style.Triggers>
457+
</Style>
458+
</Grid.Style>
459+
<Button HorizontalAlignment="Center" Focusable="False">
460+
<Button.Style>
461+
<Style TargetType="{x:Type TypeName=Button}"
462+
BasedOn="{StaticResource ResourceKey=CleanButton}">
463+
<Setter Property="Command" Value="{Binding Path=AddProfileCommand}" />
464+
<Style.Triggers>
465+
<DataTrigger
466+
Binding="{Binding Path=IsProfileFilterSet}"
467+
Value="True">
468+
<Setter Property="Command" Value="{Binding Path=ClearProfileFilterCommand}" />
469+
<Setter Property="ToolTip"
470+
Value="{x:Static Member=localization:Strings.ClearFilter}" />
471+
</DataTrigger>
472+
</Style.Triggers>
473+
</Style>
474+
</Button.Style>
475+
<Grid>
476+
<Grid.ColumnDefinitions>
477+
<ColumnDefinition Width="Auto" />
478+
<ColumnDefinition Width="*" />
479+
</Grid.ColumnDefinitions>
480+
<Rectangle Grid.Column="0" Width="20" Height="20">
481+
<Rectangle.Resources>
482+
<VisualBrush x:Key="VisualPlus" Stretch="Uniform"
483+
Visual="{iconPacks:Material Kind=Plus}" />
484+
<VisualBrush x:Key="VisualClear" Stretch="Uniform"
485+
Visual="{iconPacks:Material Kind=FilterRemoveOutline}" />
486+
</Rectangle.Resources>
487+
<Rectangle.Style>
488+
<Style TargetType="{x:Type TypeName=Rectangle}">
489+
<Setter Property="OpacityMask"
490+
Value="{StaticResource ResourceKey=VisualPlus}" />
491+
<Setter Property="Fill"
492+
Value="{DynamicResource ResourceKey=MahApps.Brushes.Gray3}" />
493+
<Style.Triggers>
494+
<DataTrigger
495+
Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TypeName=Button}}, Path=IsMouseOver}"
496+
Value="True">
497+
<Setter Property="Fill"
498+
Value="{DynamicResource ResourceKey=MahApps.Brushes.Gray5}" />
499+
</DataTrigger>
500+
<DataTrigger
501+
Binding="{Binding Path=IsProfileFilterSet}"
502+
Value="True">
503+
<Setter Property="OpacityMask"
504+
Value="{StaticResource ResourceKey=VisualClear}" />
505+
</DataTrigger>
506+
</Style.Triggers>
507+
</Style>
508+
</Rectangle.Style>
509+
</Rectangle>
510+
<TextBlock Grid.Column="1">
511+
<TextBlock.Style>
512+
<Style TargetType="{x:Type TypeName=TextBlock}"
513+
BasedOn="{StaticResource ResourceKey=MessageTextBlock}">
514+
<Setter Property="Text"
515+
Value="{x:Static Member=localization:Strings.NoProfilesFoundCreateOne}" />
516+
<Style.Triggers>
517+
<DataTrigger
518+
Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TypeName=Button}}, Path=IsMouseOver}"
519+
Value="True">
520+
<Setter Property="Foreground"
521+
Value="{DynamicResource ResourceKey=MahApps.Brushes.Gray5}" />
522+
</DataTrigger>
523+
<DataTrigger
524+
Binding="{Binding Path=IsProfileFilterSet}"
525+
Value="True">
526+
<Setter Property="Text"
527+
Value="{x:Static Member=localization:Strings.NothingFound}" />
528+
</DataTrigger>
529+
</Style.Triggers>
530+
</Style>
531+
</TextBlock.Style>
532+
</TextBlock>
533+
</Grid>
534+
</Button>
535+
</Grid>
429536
</Grid>
430537
</Grid>
431538
<Grid Grid.Column="0" Grid.Row="0">

0 commit comments

Comments
 (0)