From 9561a5b3d930d5a52e70f97d5fe9d63d4bb1e067 Mon Sep 17 00:00:00 2001 From: Victoria Plitt Date: Tue, 5 Nov 2019 15:15:04 +0200 Subject: Implemented TouchClickableControl for PPC notifications. --- .../PPC/Tango.PPC.Common/Tango.PPC.Common.csproj | 4 +- .../PPC/Tango.PPC.UI/Views/LayoutView.xaml | 9 +- .../Tango.Touch/Controls/TouchClickableControl.cs | 118 +++++++++++++++++++++ .../Visual_Studio/Tango.Touch/Tango.Touch.csproj | 3 +- 4 files changed, 124 insertions(+), 10 deletions(-) create mode 100644 Software/Visual_Studio/Tango.Touch/Controls/TouchClickableControl.cs (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj b/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj index d130a8002..2accc4f82 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj @@ -120,7 +120,6 @@ GlobalVersionInfo.cs - @@ -373,6 +372,7 @@ + @@ -385,7 +385,7 @@ - + \ No newline at end of file diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutView.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutView.xaml index 890d3863b..586fa987b 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutView.xaml +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutView.xaml @@ -238,15 +238,10 @@ - - - - - - + - + diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchClickableControl.cs b/Software/Visual_Studio/Tango.Touch/Controls/TouchClickableControl.cs new file mode 100644 index 000000000..92e60f7bc --- /dev/null +++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchClickableControl.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Input; +using System.Windows.Media; + +namespace Tango.Touch.Controls +{ + public class TouchClickableControl : Grid + { + private bool _isMouseDown; + + #region Properties + + public object CommandParameter + { + get { return (object)GetValue(CommandParameterProperty); } + set { SetValue(CommandParameterProperty, value); } + } + public static readonly DependencyProperty CommandParameterProperty = + DependencyProperty.Register("CommandParameter", typeof(object), typeof(TouchClickableControl), new PropertyMetadata(null)); + + #endregion + + #region Routed Events + + public static readonly RoutedEvent ClickEvent = EventManager.RegisterRoutedEvent("Click", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(TouchClickableControl)); + public event RoutedEventHandler Click + { + add + { + AddHandler(ClickEvent, value); + } + remove + { + RemoveHandler(ClickEvent, value); + } + } + + #endregion + + #region Commands + + public ICommand Command + { + get { return (ICommand)GetValue(CommandProperty); } + set { SetValue(CommandProperty, value); } + } + public static readonly DependencyProperty CommandProperty = + DependencyProperty.Register("Command", typeof(ICommand), typeof(TouchClickableControl), new PropertyMetadata(null, (d, e) => (d as TouchClickableControl).OnCommandChanged())); + + #endregion + + #region Constructors + + public TouchClickableControl() + { + Background = Brushes.Transparent; + } + + #endregion + + #region Private Methods + + private void OnCommandChanged() + { + if (Command != null) + { + Command.CanExecuteChanged -= Command_CanExecuteChanged; + Command.CanExecuteChanged += Command_CanExecuteChanged; + } + } + + private void Command_CanExecuteChanged(object sender, EventArgs e) + { + IsEnabled = Command != null && Command.CanExecute(CommandParameter); + } + + #endregion + + #region Override Methods + + protected override void OnMouseDown(MouseButtonEventArgs e) + { + base.OnMouseDown(e); + _isMouseDown = true; + } + + protected override void OnMouseUp(MouseButtonEventArgs e) + { + base.OnMouseUp(e); + if (_isMouseDown) + { + OnClick(); + } + + _isMouseDown = false; + } + + /// + /// Raises the click event and executes the command. + /// + protected virtual void OnClick() + { + RoutedEventArgs args = new RoutedEventArgs(TouchClickableControl.ClickEvent, this); + RaiseEvent(args); + if (Command != null && Command.CanExecute(CommandParameter)) + { + Command.Execute(CommandParameter); + } + } + #endregion + } +} diff --git a/Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj b/Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj index cac9f47e4..60817f8f8 100644 --- a/Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj +++ b/Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj @@ -70,6 +70,7 @@ + @@ -409,7 +410,7 @@ - + \ No newline at end of file -- cgit v1.3.1