Browse Source

Just code style things

pull/4241/head
Splitwirez 6 years ago
parent
commit
773f3a3584
  1. 35
      src/Avalonia.Controls/ToggleSwitch.cs

35
src/Avalonia.Controls/ToggleSwitch.cs

@ -10,6 +10,12 @@ namespace Avalonia.Controls
/// </summary>
public class ToggleSwitch : ToggleButton
{
Panel _knobsPanel;
Panel _switchKnob;
bool _knobsPanelPressed = false;
Point _switchStartPoint = new Point();
double _initLeft = -1;
static ToggleSwitch()
{
OffContentProperty.Changed.AddClassHandler<ToggleSwitch>((x, e) => x.OffContentChanged(e));
@ -17,13 +23,17 @@ namespace Avalonia.Controls
IsCheckedProperty.Changed.AddClassHandler<ToggleSwitch>((x, e) =>
{
if ((e.NewValue != null) && (e.NewValue is bool val))
{
x.UpdateKnobPos(val);
}
});
BoundsProperty.Changed.AddClassHandler<ToggleSwitch>((x, e) =>
{
if (x.IsChecked != null)
{
x.UpdateKnobPos(x.IsChecked.Value);
}
});
}
@ -144,9 +154,6 @@ namespace Avalonia.Controls
}
Panel _knobsPanel;
Panel _switchKnob;
bool _knobsPanelPressed = false;
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
{
base.OnApplyTemplate(e);
@ -159,11 +166,11 @@ namespace Avalonia.Controls
_knobsPanel.PointerMoved += KnobsPanel_PointerMoved;
if (IsChecked.HasValue)
{
UpdateKnobPos(IsChecked.Value);
}
}
Point _switchStartPoint = new Point();
double _initLeft = -1;
private void KnobsPanel_PointerPressed(object sender, Input.PointerPressedEventArgs e)
{
_switchStartPoint = e.GetPosition(_switchKnob);
@ -178,16 +185,22 @@ namespace Avalonia.Controls
{
bool shouldBecomeChecked = Canvas.GetLeft(_knobsPanel) >= (_switchKnob.Bounds.Width / 2);
_knobsPanel.ClearValue(Canvas.LeftProperty);
PseudoClasses.Set(":dragging", false);
if (shouldBecomeChecked == IsChecked)
{
UpdateKnobPos(shouldBecomeChecked);
}
else
{
IsChecked = shouldBecomeChecked;
}
}
else
{
base.Toggle();
}
_isDragging = false;
@ -208,14 +221,18 @@ namespace Avalonia.Controls
}
if (_isDragging)
{
Canvas.SetLeft(_knobsPanel, System.Math.Min(_switchKnob.Bounds.Width, System.Math.Max(0, (_initLeft + difference.X))));
}
}
}
protected override void Toggle()
{
if ((_switchKnob != null) && (!_switchKnob.IsPointerOver))
{
base.Toggle();
}
}
protected void UpdateKnobPos(bool value)
@ -223,9 +240,13 @@ namespace Avalonia.Controls
if ((_switchKnob != null) && (_knobsPanel != null))
{
if (value)
{
Canvas.SetLeft(_knobsPanel, _switchKnob.Bounds.Width);
}
else
{
Canvas.SetLeft(_knobsPanel, 0);
}
}
}
}

Loading…
Cancel
Save