init
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
using DTS.Common.Enums.Hardware;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Xml;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace DTS.Common.Classes.DSP
|
||||
{
|
||||
public class StreamingFilterProfileCollection : Collection<StreamingFilterProfile>
|
||||
{
|
||||
private static readonly object MyLock = new object();
|
||||
private static StreamingFilterProfileCollection _instance = null;
|
||||
public static StreamingFilterProfileCollection GetCollection()
|
||||
{
|
||||
lock (MyLock)
|
||||
{
|
||||
if (null != _instance) { return _instance; }
|
||||
WriteDefaultFileIfMissing(FILTER_PROFILES_XML_FILE);
|
||||
_instance = ReadFile(FILTER_PROFILES_XML_FILE);
|
||||
}
|
||||
return _instance;
|
||||
}
|
||||
private const string FILTER_PROFILES_XML_FILE = "StreamingFilterProfiles.xml";
|
||||
|
||||
private StreamingFilterProfileCollection(StreamingFilterProfile[] filters)
|
||||
{
|
||||
foreach (var filter in filters) { Add(filter); }
|
||||
}
|
||||
public StreamingFilterProfileCollection() { }
|
||||
|
||||
public enum DefaultProfiles
|
||||
{
|
||||
[Display(Name ="Default (Mixed)", Description = "6 pole butterworth legacy or default", Order = DEFAULT_VALUE)]
|
||||
[Scaler(double.NaN)]
|
||||
Default = DEFAULT_VALUE,
|
||||
|
||||
[Display(Name ="Sample rate / 4", Description = "based on sample rate")]
|
||||
[Scaler(4)]
|
||||
Profile7 = 7,
|
||||
|
||||
[Display(Name = "Sample rate / 6.4", Description = "based on sample rate")]
|
||||
[Scaler(6.4)]
|
||||
Profile8 = 8,
|
||||
|
||||
[Display(Name = "Sample rate / 8", Description = "based on sample rate")]
|
||||
[Scaler(8)]
|
||||
Profile9 = 9,
|
||||
|
||||
[Display(Name = "Sample rate / 10", Description = "based on sample rate")]
|
||||
[Scaler(10)]
|
||||
Profile10 = 10
|
||||
}
|
||||
|
||||
private static StreamingFilterProfileCollection CreateDefaultCollection()
|
||||
{
|
||||
var list = new List<StreamingFilterProfile>
|
||||
{
|
||||
new StreamingFilterProfile(DefaultProfiles.Default, new[] { new DASRestriction(string.Empty, -1) }),
|
||||
new StreamingFilterProfile(DefaultProfiles.Profile7, new[] { new DASRestriction(HardwareTypes.SLICE6_AIR_BR.ToString(), 50), new DASRestriction("SLICE6_AIR", 51) }),
|
||||
new StreamingFilterProfile(DefaultProfiles.Profile8, new[] { new DASRestriction(HardwareTypes.SLICE6_AIR_BR.ToString(), 50), new DASRestriction("SLICE6_AIR", 51) }),
|
||||
new StreamingFilterProfile(DefaultProfiles.Profile9, new[] { new DASRestriction(HardwareTypes.SLICE6_AIR_BR.ToString(), 50), new DASRestriction("SLICE6_AIR", 51) }),
|
||||
new StreamingFilterProfile(DefaultProfiles.Profile10, new[] { new DASRestriction(HardwareTypes.SLICE6_AIR_BR.ToString(), 50), new DASRestriction("SLICE6_AIR", 51) })
|
||||
};
|
||||
var collection = new StreamingFilterProfileCollection(list.ToArray());
|
||||
return collection;
|
||||
}
|
||||
|
||||
private static void WriteDefaultFileIfMissing(string filePath)
|
||||
{
|
||||
if (File.Exists(filePath)) { return; }
|
||||
var collection = CreateDefaultCollection();
|
||||
|
||||
var serializer = new XmlSerializer(typeof(StreamingFilterProfileCollection));
|
||||
var settings = new XmlWriterSettings() { Indent = true };
|
||||
|
||||
using (var writer = XmlWriter.Create(filePath, settings))
|
||||
{
|
||||
serializer.Serialize(writer, collection);
|
||||
}
|
||||
}
|
||||
|
||||
private static StreamingFilterProfileCollection ReadFile(string filePath)
|
||||
{
|
||||
var deserializer = new XmlSerializer(typeof(StreamingFilterProfileCollection));
|
||||
using (var fs = new FileStream(filePath, FileMode.Open))
|
||||
{
|
||||
var cs = (StreamingFilterProfileCollection)deserializer.Deserialize(fs);
|
||||
return cs;
|
||||
}
|
||||
}
|
||||
public const int DEFAULT_VALUE = 13;
|
||||
public StreamingFilterProfile GetStreamingFilterProfile(string s)
|
||||
{
|
||||
var match = Items.FirstOrDefault(x => x.DisplayString == s);
|
||||
if (null != match) { return match; }
|
||||
match = Items.FirstOrDefault(x => x.EnumValue == DEFAULT_VALUE);
|
||||
if (null != match) { return match; }
|
||||
return Items[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
using DTS.Common.Base;
|
||||
|
||||
namespace DTS.Common.Interface
|
||||
{
|
||||
public interface ITestSettingsView : IBaseView { }
|
||||
}
|
||||
@@ -0,0 +1,187 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
x:Class="DTS.Common.Resources.MainTabControlResource"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
|
||||
<Style x:Key="MainTabControlStyle" TargetType="{x:Type TabItem}">
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="{x:Type TabItem}">
|
||||
<ControlTemplate.Resources>
|
||||
<Storyboard x:Key="HoverOn">
|
||||
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="HoverBorder" Storyboard.TargetProperty="(UIElement.Opacity)">
|
||||
<SplineDoubleKeyFrame KeyTime="00:00:00.1000000" Value="1"/>
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
<Storyboard x:Key="HoverOff">
|
||||
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="HoverBorder" Storyboard.TargetProperty="(UIElement.Opacity)">
|
||||
<SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="0"/>
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
<Storyboard x:Key="SelectedOn">
|
||||
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="SelectedBorder" Storyboard.TargetProperty="(UIElement.Opacity)">
|
||||
<SplineDoubleKeyFrame KeyTime="00:00:00.1000000" Value="1"/>
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
<Storyboard x:Key="SelectedOff">
|
||||
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="SelectedBorder" Storyboard.TargetProperty="(UIElement.Opacity)">
|
||||
<SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="0"/>
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</ControlTemplate.Resources>
|
||||
<Grid x:Name="grid" Margin="2,1,2,3">
|
||||
<Grid.LayoutTransform>
|
||||
<TransformGroup>
|
||||
<ScaleTransform ScaleX="1" ScaleY="1"/>
|
||||
<SkewTransform AngleX="0" AngleY="0"/>
|
||||
<RotateTransform Angle="0"/>
|
||||
<TranslateTransform X="0" Y="0"/>
|
||||
</TransformGroup>
|
||||
</Grid.LayoutTransform>
|
||||
<Border x:Name="border" BorderBrush="{x:Null}" CornerRadius="5" Opacity="0.5">
|
||||
<Border.Background>
|
||||
<LinearGradientBrush EndPoint="0.5,0.976" StartPoint="0.5,0.039">
|
||||
<GradientStop Color="#7F595959" Offset="0" />
|
||||
<GradientStop Color="#19FFFFFF" Offset="1" />
|
||||
</LinearGradientBrush>
|
||||
</Border.Background>
|
||||
<ContentPresenter ContentSource="Header" Content="{Binding RelativeSource={RelativeSource AncestorType=TabItem}, Path=Content.HeaderInfo}"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Center" Margin="12,5" RecognizesAccessKey="True" />
|
||||
</Border>
|
||||
<Border x:Name="SelectedBorder" BorderBrush="{x:Null}" CornerRadius="5" Opacity="0" Background="{DynamicResource SelectedBackgroundBrush}"/>
|
||||
<Border x:Name="HoverBorder" BorderBrush="{x:Null}" CornerRadius="5" Opacity="0">
|
||||
<Border.Background>
|
||||
<LinearGradientBrush EndPoint="0.5,0.976" StartPoint="0.5,0.039">
|
||||
<GradientStop Color="#7F595959" Offset="0" />
|
||||
<GradientStop Color="#19FFFFFF" Offset="1" />
|
||||
</LinearGradientBrush>
|
||||
</Border.Background>
|
||||
</Border>
|
||||
<Grid>
|
||||
<ContentPresenter x:Name="ContentSite" ContentSource="Header" Content="{Binding RelativeSource={RelativeSource AncestorType=TabItem}, Path=Content.HeaderInfo}"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Center" Margin="6,1,6,1" RecognizesAccessKey="True" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="TabStripPlacement" Value="Left">
|
||||
<Setter Property="LayoutTransform" TargetName="grid">
|
||||
<Setter.Value>
|
||||
<TransformGroup>
|
||||
<ScaleTransform ScaleX="1" ScaleY="1" />
|
||||
<SkewTransform AngleX="0" AngleY="0" />
|
||||
<RotateTransform Angle="-90" />
|
||||
<TranslateTransform X="0" Y="0" />
|
||||
</TransformGroup>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Trigger>
|
||||
<Trigger Property="TabStripPlacement" Value="Right">
|
||||
<Setter Property="LayoutTransform" TargetName="grid">
|
||||
<Setter.Value>
|
||||
<TransformGroup>
|
||||
<ScaleTransform ScaleX="1" ScaleY="1" />
|
||||
<SkewTransform AngleX="0" AngleY="0" />
|
||||
<RotateTransform Angle="90" />
|
||||
<TranslateTransform X="0" Y="0" />
|
||||
</TransformGroup>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Trigger>
|
||||
<Trigger Property="TabStripPlacement" Value="Bottom">
|
||||
<Setter Property="LayoutTransform" TargetName="ContentSite">
|
||||
<Setter.Value>
|
||||
<TransformGroup>
|
||||
<ScaleTransform ScaleX="1" ScaleY="1" />
|
||||
<SkewTransform AngleX="0" AngleY="0" />
|
||||
<RotateTransform Angle="180" />
|
||||
<TranslateTransform X="0" Y="0" />
|
||||
</TransformGroup>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Setter Property="LayoutTransform" TargetName="grid">
|
||||
<Setter.Value>
|
||||
<TransformGroup>
|
||||
<ScaleTransform ScaleX="1" ScaleY="1"/>
|
||||
<SkewTransform AngleX="0" AngleY="0"/>
|
||||
<RotateTransform Angle="180"/>
|
||||
<TranslateTransform X="0" Y="0"/>
|
||||
</TransformGroup>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Trigger>
|
||||
<Trigger Property="TabStripPlacement" Value="Top">
|
||||
<Setter Property="LayoutTransform" TargetName="ContentSite">
|
||||
<Setter.Value>
|
||||
<TransformGroup>
|
||||
<ScaleTransform ScaleX="1" ScaleY="1" />
|
||||
<SkewTransform AngleX="0" AngleY="0" />
|
||||
<RotateTransform Angle="-180" />
|
||||
<TranslateTransform X="0" Y="0" />
|
||||
</TransformGroup>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Setter Property="LayoutTransform" TargetName="grid">
|
||||
<Setter.Value>
|
||||
<TransformGroup>
|
||||
<ScaleTransform ScaleX="1" ScaleY="1"/>
|
||||
<SkewTransform AngleX="0" AngleY="0"/>
|
||||
<RotateTransform Angle="-180"/>
|
||||
<TranslateTransform X="0" Y="0"/>
|
||||
</TransformGroup>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Trigger>
|
||||
<MultiTrigger>
|
||||
<MultiTrigger.ExitActions>
|
||||
<BeginStoryboard Storyboard="{StaticResource HoverOff}" x:Name="HoverOff_BeginStoryboard"/>
|
||||
</MultiTrigger.ExitActions>
|
||||
<MultiTrigger.EnterActions>
|
||||
<BeginStoryboard Storyboard="{StaticResource HoverOn}"/>
|
||||
</MultiTrigger.EnterActions>
|
||||
<MultiTrigger.Conditions>
|
||||
<Condition Property="IsMouseOver" Value="True" />
|
||||
<Condition Property="Selector.IsSelected" Value="False" />
|
||||
</MultiTrigger.Conditions>
|
||||
</MultiTrigger>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Trigger.ExitActions>
|
||||
<BeginStoryboard Storyboard="{StaticResource SelectedOff}" x:Name="SelectedOff_BeginStoryboard"/>
|
||||
</Trigger.ExitActions>
|
||||
<Trigger.EnterActions>
|
||||
<BeginStoryboard Storyboard="{StaticResource SelectedOn}" x:Name="SelectedOn_BeginStoryboard"/>
|
||||
</Trigger.EnterActions>
|
||||
<Setter Property="Panel.ZIndex" Value="100" />
|
||||
</Trigger>
|
||||
<MultiTrigger>
|
||||
<MultiTrigger.Conditions>
|
||||
<Condition Property="IsMouseOver" Value="True" SourceName="grid" />
|
||||
<Condition Property="Selector.IsSelected" Value="True" />
|
||||
</MultiTrigger.Conditions>
|
||||
<Setter Property="Background" TargetName="border" Value="{DynamicResource SelectedBackgroundBrush}" />
|
||||
<Setter Property="Opacity" TargetName="border" Value="0.9" />
|
||||
</MultiTrigger>
|
||||
<Trigger Property="IsEnabled" Value="False">
|
||||
<Setter Property="Foreground" Value="{DynamicResource DisabledForegroundBrush}" />
|
||||
<Setter Property="Background" TargetName="border" Value="{DynamicResource DisabledBackgroundBrush}"/>
|
||||
<Setter Property="Opacity" TargetName="grid" Value="0.3"/>
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Style.Triggers>
|
||||
<Trigger Property="Selector.IsSelected" Value="True">
|
||||
<Setter Property="Foreground" >
|
||||
<Setter.Value>
|
||||
<SolidColorBrush Color="{DynamicResource BlackColor}"/>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
<Style x:Key="{x:Type TabItem}" TargetType="TabItem" >
|
||||
<Setter Property="ToolTipService.ToolTip" Value="" />
|
||||
<Setter Property="ToolTipService.ShowOnDisabled" Value="True" />
|
||||
<EventSetter Event="ToolTipOpening" Handler="ToolTipEventHandler" />
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
@@ -0,0 +1,38 @@
|
||||
using System.Data;
|
||||
using DTS.Common.Interface.Tags;
|
||||
using DTS.Common.Interface.Sensors;
|
||||
|
||||
namespace DTS.Common.Classes.Sensors
|
||||
{
|
||||
public class SensorDbRecord : TagAwareBase, ISensorDbRecord
|
||||
{
|
||||
public override TagTypes TagType => TagTypes.SensorModels;
|
||||
protected int _id = 0;
|
||||
public int id
|
||||
{
|
||||
get => _id;
|
||||
set => SetProperty(ref _id, value, "id");
|
||||
}
|
||||
|
||||
protected short _sensorType = 0;
|
||||
public short SensorType
|
||||
{
|
||||
get => _sensorType;
|
||||
set => SetProperty(ref _sensorType, value, "SensorType");
|
||||
}
|
||||
|
||||
protected string _serialNumber = string.Empty;
|
||||
public string SerialNumber
|
||||
{
|
||||
get => _serialNumber;
|
||||
set => SetProperty(ref _serialNumber, value, "SerialNumber");
|
||||
}
|
||||
|
||||
public SensorDbRecord(IDataReader reader)
|
||||
{
|
||||
id = Utility.GetInt(reader, "id", 0);
|
||||
SensorType = Utility.GetShort(reader, "SensorType", 0);
|
||||
SerialNumber = Utility.GetString(reader, "SerialNumber");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user