diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-06-07 18:19:55 +0300 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-06-07 18:19:55 +0300 |
| commit | e051d309be2153f60b32c12022cfd0fe8f2ab913 (patch) | |
| tree | 0adf3223bb68acc5f88204ceaa3d727b8d067906 /Software | |
| parent | 7ec6d80f838749faa39fec5eb838a34ebdd3e411 (diff) | |
| download | Tango-e051d309be2153f60b32c12022cfd0fe8f2ab913.tar.gz Tango-e051d309be2153f60b32c12022cfd0fe8f2ab913.zip | |
Working on PPC.
Diffstat (limited to 'Software')
17 files changed, 578 insertions, 164 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Notifications/MessageBox.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/Notifications/MessageBox.xaml index 07d3b11ac..b1fe7ddcc 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Notifications/MessageBox.xaml +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Notifications/MessageBox.xaml @@ -15,7 +15,7 @@ <DropShadowEffect BlurRadius="10" /> </Border.Effect> - <Grid> + <Grid ClipToBounds="True"> <Grid.ColumnDefinitions> <ColumnDefinition Width="100"/> <ColumnDefinition Width="75*"/> diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/JobsViewVM.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/JobsViewVM.cs index 2af15b1ad..75ef7a2ac 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/JobsViewVM.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/JobsViewVM.cs @@ -51,6 +51,8 @@ namespace Tango.PPC.UI.ViewModels public RelayCommand<DropEventArgs> OnDragAndDropCommand { get; set; } + public RelayCommand<Job> RemoveJobCommand { get; set; } + private void OnDragAndDropJobs(Job draggedJob, Job droppedJob) { Debug.WriteLine(draggedJob.Name + " Dragged on to " + droppedJob.Name); @@ -92,6 +94,13 @@ namespace Tango.PPC.UI.ViewModels OnDragAndDropJobs(draggedJob, droppedJob); }); + + RemoveJobCommand = new RelayCommand<Job>(RemoveJob); + } + + private void RemoveJob(Job job) + { + NotificationProvider.ShowQuestion("Are you sure you want to remove " + job.Name); } public override void OnApplicationStarted() diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/JobsView.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/JobsView.xaml index c67d09445..3e54d45f3 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/JobsView.xaml +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/JobsView.xaml @@ -43,12 +43,6 @@ <RowDefinition Height="1*"/> </Grid.RowDefinitions> - <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top" Height="57" Margin="0 -28 30 0"> - <touch:TouchIconButton Margin="0 0 30 0" Padding="20" Icon="Plus" Style="{StaticResource TangoRoundTouchIconButton}"></touch:TouchIconButton> - <touch:TouchIconButton Margin="0 0 30 0" Padding="20" Icon="Copy" Style="{StaticResource TangoRoundTouchIconButton}"></touch:TouchIconButton> - <touch:TouchIconButton Padding="20" Icon="Refresh" Style="{StaticResource TangoRoundTouchIconButton}"></touch:TouchIconButton> - </StackPanel> - <touch:TouchNavigationLinks VerticalAlignment="Bottom" Margin="20" FontSize="{StaticResource TangoNavigationLinksFontSize}"> <sys:String>READY TO DYE</sys:String> <sys:String>NOT READY</sys:String> @@ -57,6 +51,16 @@ <Grid Grid.Row="1"> <touch:TouchDataGrid x:Name="dataGridJobs" OnDragAndDropCommand="{Binding OnDragAndDropCommand}" ItemSelectedCommand="{Binding JobSelectedCommand}" ItemsSource="{Binding JobsCollectionView}" Margin="10" EnableDropShadow="True" ShadowColor="#ECECEC" AutoGenerateColumns="False" RowHeight="68" ColumnHeaderHeight="67"> + <touch:TouchDataGrid.SlideContentTemplate> + <DataTemplate> + <Grid Height="67"> + <StackPanel Orientation="Horizontal"> + <touch:TouchIconButton Command="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.RemoveJobCommand}" CommandParameter="{Binding}" RippleBrush="{StaticResource TangoRippleDarkBrush}" RippleCentered="True" RippleFactor="1" EnableDropShadow="False" Icon="TrashOutline" CornerRadius="25" Padding="15" Foreground="DimGray" Margin="5" /> + <touch:TouchIconButton RippleBrush="{StaticResource TangoRippleDarkBrush}" RippleCentered="True" RippleFactor="1" EnableDropShadow="False" Icon="Copy" CornerRadius="25" Padding="15" Foreground="DimGray" Margin="5" /> + </StackPanel> + </Grid> + </DataTemplate> + </touch:TouchDataGrid.SlideContentTemplate> <touch:TouchDataGrid.Columns> <DataGridTemplateColumn> <DataGridTemplateColumn.Header> @@ -68,17 +72,41 @@ </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> - <DataGridTextColumn Width="90" Header="Status" Binding="{Binding JobStatus,Converter={StaticResource EnumToDescriptionConverter}}"></DataGridTextColumn> - <DataGridTextColumn Width="240" Header="Name" Binding="{Binding Name}"></DataGridTextColumn> - <DataGridTextColumn Width="117" Header="Length (m)" Binding="{Binding Length,StringFormat=0.0}"></DataGridTextColumn> + <DataGridTemplateColumn Width="90" Header="Status" SortMemberPath="JobStatus"> + <DataGridTemplateColumn.CellTemplate> + <DataTemplate> + <TextBlock IsHitTestVisible="False" Text="{Binding JobStatus,Converter={StaticResource EnumToDescriptionConverter}}"></TextBlock> + </DataTemplate> + </DataGridTemplateColumn.CellTemplate> + </DataGridTemplateColumn> + <DataGridTemplateColumn Width="240" Header="Name" SortMemberPath="Name"> + <DataGridTemplateColumn.CellTemplate> + <DataTemplate> + <TextBlock IsHitTestVisible="False" Text="{Binding Name}"></TextBlock> + </DataTemplate> + </DataGridTemplateColumn.CellTemplate> + </DataGridTemplateColumn> + <DataGridTemplateColumn Width="117" Header="Length (m)" SortMemberPath="Length"> + <DataGridTemplateColumn.CellTemplate> + <DataTemplate> + <TextBlock IsHitTestVisible="False" Text="{Binding Length,StringFormat=0.0}"></TextBlock> + </DataTemplate> + </DataGridTemplateColumn.CellTemplate> + </DataGridTemplateColumn> <DataGridTemplateColumn Header="Colors" SortMemberPath="Segments.Count" Width="85"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> - <ContentControl Content="{Binding Segments,Converter={StaticResource SegmentsToPieConverter}}" Width="23" Height="23" HorizontalAlignment="Left"></ContentControl> + <ContentControl IsHitTestVisible="False" Content="{Binding Segments,Converter={StaticResource SegmentsToPieConverter}}" Width="23" Height="23" HorizontalAlignment="Left"></ContentControl> + </DataTemplate> + </DataGridTemplateColumn.CellTemplate> + </DataGridTemplateColumn> + <DataGridTemplateColumn Width="100" Header="Updated" SortMemberPath="LastUpdated"> + <DataGridTemplateColumn.CellTemplate> + <DataTemplate> + <TextBlock IsHitTestVisible="False" Text="{Binding LastUpdated,Converter={StaticResource DateTimeUTCToShortDateConverter}}"></TextBlock> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> - <DataGridTextColumn Width="100" Header="Updated" Binding="{Binding LastUpdated,Converter={StaticResource DateTimeUTCToShortDateConverter}}"></DataGridTextColumn> <DataGridTemplateColumn x:Name="userSortColumn" SortMemberPath="JobIndex" SortDirection="{x:Null}" Width="78" CanUserSort="False"> <DataGridTemplateColumn.HeaderStyle> <Style TargetType="DataGridColumnHeader" BasedOn="{StaticResource {x:Type DataGridColumnHeader}}"> @@ -126,6 +154,8 @@ </touch:TouchDataGrid> <TextBox VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="100" Width="200" keyboard:KeyboardView.Mode="Alpha"></TextBox> + + <touch:TouchIconButton HorizontalAlignment="Right" Width="100" Height="100" Margin="40" VerticalAlignment="Bottom" Padding="30" Icon="Plus" Style="{StaticResource TangoRoundTouchIconButton}"></touch:TouchIconButton> </Grid> </Grid> </Grid> diff --git a/Software/Visual_Studio/Tango.Touch/Components/Ripple.cs b/Software/Visual_Studio/Tango.Touch/Components/Ripple.cs index 2cfd2a0b8..7cf097d8e 100644 --- a/Software/Visual_Studio/Tango.Touch/Components/Ripple.cs +++ b/Software/Visual_Studio/Tango.Touch/Components/Ripple.cs @@ -79,6 +79,15 @@ namespace Tango.Touch.Components public static readonly DependencyProperty CenteredProperty = DependencyProperty.Register("Centered", typeof(bool), typeof(Ripple), new PropertyMetadata(false)); + public bool Disabled + { + get { return (bool)GetValue(DisabledProperty); } + set { SetValue(DisabledProperty, value); } + } + public static readonly DependencyProperty DisabledProperty = + DependencyProperty.Register("Disabled", typeof(bool), typeof(Ripple), new PropertyMetadata(false)); + + #region Attached Properties #region PreventRipple @@ -207,7 +216,7 @@ namespace Tango.Touch.Components OnRippleDown(new Point(e.GetTouchPoint(this).Position.X, e.GetTouchPoint(this).Position.Y)); } - private void CancelRipple(bool immidiate = false) + public void CancelRipple(bool immidiate = false) { if (_isAnimating) { @@ -230,6 +239,8 @@ namespace Tango.Touch.Components private void OnRippleDown(Point position) { + if (Disabled) return; + _isAnimating = true; if (!Centered) diff --git a/Software/Visual_Studio/Tango.Touch/Controls/Shared.xaml b/Software/Visual_Studio/Tango.Touch/Controls/Shared.xaml index ba73cce29..96e965952 100644 --- a/Software/Visual_Studio/Tango.Touch/Controls/Shared.xaml +++ b/Software/Visual_Studio/Tango.Touch/Controls/Shared.xaml @@ -20,83 +20,5 @@ </Style.Triggers> </Style> - <Style x:Key="TouchScrollBarThumb" TargetType="{x:Type Thumb}"> - <Setter Property="OverridesDefaultStyle" Value="true"/> - <Setter Property="IsTabStop" Value="false"/> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type Thumb}"> - <Border Height="{TemplateBinding Height}" SnapsToDevicePixels="True" Width="{TemplateBinding Width}" CornerRadius="5" Background="{StaticResource TangoLightBorderBrush}" /> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <Style x:Key="TouchScrollBar" TargetType="{x:Type ScrollBar}"> - <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false"/> - <Setter Property="Stylus.IsFlicksEnabled" Value="false"/> - <Setter Property="Background" Value="Transparent"/> - <Setter Property="BorderBrush" Value="Transparent"/> - <Setter Property="Foreground" Value="Gray"/> - <Setter Property="BorderThickness" Value="0"/> - <Setter Property="Width" Value="5"/> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ScrollBar}"> - <Grid x:Name="Bg" SnapsToDevicePixels="true"> - <Border BorderBrush="{TemplateBinding BorderBrush}" HorizontalAlignment="Right" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Row="1"/> - <Track x:Name="PART_Track" IsDirectionReversed="true" HorizontalAlignment="Right" Width="5" IsEnabled="{TemplateBinding IsMouseOver}" Grid.Row="1"> - <Track.Thumb> - <Thumb Style="{StaticResource TouchScrollBarThumb}"></Thumb> - </Track.Thumb> - </Track> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <Style TargetType="ScrollViewer" x:Key="TouchScrollViewer"> - <Setter Property="HorizontalScrollBarVisibility" Value="Disabled"></Setter> - <Setter Property="PanningMode" Value="VerticalOnly"></Setter> - <Setter Property="CanContentScroll" Value="False"></Setter> - <Setter Property="VerticalScrollBarVisibility" Value="Visible"></Setter> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ScrollViewer}"> - <Grid x:Name="Grid" Background="{TemplateBinding Background}"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*"/> - </Grid.ColumnDefinitions> - <Grid.RowDefinitions> - <RowDefinition Height="*"/> - <RowDefinition Height="Auto"/> - </Grid.RowDefinitions> - <Rectangle x:Name="Corner" Grid.Column="1" Fill="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" Grid.Row="1"/> - <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" CanContentScroll="{TemplateBinding CanContentScroll}" CanHorizontallyScroll="False" CanVerticallyScroll="False" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="0" Margin="{TemplateBinding Padding}" Grid.Row="0"/> - <ScrollBar Opacity="0" x:Name="PART_VerticalScrollBar" Style="{StaticResource TouchScrollBar}" HorizontalAlignment="Right" AutomationProperties.AutomationId="VerticalScrollBar" Cursor="Arrow" Grid.Column="1" Maximum="{TemplateBinding ScrollableHeight}" Minimum="0" Grid.Row="0" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportHeight}"/> - <ScrollBar x:Name="PART_HorizontalScrollBar" AutomationProperties.AutomationId="HorizontalScrollBar" Cursor="Arrow" Grid.Column="0" Maximum="{TemplateBinding ScrollableWidth}" Minimum="0" Orientation="Horizontal" Grid.Row="1" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportWidth}"/> - </Grid> - - <ControlTemplate.Triggers> - <EventTrigger RoutedEvent="ScrollViewer.ScrollChanged"> - <EventTrigger.Actions> - <BeginStoryboard> - <Storyboard> - <DoubleAnimationUsingKeyFrames Storyboard.TargetName="PART_VerticalScrollBar" Storyboard.TargetProperty="Opacity" Duration="00:00:01" FillBehavior="Stop"> - <EasingDoubleKeyFrame KeyTime="00:00:0.2" Value="1"></EasingDoubleKeyFrame> - <DiscreteDoubleKeyFrame KeyTime="00:00:0.2" Value="1"></DiscreteDoubleKeyFrame> - <EasingDoubleKeyFrame KeyTime="00:00:01" Value="0"></EasingDoubleKeyFrame> - </DoubleAnimationUsingKeyFrames> - </Storyboard> - </BeginStoryboard> - </EventTrigger.Actions> - </EventTrigger> - </ControlTemplate.Triggers> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - </ResourceDictionary>
\ No newline at end of file diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchDataGrid.cs b/Software/Visual_Studio/Tango.Touch/Controls/TouchDataGrid.cs index 2564c6c9c..d72e4fc12 100644 --- a/Software/Visual_Studio/Tango.Touch/Controls/TouchDataGrid.cs +++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchDataGrid.cs @@ -20,6 +20,8 @@ namespace Tango.Touch.Controls { public class TouchDataGrid : DataGrid, ITouchControl { + public TouchScrollViewer ScrollViewer { get; set; } + public CornerRadius CornerRadius { get { return (CornerRadius)GetValue(CornerRadiusProperty); } @@ -113,10 +115,19 @@ namespace Tango.Touch.Controls get { return (IList)GetValue(SelectedItemsListProperty); } set { SetValue(SelectedItemsListProperty, value); } } - public static readonly DependencyProperty SelectedItemsListProperty = DependencyProperty.Register(nameof(SelectedItemsList), typeof(IList), typeof(TouchDataGrid), new PropertyMetadata(null)); + public DataTemplate SlideContentTemplate + { + get { return (DataTemplate)GetValue(SlideContentTemplateProperty); } + set { SetValue(SlideContentTemplateProperty, value); } + } + public static readonly DependencyProperty SlideContentTemplateProperty = + DependencyProperty.Register("SlideContentTemplate", typeof(DataTemplate), typeof(TouchDataGrid), new PropertyMetadata(null)); + + + protected override void OnSelectionChanged(SelectionChangedEventArgs e) { base.OnSelectionChanged(e); @@ -143,8 +154,8 @@ namespace Tango.Touch.Controls DraggingSurface = GetTemplateChild("PART_DraggingSurface") as DraggingSurface; ScrollViewer scrollViewer = GetTemplateChild("DG_ScrollViewer") as ScrollViewer; - - scrollViewer.IsManipulationEnabled = false; + ScrollViewer = scrollViewer as TouchScrollViewer; + scrollViewer.IsManipulationEnabled = true; } public IEnumerable<TouchDataGridRow> GetRows() diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchDataGrid.xaml b/Software/Visual_Studio/Tango.Touch/Controls/TouchDataGrid.xaml index ae058bb98..92073b25d 100644 --- a/Software/Visual_Studio/Tango.Touch/Controls/TouchDataGrid.xaml +++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchDataGrid.xaml @@ -4,6 +4,7 @@ xmlns:surface="http://schemas.microsoft.com/surface/2008" xmlns:components="clr-namespace:Tango.Touch.Components" xmlns:dragAndDrop="clr-namespace:Tango.DragAndDrop;assembly=Tango.DragAndDrop" + xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:local="clr-namespace:Tango.Touch.Controls"> @@ -11,6 +12,11 @@ <ResourceDictionary Source="../Resources/Colors.xaml" /> <ResourceDictionary Source="../Resources/Fonts.xaml" /> <ResourceDictionary Source="../Controls/Shared.xaml" /> + <ResourceDictionary Source="../Controls/TouchScrollViewer.xaml" /> + + <ResourceDictionary> + <converters:BooleanInverseConverter x:Key="BooleanInverseConverter" /> + </ResourceDictionary> </ResourceDictionary.MergedDictionaries> <Style TargetType="{x:Type local:TouchDataGrid}"> @@ -79,7 +85,7 @@ <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/> <Setter Property="BorderBrush" Value="{StaticResource TangoLightBorderBrush}"></Setter> <Setter Property="BorderThickness" Value="1"></Setter> - <Setter Property="components:TransformationHelper.TransformWhenPressed" Value="True"></Setter> + <Setter Property="IsManipulationEnabled" Value="False"></Setter> <Setter Property="ValidationErrorTemplate"> <Setter.Value> <ControlTemplate> @@ -127,35 +133,40 @@ </Style> </Grid.Style> + <ContentControl Margin="0 0 10 0" Background="{StaticResource TangoPrimaryBackgroundBrush}" x:Name="PART_SlideContentControl" HorizontalAlignment="Right" ContentTemplate="{Binding RelativeSource={RelativeSource AncestorType=local:TouchDataGrid},Path=SlideContentTemplate}" Content="{Binding}" /> + <Border x:Name="DGR_Border" Margin="5 2" Style="{StaticResource DropShadowBorder}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True"> - <components:Ripple RippleFactor="20" SynchedScrollViewer="{Binding RelativeSource={RelativeSource AncestorType=ScrollViewer}}" CornerRadius="{Binding RelativeSource={RelativeSource AncestorType=local:TouchDataGrid},Path=CornerRadius}"> - <components:Ripple.RippleBrush> - <SolidColorBrush Color="{StaticResource TangoMidAccentColor}" Opacity="0.5" /> - </components:Ripple.RippleBrush> - <SelectiveScrollingGrid> - <SelectiveScrollingGrid.ColumnDefinitions> - <ColumnDefinition Width="Auto"/> - <ColumnDefinition Width="*"/> - </SelectiveScrollingGrid.ColumnDefinitions> - <SelectiveScrollingGrid.RowDefinitions> - <RowDefinition Height="*"/> - <RowDefinition Height="Auto"/> - </SelectiveScrollingGrid.RowDefinitions> - <DataGridCellsPresenter Grid.Column="1" ItemsPanel="{TemplateBinding ItemsPanel}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> - <DataGridDetailsPresenter Grid.Column="1" Grid.Row="1" SelectiveScrollingGrid.SelectiveScrollingOrientation="{Binding AreRowDetailsFrozen, ConverterParameter={x:Static SelectiveScrollingOrientation.Vertical}, Converter={x:Static DataGrid.RowDetailsScrollingConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" Visibility="{TemplateBinding DetailsVisibility}"/> - <DataGridRowHeader Grid.RowSpan="2" SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical" Visibility="{Binding HeadersVisibility, ConverterParameter={x:Static DataGridHeadersVisibility.Row}, Converter={x:Static DataGrid.HeadersVisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/> - </SelectiveScrollingGrid> - </components:Ripple> + <Border.RenderTransform> + <TranslateTransform X="0" Y="0" x:Name="PART_Translate" /> + </Border.RenderTransform> + <Grid> + <!--<Thumb x:Name="PART_Thumb" Opacity="0" />--> + <components:Ripple x:Name="PART_Ripple" Disabled="{TemplateBinding IsSlideMode}" RippleBrush="{StaticResource TangoRippleDarkBrush}" RippleFactor="20" SynchedScrollViewer="{Binding RelativeSource={RelativeSource AncestorType=ScrollViewer}}" CornerRadius="{Binding RelativeSource={RelativeSource AncestorType=local:TouchDataGrid},Path=CornerRadius}"> + <SelectiveScrollingGrid> + <SelectiveScrollingGrid.ColumnDefinitions> + <ColumnDefinition Width="Auto"/> + <ColumnDefinition Width="*"/> + </SelectiveScrollingGrid.ColumnDefinitions> + <SelectiveScrollingGrid.RowDefinitions> + <RowDefinition Height="*"/> + <RowDefinition Height="Auto"/> + </SelectiveScrollingGrid.RowDefinitions> + <DataGridCellsPresenter Grid.Column="1" ItemsPanel="{TemplateBinding ItemsPanel}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> + <DataGridDetailsPresenter Grid.Column="1" Grid.Row="1" SelectiveScrollingGrid.SelectiveScrollingOrientation="{Binding AreRowDetailsFrozen, ConverterParameter={x:Static SelectiveScrollingOrientation.Vertical}, Converter={x:Static DataGrid.RowDetailsScrollingConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" Visibility="{TemplateBinding DetailsVisibility}"/> + <DataGridRowHeader Grid.RowSpan="2" SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical" Visibility="{Binding HeadersVisibility, ConverterParameter={x:Static DataGridHeadersVisibility.Row}, Converter={x:Static DataGrid.HeadersVisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/> + </SelectiveScrollingGrid> + </components:Ripple> + </Grid> </Border> </Grid> </ControlTemplate> </Setter.Value> </Setter> <Style.Triggers> - <Trigger Property="IsSelected" Value="True"> + <!--<Trigger Property="IsSelected" Value="True"> <Setter Property="Background" Value="{StaticResource TangoLightSelectedBrush}"></Setter> <Setter Property="BorderBrush" Value="{StaticResource TangoMidAccentBrush}"></Setter> - </Trigger> + </Trigger>--> </Style.Triggers> </Style> @@ -208,8 +219,8 @@ <ControlTemplate TargetType="{x:Type local:TouchDataGrid}"> <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="True"> <DockPanel> - <ScrollViewer x:Name="DG_ScrollViewer" Focusable="false" Style="{StaticResource TouchScrollViewer}" IsManipulationEnabled="False"> - <ScrollViewer.Template> + <local:TouchScrollViewer x:Name="DG_ScrollViewer" Focusable="false" IsManipulationEnabled="False"> + <local:TouchScrollViewer.Template> <ControlTemplate TargetType="{x:Type ScrollViewer}"> <Grid> <Grid.RowDefinitions> @@ -238,9 +249,9 @@ </EventTrigger> </ControlTemplate.Triggers> </ControlTemplate> - </ScrollViewer.Template> + </local:TouchScrollViewer.Template> <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> - </ScrollViewer> + </local:TouchScrollViewer> <dragAndDrop:DraggingSurface x:Name="PART_DraggingSurface" /> </DockPanel> diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchDataGridRow.cs b/Software/Visual_Studio/Tango.Touch/Controls/TouchDataGridRow.cs index 5ae18d540..7f023831f 100644 --- a/Software/Visual_Studio/Tango.Touch/Controls/TouchDataGridRow.cs +++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchDataGridRow.cs @@ -6,10 +6,14 @@ using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; +using System.Windows.Controls.Primitives; using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Animation; using Tango.Core.EventArguments; using Tango.DragAndDrop; using Tango.SharedUI.Helpers; +using Tango.Touch.Components; namespace Tango.Touch.Controls { @@ -20,15 +24,34 @@ namespace Tango.Touch.Controls private bool _canSelect = false; private TouchDataGrid _grid; private bool _isLoaded; + private Thumb _thumbSlide; + private Ripple _ripple; + private TranslateTransform _translate; + private ContentControl _slideContentControl; + private bool _touchDown; + private Point _touchDownLocation; + private bool isMoving; + private bool _okToMove; + + + + public bool IsSlideMode + { + get { return (bool)GetValue(IsSlideModeProperty); } + set { SetValue(IsSlideModeProperty, value); } + } + public static readonly DependencyProperty IsSlideModeProperty = + DependencyProperty.Register("IsSlideMode", typeof(bool), typeof(TouchDataGridRow), new PropertyMetadata(false)); + + public TouchDataGridRow() { - this.RegisterForPreviewMouseOrTouchDown(OnMouseDown); + this.PreviewMouseUp += TouchDataGridRow_PreviewMouseUp; this.Loaded += (_, __) => { if (!_isLoaded) { - _grid = UIHelper.FindAncestor<TouchDataGrid>(this); _isLoaded = true; DragAndDropService.AddDropHandler(this, OnDragAndDrop); @@ -36,58 +59,235 @@ namespace Tango.Touch.Controls }; } + private void TouchDataGridRow_PreviewMouseUp(object sender, MouseButtonEventArgs e) + { + if (!IsSlideMode && Math.Abs((e.GetPosition(this).X - _touchDownLocation.X)) < 5) + { + _grid.ItemSelectedCommand?.Execute(DataContext); + } + } + private void OnDragAndDrop(object sender, DropEventArgs e) { _grid.OnDragAndDropCommand?.Execute(e); } - private async void OnMouseDown(object sender, MouseOrTouchEventArgs e) + public override void OnApplyTemplate() + { + base.OnApplyTemplate(); + + _thumbSlide = GetTemplateChild("PART_Thumb") as Thumb; + _ripple = GetTemplateChild("PART_Ripple") as Ripple; + _translate = GetTemplateChild("PART_Translate") as TranslateTransform; + _slideContentControl = GetTemplateChild("PART_SlideContentControl") as ContentControl; + Border border = GetTemplateChild("DGR_Border") as Border; + + _grid = UIHelper.FindAncestor<TouchDataGrid>(this); + + //_thumbSlide.AddHandler(Thumb.DragCompletedEvent, new DragCompletedEventHandler(_thumbSlide_DragCompleted), true); + //_thumbSlide.AddHandler(Thumb.DragDeltaEvent, new DragDeltaEventHandler(_thumbSlide_DragDelta), true); + + //_thumbSlide.DragDelta += _thumbSlide_DragDelta; + //_thumbSlide.DragCompleted += _thumbSlide_DragCompleted; + + border.PreviewTouchDown += ((_, e) => + { + _okToMove = false; + + if (e.OriginalSource.GetType() == typeof(DragThumb)) + { + border.IsManipulationEnabled = false; + return; + } + else + { + border.IsManipulationEnabled = true; + } + + _touchDownLocation = new Point(e.GetTouchPoint(this).Position.X - _translate.X, e.GetTouchPoint(this).Position.Y); + _touchDown = true; + }); + border.PreviewTouchMove += ((_, e) => + { + if (!_touchDown) return; + + double offsetX = e.GetTouchPoint(this).Position.X - _touchDownLocation.X; + double offsetY = e.GetTouchPoint(this).Position.Y - _touchDownLocation.Y; + + if (Math.Abs(offsetX) < 50 && !_okToMove) + { + return; + } + else + { + _okToMove = true; + } + + if (offsetX >= 0 || Math.Abs(offsetY) > ActualHeight) + { + return; + } + + if (e.OriginalSource.GetType() == typeof(DragThumb)) + { + return; + } + + _grid.ScrollViewer.FixPosition(); + + isMoving = true; + + _ripple.CancelRipple(true); + + IsSlideMode = true; + + _translate.BeginAnimation(TranslateTransform.XProperty, null); + + if (offsetX <= 0) + { + _translate.X = offsetX; + } + + var otherRow = _grid.GetRows().FirstOrDefault(x => x != this && x.IsSlideMode); + + if (otherRow != null) + { + otherRow.IsSlideMode = false; + DoubleAnimation ani = new DoubleAnimation(); + ani.Duration = TimeSpan.FromSeconds(0.2); + ani.To = 0; + otherRow._translate.BeginAnimation(TranslateTransform.XProperty, ani); + } + }); + + _grid.ScrollViewer.AddHandler(PreviewTouchUpEvent, new EventHandler<TouchEventArgs>((_, __) => + { + if (!_touchDown) return; + + _touchDown = false; + isMoving = false; + + DoubleAnimation ani = new DoubleAnimation(); + ani.Duration = TimeSpan.FromSeconds(0.2); + + if (_translate.X > -(_slideContentControl.ActualWidth + 10)) + { + IsSlideMode = false; + ani.To = 0; + } + else + { + IsSlideMode = true; + ani.To = -(_slideContentControl.ActualWidth + 10); + } + + _translate.BeginAnimation(TranslateTransform.XProperty, ani); + }), true); + } + + private void _thumbSlide_DragCompleted(object sender, DragCompletedEventArgs e) + { + DoubleAnimation ani = new DoubleAnimation(); + ani.Duration = TimeSpan.FromSeconds(0.2); + + if (_translate.X > -(_slideContentControl.ActualWidth + 10)) + { + IsSlideMode = false; + ani.To = 0; + } + else + { + IsSlideMode = true; + ani.To = -(_slideContentControl.ActualWidth + 10); + } + + _translate.BeginAnimation(TranslateTransform.XProperty, ani); + } + + private void _thumbSlide_DragDelta(object sender, DragDeltaEventArgs e) { if (e.OriginalSource.GetType() == typeof(DragThumb)) { - _grid.GetRows().ToList().ForEach(x => x.IsSelected = false); return; } - Keyboard.TouchKeyboard.PressCtrl(); + _ripple.CancelRipple(true); - IsSelected = false; + IsSlideMode = true; - _downTime = DateTime.Now; - await Task.Delay(_grid.SelectionDelay); + _translate.BeginAnimation(TranslateTransform.XProperty, null); - if (DateTime.Now > _downTime.AddMilliseconds(_grid.SelectionDelay)) + if (_translate.X + e.HorizontalChange <= 0) { - _canSelect = true; - IsSelected = !IsSelected; - _canSelect = false; + _translate.X += e.HorizontalChange; } - else - { - _canSelect = true; - IsSelected = true; - _canSelect = false; - _grid.GetRows().Where(x => x != this).ToList().ForEach(x => x.IsSelected = false); - _grid.ItemSelectedCommand?.Execute(DataContext); + var otherRow = _grid.GetRows().FirstOrDefault(x => x != this && x.IsSlideMode); + + if (otherRow != null) + { + otherRow.IsSlideMode = false; + DoubleAnimation ani = new DoubleAnimation(); + ani.Duration = TimeSpan.FromSeconds(0.2); + ani.To = 0; + otherRow._translate.BeginAnimation(TranslateTransform.XProperty, ani); } + } - Keyboard.TouchKeyboard.ReleaseCtrl(); + private async void OnMouseDown(object sender, MouseOrTouchEventArgs e) + { + //if (_thumbSlide.IsDragging) + //{ + // e.Handled = true; + //} + + //if (e.OriginalSource.GetType() == typeof(DragThumb)) + //{ + // //_grid.GetRows().ToList().ForEach(x => x.IsSelected = false); + // //e.Handled = true; + // return; + //} + + //Keyboard.TouchKeyboard.PressCtrl(); + + //IsSelected = false; + + //_downTime = DateTime.Now; + //await Task.Delay(_grid.SelectionDelay); + + //if (DateTime.Now > _downTime.AddMilliseconds(_grid.SelectionDelay)) + //{ + // _canSelect = true; + // IsSelected = !IsSelected; + // _canSelect = false; + //} + //else + //{ + // _canSelect = true; + // IsSelected = true; + // _canSelect = false; + // _grid.GetRows().Where(x => x != this).ToList().ForEach(x => x.IsSelected = false); + + // _grid.ItemSelectedCommand?.Execute(DataContext); + //} + + //await Task.Delay(200); + //Keyboard.TouchKeyboard.ReleaseCtrl(); } protected override void OnPreviewMouseUp(MouseButtonEventArgs e) { - Keyboard.TouchKeyboard.ReleaseCtrl(); + //Keyboard.TouchKeyboard.ReleaseCtrl(); base.OnPreviewMouseUp(e); - _downTime = DateTime.Now; + //_downTime = DateTime.Now; } protected override void OnSelected(RoutedEventArgs e) { - if (!_canSelect) - { - IsSelected = false; - } + //if (!_canSelect) + //{ + // IsSelected = false; + //} } } } diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchIconButton.xaml b/Software/Visual_Studio/Tango.Touch/Controls/TouchIconButton.xaml index f0c3b5f7f..5619b9136 100644 --- a/Software/Visual_Studio/Tango.Touch/Controls/TouchIconButton.xaml +++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchIconButton.xaml @@ -9,7 +9,8 @@ <Style TargetType="{x:Type local:TouchIconButton}" BasedOn="{StaticResource {x:Type local:TouchButton}}"> <Setter Property="Icon" Value="None"></Setter> - <Setter Property="Width" Value="100"></Setter> + <Setter Property="Width" Value="{Binding RelativeSource={RelativeSource Self},Path=ActualHeight}"></Setter> + <Setter Property="Background" Value="Transparent"></Setter> <Setter Property="ContentTemplate"> <Setter.Value> <DataTemplate> diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchScrollViewer.cs b/Software/Visual_Studio/Tango.Touch/Controls/TouchScrollViewer.cs new file mode 100644 index 000000000..f8f103d2b --- /dev/null +++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchScrollViewer.cs @@ -0,0 +1,69 @@ +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.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using Tango.DragAndDrop; + +namespace Tango.Touch.Controls +{ + public class TouchScrollViewer : ScrollViewer + { + private double _position; + private bool _fixed; + + static TouchScrollViewer() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(TouchScrollViewer), new FrameworkPropertyMetadata(typeof(TouchScrollViewer))); + } + + //public TouchScrollViewer() + //{ + // this.RegisterForPreviewMouseOrTouchDown((_, e) => + // { + // if (e.OriginalSource.GetType() == typeof(DragThumb)) + // { + // e.Handled = true; + // return; + // } + // }); + //} + + public void FixPosition() + { + _position = VerticalOffset; + _fixed = true; + } + + public void ReleasePosition() + { + _fixed = false; + } + + public TouchScrollViewer() + { + AddHandler(PreviewTouchUpEvent, new EventHandler<TouchEventArgs>(async (_, __) => + { + await Task.Delay(250); + ReleasePosition(); + }), true); + } + + protected override void OnScrollChanged(ScrollChangedEventArgs e) + { + if (_fixed) + { + ScrollToVerticalOffset(_position); + } + } + } +} diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchScrollViewer.xaml b/Software/Visual_Studio/Tango.Touch/Controls/TouchScrollViewer.xaml new file mode 100644 index 000000000..eea9ddf76 --- /dev/null +++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchScrollViewer.xaml @@ -0,0 +1,86 @@ +<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:local="clr-namespace:Tango.Touch.Controls"> + + <ResourceDictionary.MergedDictionaries> + <ResourceDictionary Source="../Resources/Colors.xaml" /> + </ResourceDictionary.MergedDictionaries> + + <Style x:Key="TouchScrollBarThumb" TargetType="{x:Type Thumb}"> + <Setter Property="OverridesDefaultStyle" Value="true"/> + <Setter Property="IsTabStop" Value="false"/> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type Thumb}"> + <Border Height="{TemplateBinding Height}" SnapsToDevicePixels="True" Width="{TemplateBinding Width}" CornerRadius="5" Background="{StaticResource TangoLightBorderBrush}" /> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <Style x:Key="TouchScrollBar" TargetType="{x:Type ScrollBar}"> + <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false"/> + <Setter Property="Stylus.IsFlicksEnabled" Value="false"/> + <Setter Property="Background" Value="Transparent"/> + <Setter Property="BorderBrush" Value="Transparent"/> + <Setter Property="Foreground" Value="Gray"/> + <Setter Property="BorderThickness" Value="0"/> + <Setter Property="Width" Value="5"/> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type ScrollBar}"> + <Grid x:Name="Bg" SnapsToDevicePixels="true"> + <Border BorderBrush="{TemplateBinding BorderBrush}" HorizontalAlignment="Right" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Row="1"/> + <Track x:Name="PART_Track" IsDirectionReversed="true" HorizontalAlignment="Right" Width="5" IsEnabled="{TemplateBinding IsMouseOver}" Grid.Row="1"> + <Track.Thumb> + <Thumb Style="{StaticResource TouchScrollBarThumb}"></Thumb> + </Track.Thumb> + </Track> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <Style TargetType="{x:Type local:TouchScrollViewer}"> + <Setter Property="HorizontalScrollBarVisibility" Value="Disabled"></Setter> + <Setter Property="PanningMode" Value="VerticalOnly"></Setter> + <Setter Property="CanContentScroll" Value="False"></Setter> + <Setter Property="VerticalScrollBarVisibility" Value="Visible"></Setter> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="{x:Type ScrollViewer}"> + <Grid x:Name="Grid" Background="{TemplateBinding Background}"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="*"/> + </Grid.ColumnDefinitions> + <Grid.RowDefinitions> + <RowDefinition Height="*"/> + <RowDefinition Height="Auto"/> + </Grid.RowDefinitions> + <Rectangle x:Name="Corner" Grid.Column="1" Fill="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" Grid.Row="1"/> + <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" CanContentScroll="{TemplateBinding CanContentScroll}" CanHorizontallyScroll="False" CanVerticallyScroll="False" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="0" Margin="{TemplateBinding Padding}" Grid.Row="0"/> + <ScrollBar Opacity="0" x:Name="PART_VerticalScrollBar" Style="{StaticResource TouchScrollBar}" HorizontalAlignment="Right" AutomationProperties.AutomationId="VerticalScrollBar" Cursor="Arrow" Grid.Column="1" Maximum="{TemplateBinding ScrollableHeight}" Minimum="0" Grid.Row="0" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportHeight}"/> + <ScrollBar x:Name="PART_HorizontalScrollBar" AutomationProperties.AutomationId="HorizontalScrollBar" Cursor="Arrow" Grid.Column="0" Maximum="{TemplateBinding ScrollableWidth}" Minimum="0" Orientation="Horizontal" Grid.Row="1" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportWidth}"/> + </Grid> + + <ControlTemplate.Triggers> + <EventTrigger RoutedEvent="ScrollViewer.ScrollChanged"> + <EventTrigger.Actions> + <BeginStoryboard> + <Storyboard> + <DoubleAnimationUsingKeyFrames Storyboard.TargetName="PART_VerticalScrollBar" Storyboard.TargetProperty="Opacity" Duration="00:00:01" FillBehavior="Stop"> + <EasingDoubleKeyFrame KeyTime="00:00:0.2" Value="1"></EasingDoubleKeyFrame> + <DiscreteDoubleKeyFrame KeyTime="00:00:0.2" Value="1"></DiscreteDoubleKeyFrame> + <EasingDoubleKeyFrame KeyTime="00:00:01" Value="0"></EasingDoubleKeyFrame> + </DoubleAnimationUsingKeyFrames> + </Storyboard> + </BeginStoryboard> + </EventTrigger.Actions> + </EventTrigger> + </ControlTemplate.Triggers> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> +</ResourceDictionary>
\ No newline at end of file diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchThumb.cs b/Software/Visual_Studio/Tango.Touch/Controls/TouchThumb.cs new file mode 100644 index 000000000..e96f92d5b --- /dev/null +++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchThumb.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Controls.Primitives; +using System.Windows.Input; + +namespace Tango.Touch.Controls +{ + public class TouchThumb : Thumb + { + private TouchDevice currentDevice = null; + + protected override void OnPreviewTouchDown(TouchEventArgs e) + { + // Release any previous capture + ReleaseCurrentDevice(); + // Capture the new touch + CaptureCurrentDevice(e); + } + + protected override void OnPreviewTouchUp(TouchEventArgs e) + { + ReleaseCurrentDevice(); + } + + protected override void OnLostTouchCapture(TouchEventArgs e) + { + // Only re-capture if the reference is not null + // This way we avoid re-capturing after calling ReleaseCurrentDevice() + if (currentDevice != null) + { + CaptureCurrentDevice(e); + } + } + + private void ReleaseCurrentDevice() + { + if (currentDevice != null) + { + // Set the reference to null so that we don't re-capture in the OnLostTouchCapture() method + var temp = currentDevice; + currentDevice = null; + ReleaseTouchCapture(temp); + } + } + + private void CaptureCurrentDevice(TouchEventArgs e) + { + bool gotTouch = CaptureTouch(e.TouchDevice); + if (gotTouch) + { + currentDevice = e.TouchDevice; + } + } + } +} diff --git a/Software/Visual_Studio/Tango.Touch/Keyboard/TouchKeyboard.cs b/Software/Visual_Studio/Tango.Touch/Keyboard/TouchKeyboard.cs index b0728e087..ab5191fe0 100644 --- a/Software/Visual_Studio/Tango.Touch/Keyboard/TouchKeyboard.cs +++ b/Software/Visual_Studio/Tango.Touch/Keyboard/TouchKeyboard.cs @@ -353,7 +353,6 @@ namespace Tango.Touch.Keyboard private Task SendKeys(String key) { Application.Current.MainWindow.Activate(); - ReleaseCtrl(); var isSpecialChar = IsSpecialCharactersOn; var definition = CurrentKeyboardDefinition; diff --git a/Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj b/Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj index af184b187..e4627ecbe 100644 --- a/Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj +++ b/Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj @@ -88,6 +88,10 @@ <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> + <Page Include="Controls\TouchScrollViewer.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> <Page Include="Controls\TouchSideMenu.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> @@ -141,7 +145,9 @@ <Compile Include="Controls\TouchNavigationLinks.cs" /> <Compile Include="Controls\TouchButton.cs" /> <Compile Include="Controls\TouchDataGrid.cs" /> + <Compile Include="Controls\TouchScrollViewer.cs" /> <Compile Include="Controls\TouchSideMenu.cs" /> + <Compile Include="Controls\TouchThumb.cs" /> <Compile Include="Controls\TouchToggleButton.cs" /> <Compile Include="Converters\ArcEndPointConverter.cs" /> <Compile Include="Converters\ArcSizeConverter.cs" /> diff --git a/Software/Visual_Studio/Tango.Touch/Themes/Generic.xaml b/Software/Visual_Studio/Tango.Touch/Themes/Generic.xaml index 2aa811b10..339473f7b 100644 --- a/Software/Visual_Studio/Tango.Touch/Themes/Generic.xaml +++ b/Software/Visual_Studio/Tango.Touch/Themes/Generic.xaml @@ -9,6 +9,7 @@ <ResourceDictionary Source="pack://application:,,,/Tango.Touch;component/Components/Ripple.xaml" /> <ResourceDictionary Source="pack://application:,,,/Tango.Touch;component/Keyboard/TouchKeyboard.xaml" /> <ResourceDictionary Source="pack://application:,,,/Tango.Touch;component/Keyboard/KeyboardView.xaml" /> + <ResourceDictionary Source="pack://application:,,,/Tango.Touch;component/Controls/TouchScrollViewer.xaml" /> <ResourceDictionary Source="pack://application:,,,/Tango.Touch;component/Controls/Shared.xaml" /> <ResourceDictionary Source="pack://application:,,,/Tango.Touch;component/Controls/TouchButton.xaml" /> <ResourceDictionary Source="pack://application:,,,/Tango.Touch;component/Controls/TouchToggleButton.xaml" /> diff --git a/Software/Visual_Studio/Utilities/Tango.Stubs.Installer/Tango.Stubs.Installer.vdproj b/Software/Visual_Studio/Utilities/Tango.Stubs.Installer/Tango.Stubs.Installer.vdproj index 13a3a3c1c..29fc98da1 100644 --- a/Software/Visual_Studio/Utilities/Tango.Stubs.Installer/Tango.Stubs.Installer.vdproj +++ b/Software/Visual_Studio/Utilities/Tango.Stubs.Installer/Tango.Stubs.Installer.vdproj @@ -465,7 +465,7 @@ "DisplayName" = "8:Debug" "IsDebugOnly" = "11:TRUE" "IsReleaseOnly" = "11:FALSE" - "OutputFilename" = "8:..\\..\\Build\\Debug\\Installers\\Tango Stubs Installer v1.8.msi" + "OutputFilename" = "8:..\\..\\Build\\Debug\\Installers\\Tango Stubs Installer v1.9.msi" "PackageFilesAs" = "3:2" "PackageFileSize" = "3:-2147483648" "CabType" = "3:1" @@ -556,7 +556,7 @@ { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:Tango.Scripting, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:Tango.Scripting, Version=1.0.0.1, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { "_0712ECEB4DE24D8B9E9936D94BDC61B4" @@ -644,7 +644,7 @@ { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:Tango.PMR, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:Tango.PMR, Version=1.0.0.1, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { "_25CD57B9CA3242F18E33F548DDB13C14" @@ -706,7 +706,7 @@ { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:Tango.PMR, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:Tango.PMR, Version=1.0.0.1, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { "_5397E5B2CD05015FD556CF7136D97D21" @@ -737,7 +737,7 @@ { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:StubsExecutionGUI, Version=1.8.0.0, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:StubsExecutionGUI, Version=1.9.0.0, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { "_61BDC9339D1440BCBC454CC904BCE79C" @@ -768,7 +768,7 @@ { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:Tango.Scripting, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:Tango.Scripting, Version=1.0.0.1, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { "_6290C6253BE08D5AEAF445DC538F5A32" @@ -861,7 +861,7 @@ { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:Tango.Settings, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:Tango.Settings, Version=1.0.0.1, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { "_78C9B7DB89C8CFF3E6F812DBDAF18DC7" @@ -892,7 +892,7 @@ { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:Tango.SharedUI, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:Tango.SharedUI, Version=1.0.0.1, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { "_8F0D060313A40E3D6C4B196C5819AA1F" @@ -923,7 +923,7 @@ { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:Tango.Transport, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:Tango.Transport, Version=1.0.0.1, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { "_92474495A2F0D65A21D2BFF4587358D8" @@ -954,7 +954,7 @@ { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:Tango.Stubs, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:Tango.Stubs, Version=1.0.0.1, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { "_94CDF51D67BB69C2699CEC4485EBCA30" @@ -1078,7 +1078,7 @@ { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:Tango.Logging, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:Tango.Logging, Version=1.0.0.1, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { "_BFCEC942CF3BF1B9FB6AEACA2A8753C3" @@ -1264,7 +1264,7 @@ { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:Tango.Core, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:Tango.Core, Version=1.0.0.1, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { "_F35F069FCC8C9B6808AAD45B8039A4FB" @@ -1347,15 +1347,15 @@ { "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:Tango Stubs GUI" - "ProductCode" = "8:{CC56E442-9CBC-4D3A-BB41-90A952C25758}" - "PackageCode" = "8:{40459E65-A8AA-46F8-B259-5BE1128CABED}" + "ProductCode" = "8:{67EC0E77-000C-4CEF-9BBB-F89B0FB94FEA}" + "PackageCode" = "8:{E7855B80-5D28-4959-8728-9BFCD16D94D2}" "UpgradeCode" = "8:{72B680FB-E47D-486A-A81E-6C035F2EBA42}" "AspNetVersion" = "8:4.0.30319.0" "RestartWWWService" = "11:FALSE" "RemovePreviousVersions" = "11:FALSE" "DetectNewerInstalledVersion" = "11:TRUE" "InstallAllUsers" = "11:FALSE" - "ProductVersion" = "8:1.8" + "ProductVersion" = "8:1.9" "Manufacturer" = "8:Twine" "ARPHELPTELEPHONE" = "8:" "ARPHELPLINK" = "8:" diff --git a/Software/Visual_Studio/Utilities/Tango.Stubs.UI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/Utilities/Tango.Stubs.UI/Properties/AssemblyInfo.cs index 3c587548f..107c7d0b4 100644 --- a/Software/Visual_Studio/Utilities/Tango.Stubs.UI/Properties/AssemblyInfo.cs +++ b/Software/Visual_Studio/Utilities/Tango.Stubs.UI/Properties/AssemblyInfo.cs @@ -9,6 +9,6 @@ using System.Runtime.InteropServices; [assembly: AssemblyProduct("Stubs execution utility")] [assembly: AssemblyCopyright("Twine LTD 2018")] [assembly: AssemblyTrademark("Twine LTD")] -[assembly: AssemblyVersion("1.8")] -[assembly: AssemblyFileVersion("1.8")] +[assembly: AssemblyVersion("1.9")] +[assembly: AssemblyFileVersion("1.9")] |
