Skip to content

Commit

Permalink
Add a clear button to the date selector (#637)
Browse files Browse the repository at this point in the history
  • Loading branch information
IhateTrains authored Oct 18, 2024
1 parent 04a071e commit cdf62be
Show file tree
Hide file tree
Showing 8 changed files with 35 additions and 20 deletions.
2 changes: 2 additions & 0 deletions Fronter.NET.sln.DotSettings.user
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AControlExtensions_002Ecs_002Fl_003AC_0021_003FUsers_003FSeweryn_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F49302399778be8eddd550e51d8f27dd5a9a8ecd52db38738ca2587bc74032a1_003FControlExtensions_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADatePicker_002Ecs_002Fl_003AC_0021_003FUsers_003FSeweryn_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F28786cf04f4746f62e937c98e0edc36c95527a733e72a6dfc398020b0713ae5_003FDatePicker_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADateTime_002Ecs_002Fl_003AC_0021_003FUsers_003FSeweryn_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F3b77eb95a5c127467d81a024e610c2498b68e2e375d1b36a2076e41f9166a4_003FDateTime_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ALevelMap_002Ecs_002Fl_003AC_0021_003FUsers_003FSeweryn_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F339dc75dd2f0ccf7b2995c20d9aacc1f3b2e4025e569e17e5ae2c362ec3833c_003FLevelMap_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>

Expand Down
1 change: 1 addition & 0 deletions Fronter.NET/Fronter.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Sentry" Version="4.12.1" />
<PackageReference Include="System.Text.Json" Version="8.0.5" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Fronter.Models.Configuration.Options;

public sealed class CheckBoxSelector : Selector {
public sealed class CheckBoxSelector {
public CheckBoxSelector(BufferedReader reader) {
var parser = new Parser();
RegisterKeys(parser);
Expand Down
17 changes: 14 additions & 3 deletions Fronter.NET/Models/Configuration/Options/DateSelector.cs
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
using commonItems;
using ReactiveUI;
using System;

namespace Fronter.Models.Configuration.Options;

public sealed class DateSelector : Selector {
public sealed class DateSelector : ReactiveObject {
public DateSelector(BufferedReader reader) {
var parser = new Parser();
RegisterKeys(parser);
parser.ParseStream(reader);
}
private void RegisterKeys(Parser parser) {
parser.RegisterKeyword("editable", reader => Editable = reader.GetString() == "true");
parser.RegisterKeyword("editable", reader => Editable = string.Equals(reader.GetString(), "true", StringComparison.OrdinalIgnoreCase));
parser.RegisterKeyword("value", reader => {
var valueStr = reader.GetString();
Value = string.IsNullOrWhiteSpace(valueStr) ? null : new Date(valueStr);
Expand All @@ -24,7 +25,13 @@ private void RegisterKeys(Parser parser) {
public bool Editable { get; private set; } = true; // editable unless disabled
public DateTimeOffset MinDate { get; set; } = DateTimeOffset.MinValue;
public DateTimeOffset MaxDate { get; set; } = DateTimeOffset.MaxValue;
public DateTimeOffset? DateTimeOffsetValue { get; set; }
private DateTimeOffset? dateTimeOffsetValue;
public DateTimeOffset? DateTimeOffsetValue {
get => dateTimeOffsetValue;
set {
this.RaiseAndSetIfChanged(ref dateTimeOffsetValue, value);
}
}

public Date? Value {
get {
Expand All @@ -45,4 +52,8 @@ public Date? Value {
}

public string? Tooltip { get; private set; }

public void ClearValue() {
DateTimeOffsetValue = null;
}
}
2 changes: 1 addition & 1 deletion Fronter.NET/Models/Configuration/Options/RadioSelector.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

namespace Fronter.Models.Configuration.Options;

public sealed class RadioSelector : Selector {
public sealed class RadioSelector {
private static readonly ILog logger = LogManager.GetLogger("Radio selector");
public RadioSelector(BufferedReader reader) {
var parser = new Parser();
Expand Down
5 changes: 0 additions & 5 deletions Fronter.NET/Models/Configuration/Options/Selector.cs

This file was deleted.

4 changes: 2 additions & 2 deletions Fronter.NET/Models/Configuration/Options/TextSelector.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

namespace Fronter.Models.Configuration.Options;

public sealed class TextSelector : Selector {
public sealed class TextSelector {
public TextSelector(BufferedReader reader) {
var parser = new Parser();
RegisterKeys(parser);
parser.ParseStream(reader);
}
private void RegisterKeys(Parser parser) {
parser.RegisterKeyword("editable", reader => Editable = reader.GetString() == "true");
parser.RegisterKeyword("editable", reader => Editable = string.Equals(reader.GetString(), "true", System.StringComparison.OrdinalIgnoreCase));
parser.RegisterKeyword("value", reader => Value = reader.GetString());
parser.RegisterKeyword("tooltip", reader => Tooltip = reader.GetString());
parser.RegisterRegex(CommonRegexes.Catchall, ParserHelpers.IgnoreAndLogItem);
Expand Down
22 changes: 14 additions & 8 deletions Fronter.NET/Views/OptionsView.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,20 @@
/>
</Border>

<DatePicker
ToolTip.Tip="{ns:DynamicLoc DateSelector.Tooltip, FallbackValue={}}"
SelectedDate="{Binding DateSelector.DateTimeOffsetValue, FallbackValue={}}"
IsVisible="{Binding DateSelector, Converter={x:Static ObjectConverters.IsNotNull}}"
IsEnabled="{Binding DateSelector.Editable, FallbackValue=false}"
MinYear="{Binding DateSelector.MinDate, FallbackValue={}}"
MaxYear="{Binding DateSelector.MaxDate, FallbackValue={}}"
/>
<StackPanel Orientation="Horizontal" IsVisible="{Binding DateSelector, Converter={x:Static ObjectConverters.IsNotNull}}">
<DatePicker
ToolTip.Tip="{ns:DynamicLoc DateSelector.Tooltip, FallbackValue={}}"
SelectedDate="{Binding DateSelector.DateTimeOffsetValue, FallbackValue={}}"
IsEnabled="{Binding DateSelector.Editable, FallbackValue=false}"
MinYear="{Binding DateSelector.MinDate, FallbackValue={}}"
MaxYear="{Binding DateSelector.MaxDate, FallbackValue={}}"
/>
<Button
Command="{Binding DateSelector.ClearValue, FallbackValue={}}"
Margin="5,0,0,0"
IsVisible="{Binding DateSelector.DateTimeOffsetValue, Converter={x:Static ObjectConverters.IsNotNull}, FallbackValue={}}"
Content="" />
</StackPanel>
</StackPanel>
</Border>
</DataTemplate>
Expand Down

0 comments on commit cdf62be

Please sign in to comment.