mirror of
https://github.com/Stone-Red-Code/DesktopMagic.git
synced 2026-09-04 00:46:12 +02:00
76 lines
2.3 KiB
C#
76 lines
2.3 KiB
C#
using System;
|
|
using System.Diagnostics.CodeAnalysis;
|
|
|
|
namespace DesktopMagic.Api.Settings;
|
|
|
|
/// <summary>
|
|
/// Represents a slider control.
|
|
/// </summary>
|
|
public sealed class Slider : Setting
|
|
{
|
|
private double _value;
|
|
|
|
/// <summary>
|
|
/// Gets or sets the maximum value for the <see cref="Slider"/> element.
|
|
/// </summary>
|
|
public double Maximum { get; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the minimum value for the <see cref="Slider"/> element.
|
|
/// </summary>
|
|
public double Minimum { get; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the value assigned to the <see cref="Slider"/> element.
|
|
/// </summary>
|
|
[SuppressMessage("Major Bug", "S1244:Floating point numbers should not be tested for equality", Justification = "Not applicable here since we want to detect changes in the value.")]
|
|
public double Value
|
|
{
|
|
get => _value;
|
|
set
|
|
{
|
|
if (_value != value)
|
|
{
|
|
_value = value;
|
|
ValueChanged();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="Slider"/> class with the provided <paramref name="min"/> value, <paramref name="max"/> value and <paramref name="value"/>.
|
|
/// </summary>
|
|
/// <param name="min">The maximum value for the <see cref="Slider"/> element.</param>
|
|
/// <param name="max">The minimum value for the <see cref="Slider"/> element.</param>
|
|
/// <param name="value">The value assigned to the <see cref="Slider"/> element.</param>
|
|
public Slider(double min, double max, double value = 0)
|
|
{
|
|
if (min > max)
|
|
{
|
|
throw new ArgumentException($"{nameof(min)} is greater than or equal to {nameof(max)}!");
|
|
}
|
|
if (value > max)
|
|
{
|
|
throw new ArgumentException($"{nameof(value)} is greater than {nameof(max)}!");
|
|
}
|
|
if (value < min)
|
|
{
|
|
throw new ArgumentException($"{nameof(value)} is less than {nameof(min)}!");
|
|
}
|
|
|
|
Minimum = min;
|
|
Maximum = max;
|
|
Value = value;
|
|
}
|
|
|
|
internal override string GetJsonValue()
|
|
{
|
|
return Value.ToString();
|
|
}
|
|
|
|
internal override void SetJsonValue(string value)
|
|
{
|
|
_ = double.TryParse(value, out double result);
|
|
Value = result;
|
|
}
|
|
} |