aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Touch
diff options
context:
space:
mode:
authorVictoria Plitt <Victoria.Plitt@twine-s.com>2021-12-15 19:54:05 +0200
committerVictoria Plitt <Victoria.Plitt@twine-s.com>2021-12-15 19:54:05 +0200
commit61fabd3e525954b941263e9724e8a267f58c6f01 (patch)
treea3d9c433a853fb2a7ea2d53c6e9aea7e36b836a4 /Software/Visual_Studio/Tango.Touch
parent24464678b69cf6639a1f65788eac9b93e099d45f (diff)
downloadTango-61fabd3e525954b941263e9724e8a267f58c6f01.tar.gz
Tango-61fabd3e525954b941263e9724e8a267f58c6f01.zip
Undo/Redo for offset( slider with 3 thumbs)
Diffstat (limited to 'Software/Visual_Studio/Tango.Touch')
-rw-r--r--Software/Visual_Studio/Tango.Touch/TouchColorPickerControls/MultiRangeSlider.cs54
-rw-r--r--Software/Visual_Studio/Tango.Touch/TouchColorPickerControls/TouchSliderThreeThumbs.cs117
2 files changed, 169 insertions, 2 deletions
diff --git a/Software/Visual_Studio/Tango.Touch/TouchColorPickerControls/MultiRangeSlider.cs b/Software/Visual_Studio/Tango.Touch/TouchColorPickerControls/MultiRangeSlider.cs
index beb34e6f4..0cfd74f5c 100644
--- a/Software/Visual_Studio/Tango.Touch/TouchColorPickerControls/MultiRangeSlider.cs
+++ b/Software/Visual_Studio/Tango.Touch/TouchColorPickerControls/MultiRangeSlider.cs
@@ -9,11 +9,13 @@ using System.Windows.Controls.Primitives;
namespace Tango.Touch.Controls
{
+
public class MultiRangeSlider : Slider
{
private bool m_isBlocked;
#region DependencyProperties
+
public double LeftValue
{
get { return (double)GetValue(LeftValueProperty); }
@@ -97,6 +99,29 @@ namespace Tango.Touch.Controls
public bool IsLast { get; set; }
+
+ public double ValueBeforeChanging
+ {
+ get { return (double)GetValue(ValueBeforeChangingProperty); }
+ set { SetValue(ValueBeforeChangingProperty, value); }
+ }
+
+ // Using a DependencyProperty as the backing store for ValueBeforeChanging. This enables animation, styling, binding, etc...
+ public static readonly DependencyProperty ValueBeforeChangingProperty =
+ DependencyProperty.Register("ValueBeforeChanging", typeof(double), typeof(MultiRangeSlider), new FrameworkPropertyMetadata(double.MinValue));
+
+
+ public double ValueAfterChanging
+ {
+ get { return (double)GetValue(ValueAfterChangingProperty); }
+ set { SetValue(ValueAfterChangingProperty, value); }
+ }
+
+ // Using a DependencyProperty as the backing store for ValueAfterChanging. This enables animation, styling, binding, etc...
+ public static readonly DependencyProperty ValueAfterChangingProperty =
+ DependencyProperty.Register("ValueAfterChanging", typeof(double), typeof(MultiRangeSlider), new FrameworkPropertyMetadata(double.MinValue));
+
+
#endregion
#region Events
@@ -114,6 +139,19 @@ namespace Tango.Touch.Controls
}
}
+ public static readonly RoutedEvent MultiRangeSliderValueChangedCompletedEvent = EventManager.RegisterRoutedEvent("MultiRangeSliderValueChangedCompleted", RoutingStrategy.Bubble, typeof(RoutedPropertyChangedEventHandler<double>), typeof(MultiRangeSlider));
+ public event RoutedPropertyChangedEventHandler<double> MultiRangeSliderValueChangedCompleted
+ {
+ add
+ {
+ AddHandler(MultiRangeSliderValueChangedCompletedEvent, value);
+ }
+ remove
+ {
+ RemoveHandler(MultiRangeSliderValueChangedCompletedEvent, value);
+ }
+ }
+
#endregion
public MultiRangeSlider()
@@ -129,9 +167,23 @@ namespace Tango.Touch.Controls
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MultiRangeSlider), new FrameworkPropertyMetadata(typeof(MultiRangeSlider)));
}
-
+
#region change and validate value
+ protected override void OnThumbDragStarted(DragStartedEventArgs e)
+ {
+ ValueBeforeChanging = Value;
+ base.OnThumbDragStarted(e);
+ }
+
+ protected override void OnThumbDragCompleted(DragCompletedEventArgs e)
+ {
+ base.OnThumbDragCompleted(e);
+ RoutedPropertyChangedEventArgs<double> args = new RoutedPropertyChangedEventArgs<double>(ValueBeforeChanging, Value);
+ args.RoutedEvent = MultiRangeSlider.MultiRangeSliderValueChangedCompletedEvent;
+ RaiseEvent(args);
+ }
+
protected override void OnValueChanged(double oldValue, double newValue)
{
if (m_isBlocked) return;
diff --git a/Software/Visual_Studio/Tango.Touch/TouchColorPickerControls/TouchSliderThreeThumbs.cs b/Software/Visual_Studio/Tango.Touch/TouchColorPickerControls/TouchSliderThreeThumbs.cs
index 230bfea8c..4d39136e8 100644
--- a/Software/Visual_Studio/Tango.Touch/TouchColorPickerControls/TouchSliderThreeThumbs.cs
+++ b/Software/Visual_Studio/Tango.Touch/TouchColorPickerControls/TouchSliderThreeThumbs.cs
@@ -57,6 +57,31 @@ namespace Tango.Touch.Controls
public static readonly DependencyProperty LowerValueProperty =
DependencyProperty.Register("LowerValue", typeof(double), typeof(TouchSliderThreeThumbs), new FrameworkPropertyMetadata(0d, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
+
+ public double LowerValueStartChanging
+ {
+ get { return (double)GetValue(LowerValueStartChangingProperty); }
+ set { SetValue(LowerValueStartChangingProperty, value); }
+ }
+
+ /// <summary>
+ /// The lower value before changing property. Using to calculate delta or for UnDo management.
+ /// </summary>
+ public static readonly DependencyProperty LowerValueStartChangingProperty =
+ DependencyProperty.Register("LowerValueStartChanging", typeof(double), typeof(TouchSliderThreeThumbs), new FrameworkPropertyMetadata(0d, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
+
+ public double LowerValueEndChanging
+ {
+ get { return (int)GetValue(LowerValueEndChangingProperty); }
+ set { SetValue(LowerValueEndChangingProperty, value); }
+ }
+
+ /// <summary>
+ /// The lower value end changing property. Using to calculate delta or for UnDo management.
+ /// </summary>
+ public static readonly DependencyProperty LowerValueEndChangingProperty =
+ DependencyProperty.Register("LowerValueEndChanging", typeof(double), typeof(TouchSliderThreeThumbs), new FrameworkPropertyMetadata(0d, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
+
public double UpperValue
{
get { return (double)GetValue(UpperValueProperty); }
@@ -65,6 +90,32 @@ namespace Tango.Touch.Controls
public static readonly DependencyProperty UpperValueProperty =
DependencyProperty.Register("UpperValue", typeof(double), typeof(TouchSliderThreeThumbs), new FrameworkPropertyMetadata(100d, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
+
+ public double UpperValueStartChanging
+ {
+ get { return (double)GetValue(UpperValueStartChangingProperty); }
+ set { SetValue(UpperValueStartChangingProperty, value); }
+ }
+
+ /// <summary>
+ /// The upper value start changing property. Using to calculate delta or for UnDo management.
+ /// </summary>
+ public static readonly DependencyProperty UpperValueStartChangingProperty =
+ DependencyProperty.Register("UpperValueStartChanging", typeof(double), typeof(TouchSliderThreeThumbs), new FrameworkPropertyMetadata(0d, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
+
+ public double UpperValueEndChanging
+ {
+ get { return (double)GetValue(UpperValueEndChangingProperty); }
+ set { SetValue(UpperValueEndChangingProperty, value); }
+ }
+
+ /// <summary>
+ /// The upper value end changing property. Using to calculate delta or for UnDo management.
+ /// </summary>
+ public static readonly DependencyProperty UpperValueEndChangingProperty =
+ DependencyProperty.Register("UpperValueEndChanging", typeof(double), typeof(TouchSliderThreeThumbs), new FrameworkPropertyMetadata(0d, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
+
+
public double MiddleValue
{
get { return (double)GetValue(MiddleValueProperty); }
@@ -72,7 +123,31 @@ namespace Tango.Touch.Controls
}
public static readonly DependencyProperty MiddleValueProperty = DependencyProperty.Register("MiddleValue", typeof(double), typeof(TouchSliderThreeThumbs),
new FrameworkPropertyMetadata(50d, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
-
+
+
+
+ public double MiddleValueStartChanging
+ {
+ get { return (double)GetValue(MiddleValueStartChangingProperty); }
+ set { SetValue(MiddleValueStartChangingProperty, value); }
+ }
+
+ // Using a DependencyProperty as the backing store for MiddleValueStartChanging. This enables animation, styling, binding, etc...
+ public static readonly DependencyProperty MiddleValueStartChangingProperty =
+ DependencyProperty.Register("MiddleValueStartChanging", typeof(double), typeof(TouchSliderThreeThumbs), new FrameworkPropertyMetadata(0d, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
+
+
+ public double MiddleValueEndChanging
+ {
+ get { return (double)GetValue(MiddleValueEndChangingProperty); }
+ set { SetValue(MiddleValueEndChangingProperty, value); }
+ }
+
+ // Using a DependencyProperty as the backing store for MiddleValueEndChanging. This enables animation, styling, binding, etc...
+ public static readonly DependencyProperty MiddleValueEndChangingProperty =
+ DependencyProperty.Register("MiddleValueEndChanging", typeof(double), typeof(TouchSliderThreeThumbs), new FrameworkPropertyMetadata(0d, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
+
+
public double MinimumMiddleRange
{
get { return (double)GetValue(MinimumMiddleRangeProperty); }
@@ -179,7 +254,10 @@ namespace Tango.Touch.Controls
base.OnApplyTemplate();
if (_lowerSlider != null)
+ {
_lowerSlider.ValueChanged -= LowerSlider_ValueChanged;
+ _lowerSlider.MultiRangeSliderValueChangedCompleted -= LowerSlider_ValueChangedCompleted;
+ }
// LowerValue = Minimum;
//UpperValue = Maximum;
_lowerSlider = GetTemplateChild(PART_LowerSlider) as MultiRangeSlider;
@@ -190,12 +268,16 @@ namespace Tango.Touch.Controls
_lowerSlider.RightValue = UpperValue;
_lowerSlider.IsFirst = true;
_lowerSlider.MultiRangeSliderValueChanged += LowerSlider_ValueChanged;
+ _lowerSlider.MultiRangeSliderValueChangedCompleted += LowerSlider_ValueChangedCompleted;
_lowerSlider.TouchDown += TouchDownSlider;
_lowerSlider.Value = LowerValue;
}
if(_middleSlider != null)
+ {
_middleSlider.MultiRangeSliderValueChanged -= MiddleSlider_ValueChanged;
+ _middleSlider.MultiRangeSliderValueChangedCompleted -= MiddleSlider_ValueChangedCompleted;
+ }
_middleSlider = GetTemplateChild(Part_MiddleSlider) as MultiRangeSlider;
if(_middleSlider != null)
@@ -203,12 +285,16 @@ namespace Tango.Touch.Controls
_middleSlider.LeftValue = LowerValue;
_middleSlider.RightValue = UpperValue;
_middleSlider.MultiRangeSliderValueChanged += MiddleSlider_ValueChanged;
+ _middleSlider.MultiRangeSliderValueChangedCompleted += MiddleSlider_ValueChangedCompleted;
_middleSlider.TouchDown += TouchDownSlider;
_middleSlider.Value = MiddleValue;// (Maximum - Minimum) / 2;
}
if (_upperSlider != null)
+ {
_upperSlider.MultiRangeSliderValueChanged -= UpperSlider_ValueChanged;
+ _upperSlider.MultiRangeSliderValueChangedCompleted -= RightSlider_ValueChangedCompleted;
+ }
_upperSlider = GetTemplateChild(PART_UpperSlider) as MultiRangeSlider;
if(_upperSlider != null)
@@ -217,6 +303,7 @@ namespace Tango.Touch.Controls
_upperSlider.RightValue = Maximum;
_upperSlider.IsLast = true;
_upperSlider.MultiRangeSliderValueChanged += UpperSlider_ValueChanged;
+ _upperSlider.MultiRangeSliderValueChangedCompleted += RightSlider_ValueChangedCompleted;
_upperSlider.TouchDown += TouchDownSlider;
_upperSlider.Value = UpperValue;
}
@@ -309,6 +396,34 @@ namespace Tango.Touch.Controls
_upperSlider.Minimum = Minimum - ThumbValue * 2;
}
}
+
+ private void LowerSlider_ValueChangedCompleted(object sender, RoutedPropertyChangedEventArgs<double> e)
+ {
+ if ((int)e.OldValue != (int)e.NewValue)
+ {
+ LowerValueStartChanging = e.OldValue;
+ LowerValueEndChanging = e.NewValue;
+ }
+ }
+
+ private void MiddleSlider_ValueChangedCompleted(object sender, RoutedPropertyChangedEventArgs<double> e)
+ {
+ if ((int)e.OldValue != (int)e.NewValue)
+ {
+ MiddleValueStartChanging = e.OldValue;
+ MiddleValueEndChanging = e.NewValue;
+ }
+ }
+
+ private void RightSlider_ValueChangedCompleted(object sender, RoutedPropertyChangedEventArgs<double> e)
+ {
+ if ((int)e.OldValue != (int)e.NewValue)
+ {
+ UpperValueStartChanging = e.OldValue;
+ UpperValueEndChanging = e.NewValue;
+ }
+ }
+
#endregion
#region methods