From fecf22a5ec1c1f1d9e143913635e5b30a6646745 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Sun, 14 Jan 2024 23:28:58 +0800 Subject: [PATCH] feat: add a lot of other types. --- demo/Ursa.Demo/Pages/NumericUpDownDemo.axaml | 15 +- src/Ursa/Controls/NumericUpDown/IntUpDown.cs | 222 +++++++++++++++++-- 2 files changed, 216 insertions(+), 21 deletions(-) diff --git a/demo/Ursa.Demo/Pages/NumericUpDownDemo.axaml b/demo/Ursa.Demo/Pages/NumericUpDownDemo.axaml index a828016..5697bc3 100644 --- a/demo/Ursa.Demo/Pages/NumericUpDownDemo.axaml +++ b/demo/Ursa.Demo/Pages/NumericUpDownDemo.axaml @@ -8,14 +8,19 @@ d:DesignHeight="450" d:DesignWidth="800" mc:Ignorable="d"> - - + + + + + - + - + - + diff --git a/src/Ursa/Controls/NumericUpDown/IntUpDown.cs b/src/Ursa/Controls/NumericUpDown/IntUpDown.cs index 57b066c..874ddc8 100644 --- a/src/Ursa/Controls/NumericUpDown/IntUpDown.cs +++ b/src/Ursa/Controls/NumericUpDown/IntUpDown.cs @@ -4,15 +4,15 @@ using Avalonia.Utilities; namespace Ursa.Controls; -public class IntUpDown : NumericUpDownBase +public class NumericIntUpDown : NumericUpDownBase { protected override Type StyleKeyOverride { get; } = typeof(NumericUpDown); - static IntUpDown() + static NumericIntUpDown() { - MaximumProperty.OverrideDefaultValue(int.MaxValue); - MinimumProperty.OverrideDefaultValue(int.MinValue); - StepProperty.OverrideDefaultValue(1); + MaximumProperty.OverrideDefaultValue(int.MaxValue); + MinimumProperty.OverrideDefaultValue(int.MinValue); + StepProperty.OverrideDefaultValue(1); } protected override bool ParseText(string? text, out int? number) @@ -31,15 +31,15 @@ public class IntUpDown : NumericUpDownBase protected override int? Minus(int? a, int? b) => a - b; } -public class DoubleUpDown : NumericUpDownBase +public class NumericDoubleUpDown : NumericUpDownBase { protected override Type StyleKeyOverride { get; } = typeof(NumericUpDown); - static DoubleUpDown() + static NumericDoubleUpDown() { - MaximumProperty.OverrideDefaultValue(double.MaxValue); - MinimumProperty.OverrideDefaultValue(double.MinValue); - StepProperty.OverrideDefaultValue(1); + MaximumProperty.OverrideDefaultValue(double.MaxValue); + MinimumProperty.OverrideDefaultValue(double.MinValue); + StepProperty.OverrideDefaultValue(1); } protected override bool ParseText(string? text, out double? number) @@ -59,15 +59,15 @@ public class DoubleUpDown : NumericUpDownBase protected override double? Minus(double? a, double? b) => a - b; } -public class ByteUpDown : NumericUpDownBase +public class NumericByteUpDown : NumericUpDownBase { protected override Type StyleKeyOverride { get; } = typeof(NumericUpDown); - static ByteUpDown() + static NumericByteUpDown() { - MaximumProperty.OverrideDefaultValue(byte.MaxValue); - MinimumProperty.OverrideDefaultValue(byte.MinValue); - StepProperty.OverrideDefaultValue(1); + MaximumProperty.OverrideDefaultValue(byte.MaxValue); + MinimumProperty.OverrideDefaultValue(byte.MinValue); + StepProperty.OverrideDefaultValue(1); } protected override bool ParseText(string? text, out byte? number) @@ -84,4 +84,194 @@ public class ByteUpDown : NumericUpDownBase protected override byte? Add(byte? a, byte? b) => (byte?) (a + b); protected override byte? Minus(byte? a, byte? b) => (byte?) (a - b); -} \ No newline at end of file +} + +public class NumericSByteUpDown : NumericUpDownBase +{ + protected override Type StyleKeyOverride { get; } = typeof(NumericUpDown); + + static NumericSByteUpDown() + { + MaximumProperty.OverrideDefaultValue(sbyte.MaxValue); + MinimumProperty.OverrideDefaultValue(sbyte.MinValue); + StepProperty.OverrideDefaultValue(1); + } + + protected override bool ParseText(string? text, out sbyte? number) + { + var result = sbyte.TryParse(text, ParsingNumberStyle, NumberFormat, out var value); + number = value; + return result; + } + + protected override string? ValueToString(sbyte? value) => value?.ToString(FormatString, NumberFormat); + + protected override sbyte Zero => 0; + + protected override sbyte? Add(sbyte? a, sbyte? b) => (sbyte?) (a + b); + + protected override sbyte? Minus(sbyte? a, sbyte? b) => (sbyte?) (a - b); +} + +public class NumericShortUpDown : NumericUpDownBase +{ + protected override Type StyleKeyOverride { get; } = typeof(NumericUpDown); + + static NumericShortUpDown() + { + MaximumProperty.OverrideDefaultValue(short.MaxValue); + MinimumProperty.OverrideDefaultValue(short.MinValue); + StepProperty.OverrideDefaultValue(1); + } + + protected override bool ParseText(string? text, out short? number) + { + var result = short.TryParse(text, ParsingNumberStyle, NumberFormat, out var value); + number = value; + return result; + } + + protected override string? ValueToString(short? value) => value?.ToString(FormatString, NumberFormat); + + protected override short Zero => 0; + + protected override short? Add(short? a, short? b) => (short?) (a + b); + + protected override short? Minus(short? a, short? b) => (short?) (a - b); +} + +public class NumericUShortUpDown : NumericUpDownBase +{ + protected override Type StyleKeyOverride { get; } = typeof(NumericUpDown); + + static NumericUShortUpDown() + { + MaximumProperty.OverrideDefaultValue(ushort.MaxValue); + MinimumProperty.OverrideDefaultValue(ushort.MinValue); + StepProperty.OverrideDefaultValue(1); + } + + protected override bool ParseText(string? text, out ushort? number) + { + var result = ushort.TryParse(text, ParsingNumberStyle, NumberFormat, out var value); + number = value; + return result; + } + + protected override string? ValueToString(ushort? value) => value?.ToString(FormatString, NumberFormat); + + protected override ushort Zero => 0; + + protected override ushort? Add(ushort? a, ushort? b) => (ushort?) (a + b); + + protected override ushort? Minus(ushort? a, ushort? b) => (ushort?) (a - b); +} + +public class NumericLongUpDown : NumericUpDownBase +{ + protected override Type StyleKeyOverride { get; } = typeof(NumericUpDown); + + static NumericLongUpDown() + { + MaximumProperty.OverrideDefaultValue(long.MaxValue); + MinimumProperty.OverrideDefaultValue(long.MinValue); + StepProperty.OverrideDefaultValue(1); + } + + protected override bool ParseText(string? text, out long? number) + { + var result = long.TryParse(text, ParsingNumberStyle, NumberFormat, out var value); + number = value; + return result; + } + + protected override string? ValueToString(long? value) => value?.ToString(FormatString, NumberFormat); + + protected override long Zero => 0; + + protected override long? Add(long? a, long? b) => a + b; + + protected override long? Minus(long? a, long? b) => a - b; +} + +public class NumericULongUpDown : NumericUpDownBase +{ + protected override Type StyleKeyOverride { get; } = typeof(NumericUpDown); + + static NumericULongUpDown() + { + MaximumProperty.OverrideDefaultValue(ulong.MaxValue); + MinimumProperty.OverrideDefaultValue(ulong.MinValue); + StepProperty.OverrideDefaultValue(1); + } + + protected override bool ParseText(string? text, out ulong? number) + { + var result = ulong.TryParse(text, ParsingNumberStyle, NumberFormat, out var value); + number = value; + return result; + } + + protected override string? ValueToString(ulong? value) => value?.ToString(FormatString, NumberFormat); + + protected override ulong Zero => 0; + + protected override ulong? Add(ulong? a, ulong? b) => a + b; + + protected override ulong? Minus(ulong? a, ulong? b) => a - b; +} + +public class NumericFloatUpDown : NumericUpDownBase +{ + protected override Type StyleKeyOverride { get; } = typeof(NumericUpDown); + + static NumericFloatUpDown() + { + MaximumProperty.OverrideDefaultValue(float.MaxValue); + MinimumProperty.OverrideDefaultValue(float.MinValue); + StepProperty.OverrideDefaultValue(1); + } + + protected override bool ParseText(string? text, out float? number) + { + var result = float.TryParse(text, ParsingNumberStyle, NumberFormat, out var value); + number = value; + return result; + } + + protected override string? ValueToString(float? value) => value?.ToString(FormatString, NumberFormat); + + protected override float Zero => 0; + + protected override float? Add(float? a, float? b) => a + b; + + protected override float? Minus(float? a, float? b) => a - b; +} + +public class NumericDecimalUpDown : NumericUpDownBase +{ + protected override Type StyleKeyOverride { get; } = typeof(NumericUpDown); + + static NumericDecimalUpDown() + { + MaximumProperty.OverrideDefaultValue(decimal.MaxValue); + MinimumProperty.OverrideDefaultValue(decimal.MinValue); + StepProperty.OverrideDefaultValue(1); + } + + protected override bool ParseText(string? text, out decimal? number) + { + var result = decimal.TryParse(text, ParsingNumberStyle, NumberFormat, out var value); + number = value; + return result; + } + + protected override string? ValueToString(decimal? value) => value?.ToString(FormatString, NumberFormat); + + protected override decimal Zero => 0; + + protected override decimal? Add(decimal? a, decimal? b) => a + b; + + protected override decimal? Minus(decimal? a, decimal? b) => a - b; +} +