aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.Common/Controls
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2019-06-05 16:57:10 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2019-06-05 16:57:10 +0300
commitaa47e2874ee506b6f0d9b9f70f780fb4fe5d8c73 (patch)
treec5ee17f5e74343d87f95f68635851845342bc22f /Software/Visual_Studio/PPC/Tango.PPC.Common/Controls
parent44c2abcbc60357ed282cae20c8476de2b50cbe25 (diff)
downloadTango-aa47e2874ee506b6f0d9b9f70f780fb4fe5d8c73.tar.gz
Tango-aa47e2874ee506b6f0d9b9f70f780fb4fe5d8c73.zip
Implemented Coats Catalog !
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.Common/Controls')
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/CoatsCatalogControl.xaml145
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/CoatsCatalogControl.xaml.cs112
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/TwineCatalogControl.xaml.cs44
3 files changed, 258 insertions, 43 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/CoatsCatalogControl.xaml b/Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/CoatsCatalogControl.xaml
new file mode 100644
index 000000000..b9218a483
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/CoatsCatalogControl.xaml
@@ -0,0 +1,145 @@
+<UserControl x:Class="Tango.PPC.Common.Controls.CoatsCatalogControl"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:local="clr-namespace:Tango.PPC.Common.Controls"
+ xmlns:controls="clr-namespace:Tango.SharedUI.Controls;assembly=Tango.SharedUI"
+ xmlns:touch="clr-namespace:Tango.Touch.Controls;assembly=Tango.Touch"
+ xmlns:catalog="clr-namespace:Tango.BL.Catalogs;assembly=Tango.BL"
+ mc:Ignorable="d"
+ d:DesignHeight="300" d:DesignWidth="300" d:DataContext="{d:DesignInstance Type=catalog:Catalog, IsDesignTimeCreatable=False}">
+ <Grid>
+ <Grid>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="1*"/>
+ <ColumnDefinition Width="Auto"/>
+ </Grid.ColumnDefinitions>
+
+ <touch:LightTouchScrollViewer x:Name="scrollViewer" ScrollBarVisibility="Collapsed">
+ <!--<Border Background="White">-->
+ <local:TwineCatalogRenderer x:Name="renderer" Groups="{Binding Groups}" SelectedItem="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=SelectedItem,Mode=TwoWay}"></local:TwineCatalogRenderer>
+ <!--</Border>-->
+ </touch:LightTouchScrollViewer>
+
+ <!--<touch:TouchListBox ItemsSource="{Binding Groups}" x:Name="list" x:FieldModifier="public" DisableRipple="True" ScrollBarVisibility="Collapsed" SelectionMode="None">
+ <touch:TouchListBox.ItemTemplate>
+ <DataTemplate>
+ <StackPanel Margin="0 0 10 0">
+ <TextBlock HorizontalAlignment="Center" Text="{Binding Name,IsAsync=True}" FontSize="{StaticResource TangoTitleFontSize}"></TextBlock>
+ <touch:TouchStaticListBox ItemsSource="{Binding Items,IsAsync=True}" SelectedItem="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=SelectedItem,Mode=TwoWay}" Margin="0 20 0 40">
+ <touch:TouchStaticListBox.ItemsPanel>
+ <ItemsPanelTemplate>
+ <WrapPanel Orientation="Horizontal" />
+ </ItemsPanelTemplate>
+ </touch:TouchStaticListBox.ItemsPanel>
+ <touch:TouchStaticListBox.ItemContainerStyle>
+ <Style TargetType="{x:Type touch:TouchStaticListBoxItem}">
+ <Setter Property="RenderTransformOrigin" Value="0.5,0.5"></Setter>
+ <Setter Property="RenderTransform">
+ <Setter.Value>
+ <ScaleTransform ScaleX="1" ScaleY="1" />
+ </Setter.Value>
+ </Setter>
+ -->
+ <!--<Setter Property="Effect">
+ <Setter.Value>
+ <DropShadowEffect Color="{StaticResource TangoDarkForegroundColor}" ShadowDepth="0" BlurRadius="20" Opacity="0" />
+ </Setter.Value>
+ </Setter>-->
+ <!--
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},Path=IsSelected}" Value="True">
+ <DataTrigger.EnterActions>
+ <BeginStoryboard>
+ <Storyboard>
+ <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" To="1.5" Duration="00:00:00" />
+ <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleY" To="1.5" Duration="00:00:00" />
+ -->
+ <!--<DoubleAnimation Storyboard.TargetProperty="Effect.Opacity" To="1" Duration="00:00:0.2" />-->
+ <!--
+ </Storyboard>
+ </BeginStoryboard>
+ </DataTrigger.EnterActions>
+ <DataTrigger.ExitActions>
+ <BeginStoryboard>
+ <Storyboard>
+ <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" To="1" Duration="00:00:00" />
+ <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleY" To="1" Duration="00:00:00" />
+ -->
+ <!--<DoubleAnimation Storyboard.TargetProperty="Effect.Opacity" To="0" Duration="00:00:0.2" />-->
+ <!--
+ </Storyboard>
+ </BeginStoryboard>
+ </DataTrigger.ExitActions>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </touch:TouchStaticListBox.ItemContainerStyle>
+ <touch:TouchStaticListBox.ItemTemplate>
+ <DataTemplate>
+ <StackPanel Margin="10" Width="70">
+ <Ellipse Width="60" Height="60" Fill="{Binding Brush}" />
+ -->
+ <!--<controls:FastTextBlock Margin="0 5 0 0" HorizontalAlignment="Center" Text="{Binding Name,IsAsync=True}"></controls:FastTextBlock>-->
+ <!--
+ </StackPanel>
+ </DataTemplate>
+ </touch:TouchStaticListBox.ItemTemplate>
+ </touch:TouchStaticListBox>
+ </StackPanel>
+ </DataTemplate>
+ </touch:TouchListBox.ItemTemplate>
+ </touch:TouchListBox>-->
+
+ <Grid Grid.Column="1">
+ <!--<Rectangle Stroke="{StaticResource TangoDividerBrush}" HorizontalAlignment="Left" />-->
+ <Grid>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition/>
+ <ColumnDefinition/>
+ </Grid.ColumnDefinitions>
+
+ <Border Width="25" CornerRadius="10">
+ <Border.Clip>
+ <RectangleGeometry RadiusX="10" RadiusY="10">
+ <RectangleGeometry.Rect>
+ <MultiBinding Converter="{StaticResource WidthHeightToRectConverter}">
+ <Binding RelativeSource="{RelativeSource AncestorType=Border}" Path="ActualWidth" />
+ <Binding RelativeSource="{RelativeSource AncestorType=Border}" Path="ActualHeight" />
+ </MultiBinding>
+ </RectangleGeometry.Rect>
+ </RectangleGeometry>
+ </Border.Clip>
+ <ItemsControl ItemsSource="{Binding Groups}">
+ <ItemsControl.ItemsPanel>
+ <ItemsPanelTemplate>
+ <UniformGrid Columns="1" />
+ </ItemsPanelTemplate>
+ </ItemsControl.ItemsPanel>
+ <ItemsControl.ItemTemplate>
+ <DataTemplate>
+ <Rectangle>
+ <Rectangle.Fill>
+ <SolidColorBrush Color="{Binding Color}" />
+ </Rectangle.Fill>
+ </Rectangle>
+ </DataTemplate>
+ </ItemsControl.ItemTemplate>
+ </ItemsControl>
+ </Border>
+
+ <Grid Grid.Column="1">
+ <touch:TouchSlider x:Name="slider" ValueChanged="TouchSlider_ValueChanged" IsSnapToTickEnabled="True" Minimum="0" Maximum="{Binding Groups.Count,Converter={StaticResource MathOperatorConverter},ConverterParameter='-1'}" Orientation="Vertical" Width="40" Height="Auto" IsSelectionRangeEnabled="False">
+ <touch:TouchSlider.ThumbTemplate>
+ <ControlTemplate>
+ <touch:TouchIcon Foreground="{Binding RelativeSource={RelativeSource AncestorType=touch:TouchSlider},Path=Foreground}" Width="40" Height="40" Icon="Water" Angle="-90" />
+ </ControlTemplate>
+ </touch:TouchSlider.ThumbTemplate>
+ </touch:TouchSlider>
+ </Grid>
+ </Grid>
+ </Grid>
+ </Grid>
+ </Grid>
+</UserControl>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/CoatsCatalogControl.xaml.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/CoatsCatalogControl.xaml.cs
new file mode 100644
index 000000000..f4b764ad0
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/CoatsCatalogControl.xaml.cs
@@ -0,0 +1,112 @@
+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.BL.Catalogs;
+
+namespace Tango.PPC.Common.Controls
+{
+ /// <summary>
+ /// Interaction logic for CoatsCatalogControl.xaml
+ /// </summary>
+ public partial class CoatsCatalogControl : UserControl
+ {
+ private Catalog _catalog;
+ private bool _preventChange;
+ private double _lastScrollPosition = 0;
+
+ /// <summary>
+ /// Gets or sets the selected catalog item.
+ /// </summary>
+ public CatalogItem SelectedItem
+ {
+ get { return (CatalogItem)GetValue(SelectedItemProperty); }
+ set { SetValue(SelectedItemProperty, value); }
+ }
+ public static readonly DependencyProperty SelectedItemProperty =
+ DependencyProperty.Register("SelectedItem", typeof(CatalogItem), typeof(CoatsCatalogControl), new PropertyMetadata(null));
+
+ public CoatsCatalogControl()
+ {
+ InitializeComponent();
+
+ //list.ApplyTemplate();
+ //list.Loaded += TwineCatalogControl_Loaded;
+ DataContextChanged += (x, y) =>
+ {
+ _catalog = DataContext as Catalog;
+
+ if (scrollViewer != null && _catalog != null)
+ {
+ scrollViewer.ScrollToTop();
+ _preventChange = true;
+ slider.Value = _catalog.Groups.Count;
+ _preventChange = false;
+ }
+ };
+
+ scrollViewer.Scrolling += ScrollViewer_Scrolling;
+ }
+
+ /// <summary>
+ /// Handles the Scrolling event of the ScrollViewer control.
+ /// </summary>
+ /// <param name="sender">The source of the event.</param>
+ /// <param name="e">The <see cref="Touch.Controls.DoubleValueChangedEventArgs"/> instance containing the event data.</param>
+ private void ScrollViewer_Scrolling(object sender, Touch.Controls.DoubleValueChangedEventArgs e)
+ {
+ if (!_preventChange)
+ {
+ if (e.Value > _lastScrollPosition + 60 || e.Value < _lastScrollPosition - 60)
+ {
+ var group = renderer.GetVisibleGroup();
+
+ if (group != null)
+ {
+ _preventChange = true;
+ slider.Value = slider.Maximum - _catalog.Groups.IndexOf(group);
+ _preventChange = false;
+ }
+
+ _lastScrollPosition = e.Value;
+ }
+ }
+ }
+
+ /// <summary>
+ /// Handles the ValueChanged event of the TouchSlider control.
+ /// </summary>
+ /// <param name="sender">The source of the event.</param>
+ /// <param name="e">The <see cref="RoutedPropertyChangedEventArgs{System.Double}"/> instance containing the event data.</param>
+ private void TouchSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
+ {
+ if (_catalog == null || _catalog.Groups.Count == 0) return;
+
+ if (!_preventChange)
+ {
+ if (_catalog != null)
+ {
+ _preventChange = true;
+ var group = _catalog.Groups.ElementAt(_catalog.Groups.Count - 1 - (int)e.NewValue);
+ scrollViewer.ScrollToPosition(renderer.GetGroupPosition(group));
+ _preventChange = false;
+ }
+ }
+
+ if (_catalog != null && _catalog.Groups.Count > _catalog.Groups.Count - 1 - (int)e.NewValue && _catalog.Groups.Count - 1 - (int)e.NewValue > -1)
+ {
+ slider.Foreground = new SolidColorBrush(_catalog.Groups.ElementAt(_catalog.Groups.Count - 1 - (int)e.NewValue).Color);
+ }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/TwineCatalogControl.xaml.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/TwineCatalogControl.xaml.cs
index af5888f3f..5985fbd49 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/TwineCatalogControl.xaml.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/TwineCatalogControl.xaml.cs
@@ -25,7 +25,6 @@ namespace Tango.PPC.Common.Controls
public partial class TwineCatalogControl : UserControl
{
private Catalog _catalog;
- private bool _loaded;
private bool _preventChange;
private double _lastScrollPosition = 0;
@@ -38,7 +37,7 @@ namespace Tango.PPC.Common.Controls
set { SetValue(SelectedItemProperty, value); }
}
public static readonly DependencyProperty SelectedItemProperty =
- DependencyProperty.Register("SelectedItem", typeof(CatalogItem), typeof(TwineCatalogControl), new PropertyMetadata(null,(d,e) => (d as TwineCatalogControl).OnSelectedItemChanged()));
+ DependencyProperty.Register("SelectedItem", typeof(CatalogItem), typeof(TwineCatalogControl), new PropertyMetadata(null));
/// <summary>
/// Initializes a new instance of the <see cref="TwineCatalogControl"/> class.
@@ -91,24 +90,6 @@ namespace Tango.PPC.Common.Controls
}
/// <summary>
- /// Handles the Loaded event of the TwineCatalogControl control.
- /// </summary>
- /// <param name="sender">The source of the event.</param>
- /// <param name="e">The <see cref="RoutedEventArgs"/> instance containing the event data.</param>
- private void TwineCatalogControl_Loaded(object sender, RoutedEventArgs e)
- {
- if (!_loaded)
- {
- //list.ScrollViewer.Scrolling += ScrollViewer_Scrolling;
-
- _preventChange = true;
- slider.Value = slider.Maximum;
- _preventChange = false;
- _loaded = true;
- }
- }
-
- /// <summary>
/// Handles the ValueChanged event of the TouchSlider control.
/// </summary>
/// <param name="sender">The source of the event.</param>
@@ -133,28 +114,5 @@ namespace Tango.PPC.Common.Controls
slider.Foreground = new SolidColorBrush(_catalog.Groups.ElementAt(_catalog.Groups.Count - 1 - (int)e.NewValue).Color);
}
}
-
- /// <summary>
- /// Called when the selected item has been changed
- /// </summary>
- private void OnSelectedItemChanged()
- {
- //if (!_preventChange)
- //{
- // _preventChange = true;
- // var item = SelectedItem;
- // SelectedItem = null;
- // SelectedItem = item;
- // _preventChange = false;
- //}
- }
-
- /// <summary>
- /// Gets the touch ListBox.
- /// </summary>
- public TouchListBox TouchListBox
- {
- get { return null; }
- }
}
}