Skip to content

Commit 840d2eb

Browse files
committed
Implements #2
1 parent 61bcf81 commit 840d2eb

File tree

4 files changed

+33
-9
lines changed

4 files changed

+33
-9
lines changed

Package/Package.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535
<ItemGroup>
3636
<PackageReference Include="NodaTime" Version="3.0.0" />
3737
<PackageReference Include="OneOf" Version="2.1.155" />
38-
<PackageReference Include="ZSpitz.Util" Version="0.0.39" />
39-
<PackageReference Include="ZSpitz.Util.Wpf" Version="0.0.39" />
38+
<PackageReference Include="ZSpitz.Util" Version="0.0.40" />
39+
<PackageReference Include="ZSpitz.Util.Wpf" Version="0.0.40" />
4040
</ItemGroup>
4141

4242
</Project>

UI/ViewModels/ConfigVM.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Linq;
55
using ZSpitz.Util;
66
using static NodaTime.DateTimeZoneProviders;
7+
using System;
78

89
namespace DateTimeVisualizer.UI {
910
public class ConfigVM : ViewModelBase<Config> {
@@ -44,5 +45,22 @@ public ConfigVM(Config model) : base(model) {
4445

4546
public ZoneNodeVM[] AvailableBclZones { get; }
4647
public ZoneNodeVM[] AvailableTzdbZones { get; }
48+
49+
private string _textFilter = "";
50+
public string TextFilter {
51+
get => _textFilter;
52+
set {
53+
if (_textFilter == value) { return; }
54+
NotifyChanged(ref _textFilter, value);
55+
56+
Action<ZoneNodeVM> action =
57+
_textFilter.IsNullOrWhitespace() ?
58+
(Action<ZoneNodeVM>)(x => x.ResetFilter()) :
59+
x => x.ApplyFilter(data => data.Match(s => s, zone => zone.Id).Contains(_textFilter, StringComparison.OrdinalIgnoreCase));
60+
61+
AvailableBclZones.ForEach(action);
62+
AvailableTzdbZones.ForEach(action);
63+
}
64+
}
4765
}
4866
}

UI/Views/ConfigView.xaml

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,40 @@
44
xmlns:util="clr-namespace:ZSpitz.Util.Wpf;assembly=ZSpitz.Util.Wpf"
55
xmlns:nt="clr-namespace:NodaTime;assembly=NodaTime"
66
xmlns:my="clr-namespace:DateTimeVisualizer"
7-
Orientation="Vertical" RowCount="3">
7+
Orientation="Vertical" RowCount="4" Columns="Auto;Auto">
88
<util:AutoGrid.Resources>
99
<my:FilterStateConverter x:Key="FilterStateConverter" />
1010
</util:AutoGrid.Resources>
1111

12+
<DockPanel Grid.ColumnSpan="2" Margin="0,0,0,12">
13+
<TextBlock Text="Text filter" Margin="0,0,3,0" />
14+
<TextBox Text="{Binding TextFilter,UpdateSourceTrigger=PropertyChanged}" />
15+
</DockPanel>
16+
1217
<TextBlock Text="TZDB zones:" Margin="0,0,12,3" />
13-
<TreeView MaxHeight="300" ItemsSource="{Binding AvailableTzdbZones}">
18+
<TreeView MaxHeight="350" ItemsSource="{Binding AvailableTzdbZones}" Margin="0,0,12,3">
1419
<TreeView.ItemContainerStyle>
1520
<Style TargetType="TreeViewItem">
1621
<Setter Property="Visibility" Value="{Binding FilterState, Converter={StaticResource FilterStateConverter}}" />
1722
</Style>
1823
</TreeView.ItemContainerStyle>
1924
<TreeView.ItemTemplate>
2025
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
21-
<StackPanel Orientation="Horizontal" Visibility="{Binding FilterState, Converter={StaticResource FilterStateConverter}}">
26+
<StackPanel Orientation="Horizontal">
2227
<CheckBox Margin="2" IsChecked="{Binding IsSelected}" />
2328
<TextBlock Text="{Binding Text}" Foreground="{Binding FilterState, Converter={StaticResource FilterStateConverter}}" FontWeight="{Binding FilterState, Converter={StaticResource FilterStateConverter}}" />
2429
</StackPanel>
2530
</HierarchicalDataTemplate>
2631
</TreeView.ItemTemplate>
2732
</TreeView>
28-
<TextBlock Text="{Binding VersionId, Source={x:Static nt:DateTimeZoneProviders.Tzdb}}" />
33+
<TextBlock Text="{Binding VersionId, Source={x:Static nt:DateTimeZoneProviders.Tzdb}}" Margin="0,0,12,0" />
2934

3035
<TextBlock Text="BCL zones:" Margin="0,0,0,3" />
31-
<ListBox SelectionMode="Multiple" MaxHeight="300" SelectedValuePath="Text" ItemsSource="{Binding AvailableBclZones}" Margin="0,0,0,3">
36+
<ListBox SelectionMode="Multiple" MaxHeight="350" SelectedValuePath="Text" ItemsSource="{Binding AvailableBclZones}" Margin="0,0,0,3">
3237
<ListBox.ItemContainerStyle>
3338
<Style TargetType="ListBoxItem">
3439
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
40+
<Setter Property="Visibility" Value="{Binding FilterState, Converter={StaticResource FilterStateConverter}}" />
3541
</Style>
3642
</ListBox.ItemContainerStyle>
3743
<ListBox.ItemTemplate>

Visualizer/Visualizer.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
</Reference>
2020
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
2121
<PackageReference Include="OneOf" Version="2.1.155" />
22-
<PackageReference Include="ZSpitz.Util" Version="0.0.39" />
23-
<PackageReference Include="ZSpitz.Util.Wpf" Version="0.0.39" />
22+
<PackageReference Include="ZSpitz.Util" Version="0.0.40" />
23+
<PackageReference Include="ZSpitz.Util.Wpf" Version="0.0.40" />
2424
<PackageReference Include="Octokit" Version="0.48.0" />
2525
<PackageReference Include="NodaTime" Version="3.0.0" />
2626
<ProjectReference Include="..\Debuggee\Debuggee.csproj" />

0 commit comments

Comments
 (0)